原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://navyaijm.blog.51cto.com/4647068/1230674
一、说明
1、本文将介绍如何使用mysql-mmm搭建数据库的高可用架构,MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案(上面这段话从网上载录)。至于mmm的具体介绍我这里就不多讲了,详情请看官网:http://mysql-mmm.org。
2、该方案的优缺点:
优点:稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。
缺点:monitor节点是单点,不过这个你也可以结合keepalived或者haertbeat做成高可用
二、环境
1、服务器列表
服务器 | 主机名 | IP | serverID | mysql版本 | 系统 |
master1 |
db1 |
172.28.26.101 |
101 |
mysql5.5.15 | Centos 6.4 |
master2 |
db2 |
172.28.26.102 |
102 |
mysql5.5.15 |
Centos 6.4 |
slave1 |
db3 |
172.28.26.188 |
188 |
mysql5.5.15 |
Centos 6.4 |
slave2 |
db4 |
172.28.26.189 |
189 |
mysql5.5.15 |
Centos 6.4 |
monitor |
monitor |
172.28.26.103 |
无 | |
Centos 6.4 |
2、虚拟IP列表
VIP | Role | description |
172.28.26.104 | write | 应用配置的写入VIP |
172.28.26.105 | read |
应用配置的读入VIP |
172.28.26.106 | read |
应用配置的读入VIP |
三、mysql的安装
1、只在master1上安装即可,其他机器scp过去就好,最好用rsync
1 2 3 4 5 6 |
|
vi /data/mysql/navy1/my.cnf (cp一份线上的配置文件修改一下)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
|
初始化数据库:
1 |
|
启动数据库:
1 |
|
2、其他三天机器的mysql的安装仅需四步:
A、把已经安装好的master上的mysql停掉,rsync到master2、和两台slave的对应目录下(/data/mysql/navy1)
B、建用户、改权限
1 |
|
C、修改/data/mysql/navy1/my.cnf中的serverID
D、启动数据库:
1 |
|
四、主从配置(master1和master2配置成主主,slave1和slave2配置成master1的从):
1、在master1上授权:
1 2 3 |
|
2、在master2上授权:
1 2 3 |
|
3、把master2、slave1和slave2配置成master1的从库:
A、在master1上执行show master status \G 获取binlog文件和Position点
1 2 3 4 5 6 7 8 9 10 11 |
|
B、在master2、slave1和slave2执行
1 2 |
|
4、把master1配置成master2的从库:
A、在master2上执行show master status \G 获取binlog文件和Position点
1 2 3 4 5 6 7 |
|
B、在master1上执行:
1 2 |
|
5、在各个机器上执行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
如果Slave_IO_Running和Slave_SQL_Running都为yes,那么主从就已经配置OK了
五、mysql-mmm安装
1、db节点:
1 |
|
2、monitor节点:
1 |
|
六、mysql-mmm的配置:
1、在4个db节点授权:
1 2 |
|
2、修改配置文件
vi /etc/mysql-mmm/mmm_common.conf (db、monitor一样样的)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
PS:
peer的意思是等同,表示db1与db2是同等的。
ips指定VIP
mode exclusive 只有两种模式:exclusive是排他,在这种模式下任何时候只能一个host拥有该角色
balanced模式下可以多个host同时拥有此角色。一般writer是exclusive,reader是balanced
vi /etc/mysql-mmm/mmm_agent.conf (master1、master2、slave1和slave2分别修改为:this db1、db2、db3、db4)
vi /etc/mysql-mmm/mmm_mon.conf(仅monitor节点有)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
七、mmm启动
1、db节点:
1 2 |
|
2、 monitor节点:
八、测试
1、集群正常启动:
1 2 3 4 5 |
|
2、停掉db1,看172.28.26.104是否漂移到db2上,db3、db4的主是否切换到db2
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
本文出自 “屌丝运维男” 博客,请务必保留此出处http://navyaijm.blog.51cto.com/4647068/1230674