mysql MMM 架构

Posted on Posted in mysql

环境

centos 6.5

master1与master2互为主从
slava1和slave2,master1为主
monitor为mmm管理端

物理地址

  1. Monitor     192.168.88.11  
  2. Master1     192.168.88.20  
  3. Master2     192.168.88.21  
  4. Slave1      192.168.88.22  
  5. Slave2      192.168.88.23  

虚拟 IP

  1. 192.168.88.30   #应用程序配置中的写入 VIP,仅支持单点写入  
  2. 192.168.88.31   #应用撑血配置中的读查询 VIP,每个数据节点一个读 VIP,可以通过 lvs 等对 vip 做负载均衡  
  3. 192.168.88.32  
  4. 192.168.88.33  
  5. 192.168.88.34  

1、安装一个 epel 源

  1. http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  

2、在 mnoitor 节点执行

  1. yum -y install mysql-mmm*  

3、在每个 mysql 节点安装 mysql-mmm-ageent

  1. yum -y install mysql-mmm-agent  

检查

  1. [root@c5 mysql-mmm]# rpm -qa | grep mysql-mmm  
  2. mysql-mmm-2.2.1-2.el6.noarch  
  3. mysql-mmm-agent-2.2.1-2.el6.noarch  
  4. mysql-mmm-tools-2.2.1-2.el6.noarch  
  5. mysql-mmm-monitor-2.2.1-2.el6.noarch  

4、在所有 mysql 节点上,设置 read_only 参数

  1. read_only = 1  

5、在所有节点创建 mysql 除复制账号外的两个账号,即monitor user 和 monitor agent

  1. grant replication client on *.* to 'mmm_monitor'@'192.168.88.%' identified by 'monitor_password';  
  2. grant super,replication clent, process on *.* to 'mmm_agent'@'192.168.88.%' identified by 'agent_password';  

6、mmm_common.conf

  1. #yum 安装后,默认配置为 /etc/mysql-mmm  
  2. #主要涉及4个配置文件  
  3.   
  4. mmm_mon.conf  #仅在 MMM 管理端进行配置,主要用于设置一些监控参数  
  5. mmm_common.conf #在所有的 MMM 集群节点进行配置,并且内容完全一样,主要用于设置读写节点的 IP 及配置虚拟 IP  
  6. mysql-mmm-agent  
  7. mmm_agent.conf  #在所有的 mysql 节点进行配置,设置每个节点的标识  
  8.   
  9. vim mmm_common.conf  
  10.   
  11. active_master_role      writer  #当设置这个参数时,集群中所有的 mysql 节点都应该设置 "read_only = 1"参数,这样,MMM 会根据每个节点的角色进行动态判断,当 MMM 设置写角色的时候,会自动在可写的节点执行"set global read_only = 0"操作,也就是打开写权限,而其他制度角色则保持"read_only = 1"的只读权限  
  12.   
  13. <host default>   
  14.     cluster_interface       eth0    #配置的网络接口,注意这里不能指定为子接口,例如eth0:0  
  15.     pid_path                /var/run/mysql-mmm/mmm_agentd.pid_path  #设置 pid 文件位置  
  16.     bin_path                /usr/libexec/mysql-mmm/ #设置 MMM 可执行文件路径  
  17.     replication_user        repl_user   #设置复制的用户名  
  18.     replication_password    repl_password   #设置复制的密码  
  19.     agent_user              mmm_agent   #设置更改只读操作的用户,这个用户前面已经建立  
  20.     agent_password          agent_password  #设置更改只读操作用户的密码  
  21. </host>  
  22.   
  23. <host db1>  #设置 db1 的配置信息,db1会在 mmm_agent.conf 文件中指定  
  24.     ip      192.168.88.20   #设置db1的物理地址  
  25.     mode    master  #设置 db1 的角色为 master  
  26.     peer    db2     #设置与 db1对等的主机名,也就是 db1和 db2均为 master 角色  
  27. </host>  
  28.   
  29. <host db2>  #与db 配置类似  
  30.     ip      192.168.88.21  
  31.     mode    master  
  32.     peer    db1  
  33. </host>  
  34.   
  35. <host db3>  #设置 db3 的配置信息,db3 会在 mmm_agent.conf 文件中定义  
  36.     ip      192.168.88.22   #db3的物理地址  
  37.     mode    slave   #设置 db3 的角色为 slave  
  38. </host>  
  39.   
  40. <host db4>  #设置 db4 的配置信息,db4 会在 mmm_agent.conf 文件中定义  
  41.     ip      192.168.88.23   #db4的物理地址  
  42.     mode    slave   #设置 db4 的角色为 slave  
  43. </host>  
  44.   
  45. <role writer>   #设置可写角色模式  
  46.     hosts   db1, db2    #设置可执行写操作的主机,这里指定 db1,db2 均可  
  47.     ips     192.168.88.30   #设置可写的虚拟 ip 地址  
  48.     mode    exclusive   #设置角色的模式为互斥,互斥角色只有一个 IP,并且同一时间只能分配一个主机,一般 writer角色是 exclusive 模式  
  49. </role>  
  50.   
  51. <role reader>   #设置可读角色模式  
  52.     hosts   db1, db2, db3, 
    ;db4  #设置可执行读操作的主机  
  53.     ips     192.168.88.31, 192.168.88.32, 192.168.88.33, 192.168.88.34  #设置可读的虚拟 IP 地址,可以有多个  
  54.     mode    balanced    #设置角色的模式为负载均衡,在负载均衡角色中,可以有多个 IP,这些 IP 被均衡动态的分配给多台 mysql 主机,一般 reader 角色是 balanced  
  55. </role>  

7、配置 mmm_agent.conf

  1. vim mmm_agent.conf  
  2. include mmm_common.conf  
  3. this db1    #db2,db3,db4,每个 mysql 节点依次类推  

8、mmm_mon.conf

仅在 MMM管理节点上设置

  1. include mmm_common.conf  
  2.   
  3. <monitor>  
  4.     ip                  127.0.0.1   #为了安全性,设置只在本机监听,mmm_mond 默认监听9988  
  5.     pid_path            /var/run/mysql-mmm/mmm_mond.pid     #设置 mmm_mond 进程 pid 文件位置  
  6.     bin_path            /usr/libexec/mysql-mmm  #MMM 可执行文件路径  
  7.     status_path         /var/lib/mysql-mmm/mmm_mond.status  #MMM 集群的状态文件  
  8.     ping_ips            192.168.88.1, 192.168.88.20, 192.168.88.21, 192.168.88.22, 192.168.88.23    #用于测试网络可用性 IP 地址列表,只要其中有一个地址 ping 通,就代表网络正常,这里不要写入本机地址  
  9. #    flap_duration      3600    #抖动的时间范围,单位秒,这两个参数考虑情况添加  
  10. #    flap_count         3       #在抖动的时间范围内,最大的抖动次数  
  11.     auto_set_online     0   #是否设置自动上线,如果该值大于0,抖动的主机在抖动的时间范围过后,则设置自动上线  
  12.   
  13.     # The kill_host_bin does not exist by default, though the monitor will  
  14.     # throw a warning about it missing.  See the section 5.10 "Kill Host   
  15.     # Functionality" in the PDF documentation.  
  16.     #  
  17.     # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host  
  18.     #  
  19. </monitor>  
  20.   
  21. <host default>  
  22.     monitor_user        mmm_monitor     #moniter user账号,事先已设置过  
  23.     monitor_password     monitor_password   #moniter user 账号对应的密码  
  24. </host>  
  25.   
  26. debug 0     #MMM 管理段的运行模式,1为 debug 模式,0为正常模式  

9、mysql-mmm-agent 文件

此文件在所有的 mysql 节点进行设置,此文件只有一行

  1. vim /etc/default/mysql-mmm-agent  
  2. ENABLED=1  

10、注意

集群中所有配置文件的权限最好都设置为640,否则启动 MMM 服务的时候可能出错

11、管理

  1. /etc/init.d/mysql-mmm-monitor   # 集群控制端的服务启动与关闭  
  2. /etc/init.d/mysql-mmm-agent     # 所有 mysql节点服务的启动和关闭  

首先在服务器端启动

  1. /etc/init.d/mysql-mmm-monitor start  

然后依次启动 agent 服务

  1. /etc/init.d/mysql-mmm-agent start  

12、基本维护管理

  1. [root@c5 mysql-mmm]# mmm_control help  
  2. Valid commands are:  
  3.     help                              - show this message   #显示基本帮助信息  
  4.     ping                              - ping monitor    #测试网络运行状态  
  5.     show                              - show status #显示MMM集群中所有节点的状态  
  6.     checks [<host>|all [<check>|all]] - show checks status  #显示MMM集群中指定节点的详细状态或显示所有节点的详细运行状态  
  7.     set_online <host>                 - set host <host> online  #将一个MMM集群节点设置为online状态  
  8.     set_offline <host>                - set host <host> offline #将一个MMM集群节点设置为offline状态  
  9.     mode                              - print current mode. #显示MMM集群当中的运行模式,有active,manual和passive三种模式,默认是active  
  10.     set_active                        - switch into active mode.    #切换MMM集群到active模式  
  11.     set_manual                        - switch into manual mode.    #切换到manual模式  
  12.     set_passive                       - switch into passive mode.   #切换到passive模式  
  13.     move_role [--force] <role> <host> - move exclusive role <role> to host <host>   #在互斥模式下切换角色,例如将写操作从db1到db2  
  14.                                         (Only use --force if you know what you are doing!)  
  15.     set_ip <ip> <host>                - set role with ip <ip> to host <host>    #用来在被动模式下操纵角色  
  16.   
  17. [root@c5 mysql-mmm]# mmm_control checks all  
  18. db4  ping         [last change: 2016/03/29 10:36:13]  OK  
  19. db4  mysql        [last change: 2016/03/29 10:36:13]  OK  
  20. db4  rep_threads  [last change: 2016/03/29 10:36:13]  OK  
  21. db4  rep_backlog  [last change: 2016/03/29 10:36:13]  OK: Backlog is null  
  22. db2  ping         [last change: 2016/03/29 10:36:13]  OK  
  23. db2  mysql        [last change: 2016/03/29 10:36:13]  OK  
  24. db2  rep_threads  [last change: 2016/03/29 10:36:13]  OK  
  25. db2  rep_backlog  [last change: 2016/03/29 10:36:13]  OK: Backlog is null  
  26. db3  ping         [last change: 2016/03/29 10:36:13]  OK  
  27. db3  mysql        [last change: 2016/03/29 10:36:13]  OK  
  28. db3  rep_threads  [last change: 2016/03/29 10:36:13]  OK  
  29. db3  rep_backlog  [last change: 2016/03/29 10:36:13]  OK: Backlog is null  
  30. db1  ping         [last change: 2016/03/29 10:36:13]  OK  
  31. db1  mysql        [last change: 2016/03/29 10:36:13]  OK  
  32. db1  rep_threads  [last change: 2016/03/29 10:36:13]  OK  
  33. db1  rep_backlog  [last change: 2016/03/29 10:36:13]  OK: Backlog is null  
  34.   
  35.   
  36. [root@c5 mysql-mmm]# mmm_control checks db1  
  37. db1  ping         [last change: 2016/03/29 10:36:13]  OK    #测试网络可用性  
  38. db1  mysql        [last change: 2016/03/29 10:36:13]  OK    #检测mysql服务器是否运行正常  
  39. db1  rep_threads  [last change: 2016/03/29 10:36:13]  OK    #检测mysql的复制线程是否正常运行  
  40. db1  rep_backlog  [last change: 2016/03/29 10:36:13]  OK: Backlog is null   #检测mysql的复制日志是否有挤压  

13、测试

在客户端,可以用虚拟IP登录mysql,MMM通过虚拟IP进行读写分离模式
故障测试,关闭master1

» 转载请注明来源:若我若鱼 » mysql MMM 架构

Leave a Reply

Your email address will not be published. Required fields are marked *

nine − 7 =