MySQL replication M-M
1、理论部分
1.1、Master to Master
1)左右两台主机互为Master
2)不会同时做写操作,只一台做写操作
1.2、M-M模式的工作模型的介绍
1)当左边的Master突然当机,有健康检测的前端将自动切换到右边的Master,不会造成前端的服务中断,请求可以继续,但由于出问题之前数据时可以同步的,所以数据是保持一致性的,我们可以继续将数据往下写。
2)当左边的Master都恢复正常,而新的数据都被提交到右边Master,数据都会同步到左边的Master上。
3)而当前左边的Master变成写操作的机器。
不能同时写入两台机器的原因:
当数据库设计到实务性操作的时候,增加写入点会破坏事务的唯一性和原则性的操作
2、实验部分
配置MySQL的replication的M-M模式
2.1、step1
基础环境配置
主机信息:
1)MySQL-RM
hostname=MySQL-RM
ipaddress=10.168.0.107
2)MySQL-LM
hostname=MySQL-LM
ipaddress=10.168.0.108
安装官方的yum源:
|
1
|
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
|
并安装以下rpm包:
|
1
|
yum install -y mysql mysql-server mysql-devel
|
启动服务并设置服务自动启动:
|
1
2
|
chkconfig mysqld on/etc/init.d/mysqld start
|
开启服务的防火墙:
vim编辑/etc/sysconfig/iptables
|
1
|
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT |
重启iptables服务:
|
1
|
/etc/init.d/iptables restart
|
In Right Master
vim 编辑/etc/my.cnf
|
1
2
3
|
[mysqld]server-id = 1
log-bin = on |
以下参数是可选项:
|
1
2
3
4
5
|
gtid-mode=onenforce-gtid-consistencylog-slave-updateslog-binbinlog-format=row
|
创建MySQL新用户权限
|
1
2
|
flush privileges;
|
重启MySQL服务
|
1
2
|
quit/etc/init.d/mysqld restart
|
|
1
2
|
cd /var/lib/mysql/
ls |
可以发现新增以下两个二进制日志文件:
mysqld-bin.000001
mysqld-bin.index
查看master角色的状态:
|
1
2
|
mysql -uroot -pshow master status; |
In Left Master
vim 编辑/etc/my.cnf
|
1
2
3
|
[mysqld]server-id = 2
log-bin = on |
以下参数是可选项:
|
1
2
3
4
5
|
gtid-mode=onenforce-gtid-consistencylog-slave-updateslog-binbinlog-format=row
|
重启MySQL服务
|
1
|
/etc/init.d/mysqld restart
|
|
1
2
|
cd /var/lib/mysql/
ls |
可以发现新增以下两个二进制日志文件:
mysqld-bin.000001
mysqld-bin.index
show master status;
连接到Right Master:
|
1
2
3
4
5
6
|
change master to
master_host='10.168.0.107',
master_user='repl',
master_password='repl';
start slave;show slave status\G |
2.3、step3
In Left Master
|
1
2
3
|
mysql -uroot -pflush privileges;
|
In Right Master
链接到Left Master
|
1
2
3
4
5
6
|
change master to
master_host='10.168.0.108',
master_user='repl',
master_password='repl';
start slave;show slave status\G |
2.4、step4
测试
In Right Master
|
1
2
|
create database cmdschool;
show databases; |
In Left Master
|
1
2
|
show databases;show databases; |
In Left Master
|
1
2
|
drop database cmdschool;
show databases; |
In Right Master
|
1
|
show databases; |