Mysql群集架构mmm高可用群集及服务器上线

【引自攀岩人生的博客】MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。

缺点:monitor节点是单点,不过这个你也可以结合keepalived或者haertbeat做成高可用;至少三个节点,对主机的数量有要求,需要实现读写分离,还需要在前端编写读写分离程序。在读写非常繁忙的业务系统下表现不是很稳定,可能会出现复制延时、切换失效等问题。MMM方案并不太适应于对数据安全性要求很高,并且读、写繁忙的环境中。

二、部署实施

1、环境介绍

OS:centos7.2(64位)数据库系统:mysql5.7.13 关闭selinux

主机

Ip

Hostname

Server–id

Master1

192.168.119.129

Master1

1

Master2

192.168.119.130

Master2

2

Slave

192.168.119.131

Slave

3

Montior

192.168.119.132

Montior

4

使用yum进行安装相关的依赖包 

 

安装perl相关的库 

字有点小(cpan -i Algorithm::Diff Class::Singleton DBI DBD::mysql Log::Dispatch Log::Log4perl Mail::Send Net::ping Proc::Daemon Time::HiResParams::Validate Net::ARP)

 

在/etc/hosts里添加地址和主机名 

 

测试能否ping通,进行通信 

  

 

在master1中添加mysql /etc/my.cnf主配置参数文件 

 

在master2中添加/etc/my.cnf主配置文件 

 

在slave中添加/etc/my.cnf主配置文件 

 

修改完后关闭防火墙,启动mysql服务 

 

其余两台master2、slave按照上图执行

创建主从复制环境,master1是master2、slave的主,master2是master1的主

创建授权连接用户 

 

两台master上都执行

查看master1的状态 

 

在master2上建立连接实现主从复制 

 

启动slave查看是否连接必须为yes 

 

在slave上建立连接实现主从复制 

 

把master2设为主跟上面的步骤一样,只需把ip地址改一下即可

下图是在master1上执行的 

 

上面的已经把主主复制及主从复制做ok了

设置mysql-mmm

在master1上创建代理账号、创建监控账号,因为已经主从复制了就可以在主上面创建了,会同步的 

 

查看那两台是否都存在监控和代理账号 

 

www用户:mmm监控用于对mysql服务器进程健康检查

qqq用户:mmm代理用来更改只读模式,复制的主服务器等

mysql-mmm安装

在montior主机上安装监控程序 

安装下载后的包  

 

在master1、master2、slave中安装代理

  

配置mmm,要求必须四台主机必须一样的配置文件

安装后的所有配置文件都存放在/etc/mysql-mmm/下面,管理和数据库服务器上都要包含一个共同的文件mmm_common.cof,配置文件如下:

  1. active_master_role      writer 
  2.  
  3. <host default
  4.  
  5.         cluster_interface               eno16777736 
  6.  
  7.         pid_path                                /var/run/mmm_agentd.pid 
  8.  
  9.         bin_path                                /usr/lib/mysql-mmm/ 
  10.  
  11.    replication_user                       rep 
  12.  
  13.    replication_password                   123 
  14.  
  15.         agent_user                      qqq 
  16.  
  17.         agent_password                  123 
  18.  
  19. </host> 
  20.  
  21. <host master1> 
  22.  
  23.         ip                                      192.168.119.129 
  24.  
  25.         mode                                   master 
  26.  
  27.         peer                                    master2 
  28.  
  29. </host> 
  30.  
  31. <host master2> 
  32.  
  33.         ip                                      192.168.119.130 
  34.  
  35.         mode                                   master 
  36.  
  37.         peer                                    master1 
  38.  
  39. </host> 
  40.  
  41. <host slave> 
  42.  
  43.         ip                                      192.168.119.131 
  44.  
  45.         mode                                   slave 
  46.  
  47. </host> 
  48.  
  49. <role writer> 
  50.  
  51.         hosts                                   master1,master2                                                                  
  52.  
  53.        ips                                      192.168.119.10 
  54.  
  55.         mode                                   exclusive 
  56.  
  57. </role> 
  58.  
  59. <role reader> 
  60.  
  61.         hosts                                   master1,master2, slave 
  62.  
  63.         ips                                     192.168.119.11,192.168.119.22,192.168.119.33 
  64.  
  65.         mode                                   balanced 
  66.  
  67. </role>  

使用for循环语句分发给其他三台主机

代理文件需要在master1、master2、slave中修改/mmm_agent.conf

  

this后面添加本地主机名就可以了

启动代理进程 需要进入脚本/etc/init.d/mysql-mmm-agent脚本 

 

 

 

把mmm添加为系统服务并设置为自启 

 

 

 

能显示出来ok证明前面做的没有问题,在三台代理的主机都设置

编辑monitor主机的/etc/mysql-mmm/mmm_mon.conf 

 

 

 

每个参数的意思

  1. <monitor> 
  2.  
  3. ip     127.0.0.1   设置只在本机监听,mmm_mond默认监听9988 
  4.  
  5. pid_path    /var/run/mmm_mond.pid 
  6.  
  7. bin_path    /usr/lib/mysql-mmm/ 
  8.  
  9. status_path  /var/lib/misc/mmm_mond.status 
  10.  
  11. ping_ips  192.168.119.129,192.168.119.130,192.168.119.131  用于测试网络可用性 IP 地址列表 
  12.  
  13. auto_set_online  0             设置自动online的时间,默认是60s 
  14.  
  15. </monitor> 
  16.  
  17. <check default
  18.  
  19. check_period   5           检查周期默认为5s 
  20.  
  21. trap_period   10           一个节点被检测不成功的时间持续trap_period秒 
  22.  
  23. timeout      2            检查超时的时间 
  24.  
  25. restart_after   10000     在完成restart_after次检查后,重启checker进程,默认值:10000 
  26.  
  27. max_backlog   86400     记录检查rep_backlog日志的***次数 
  28.  
  29. </check
  30.  
  31. <host default
  32.  
  33. monitor_user  www         监控db服务器的用户 
  34.  
  35. monitor_password  123      监控db服务器的密码 
  36.  
  37. </host> 
  38.  
  39. debug  0                  debug 0正常模式,1为debug模式  

启动监控进程在/etc/init.d/mysql-mmm-monitor文件中添加 

 

 

 

添加成系统服务并设置为自启动

  1. chkconfig --add mysql-mmm-monitor 
  2.  
  3. chkconfig mysql-mmm-monitor on 
  4.  
  5. /etc/init.d/mysql-mmm-monitor start  

把服务器上线 

 

 

 

检查所有的db服务器群集状态 

 

 

 

查看所有的群集状态

 

 

 

查看命令,监控命令参数有很多,可以从网上查找。 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/226438.html<

(0)
运维的头像运维
上一篇2025-04-17 09:06
下一篇 2025-04-17 09:07

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注