master—>slave1—>slave2
master需要开启二进制日志
中间的slave1也需要打开二进制日志,但是它默认不把应用master的操作记录到自己的二进制日志。所以需要打开一个参数让它记录,才可以传给第三级的从;然后在中间从和第三级从之间再做一次AB复制就可以了。
打开log-slave-updates=1,让第一台传过来relay日志记录到自己的二进制日志。
思路:
先搭建好主从——>然后加入slave2
环境准备及要求:
1、关闭防火墙和selinux
2、hosts文件中三台服务器主机名和ip地址一一对应起来
3、系统时间需要同步
4、master和slave的数据库版本保持一致(系统版本保持一致)
思路:
先搭建好主从——>然后加入slave2
1、master和中间slave1必须开启二进制日志
2、slave2必须开启中继日志
3、master和slave1和slave2的server-id必须不一样 范围(2^23-1)
4、master和slave的初始数据一致
M--S1--S2级联架构操作步骤
环境:
master:192.168.1.166
slave1:192.168.1.114
slave2:192.168.1.180
1、环境准备
# master: [root@master ~]# vim /etc/hosts 192.168.1.114 slave1 # slave1: [root@slave1 ~]# vim /etc/hosts 192.168.1.166 master 192.168.1.180 slave2 # slave2: [root@slave2 ~]# vim /etc/hosts 192.168.1.114 slave1
2、修改配置文件
# master: root@master ~]# vim /etc/my.cnf log-bin=mysql-bin server-id = 1 # slave1: [root@slave1 ~]# vim /etc/my.cnf log-bin=mysql-bin log-slave-updates=1 server-id = 2 relay-log=/data/DB/relay.log # slave2: [root@slave2 ~]# vim /etc/my.cnf server-id = 3 relay-log=/data/DB/relay.log
3、数据初始化一致
情况1:master和slave都没有业务数据,直接初始化master和slave的数据库
情况2:master上面有业务数据
masteer: 1>停止数据库 [root@master ~]# /etc/init.d/mysqld stop 2>物理级别备份 [root@master ~]# cd /data/DB/ && ll [root@master DB]# tar -cvzf /tmp/mysql.tar.gz * [root@master DB]# scp /tmp/mysql.tar.gz 192.168.1.114:/tmp [root@master DB]# scp /tmp/mysql.tar.gz 192.168.1.180:/tmp 3>slave1和slave2进行数据恢复 [root@slave1 ~]# cd /data/DB/ && ll [root@slave1 DB]# tar -xf /tmp/mysql.tar.gz -C . [root@slave1 DB]# /etc/init.d/mysqld start [root@slave2 ~]# cd /data/DB/ && ll [root@slave2 DB]# tar -xf /tmp/mysql.tar.gz -C . [root@slave2 DB]# /etc/init.d/mysqld start 4>查看slave和master上面的数据是否一样 [root@master DB]# echo "show databases;" | mysql -p123 [root@slave1 DB]# echo "show databases;" | mysql -p123 [root@slave2 DB]# echo "show databases;" | mysql -p123