集群——双主双从时,从服务器只同步一台主服务器数据

设置好两台从服务器后,在设置两台从服务器,其中第一台从服务器用的备份是之前的,当手动恢复数据后,数据不能同步到后面的数据,于是,我清除数据库,打算从新做,

# systemctl stop mysqld

# rm -rf /var/lib/mysql/*

# systemctl start mysqld

在主服务器上备份新数据拷贝到此从服务器上,

#mysqldump -p'[email protected]' --all-databases --single-transaction --master-data=2  --flush-logs > `date +%F`-mysql-all.sql

#scp -r 2020-1-1-mysql-all.sql slave1:/tmp

将数据导入数据库

#mysql -p'[email protected]' < /tmp/2020-1-1-mysql-all.sql

在从服务器上设置 id , gtid

#vim /etc/my.cnf
server-id=3           //值,唯一,另一种标识
gtid_mode=ON    //开启
enforce_gtid_consistency=1     //强制一致性
master-info-repository=TABLE
relay-log-info-repository=TABLE

数据库设置主服务器

mysql> change master to
master_host='master1',        //主服务器为master1
master_user='rep',              //用户账号rep
master_password='[email protected]',    //账号秘密
master_auto_position=1 for channel 'master1';    //从master1 主动同步数据

mysql> change master to
master_host='master2',
master_user='rep',
master_password='[email protected]',
master_auto_position=1 for channel 'master2';         

mysql> start slave;   //开启从服务

mysql> show slave status \G;     //查看从服务状态

察看状态及实验成果:出现两个yes,差不多就成功了

集群——双主双从时,从服务器只同步一台主服务器数据

集群——双主双从时,从服务器只同步一台主服务器数据

如上图:我的实验,只成功了一个主服务器,当我查看了我MySQL配置文件及,数据库主服务器的设置后,没发现有错,运用代码:

mysql> stop slave;

mysql> start slave;

mysql> change master to
master_host='master1',        //主服务器为master1
master_user='rep',              //用户账号rep
master_password='[email protected]',    //账号秘密
master_auto_position=1 for channel 'master1';    //从master1 主动同步数据

mysql> change master to
master_host='master2',
master_user='rep',
master_password='[email protected]',
master_auto_position=1 for channel 'master2';   

结果:依旧只同步一个主服务器更新的数据,但可能会同步另一个主服务器。

解决办法:

mysql> stop slave;

mysql> reset slave;

mysal> start slave;

再次查看:

 mysql> show slave status\G;

就成功了。

原因不是很清楚,看到的大佬可以给我提示一下。