集群——双主双从时,从服务器只同步一台主服务器数据
设置好两台从服务器后,在设置两台从服务器,其中第一台从服务器用的备份是之前的,当手动恢复数据后,数据不能同步到后面的数据,于是,我清除数据库,打算从新做,
# 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;
就成功了。
原因不是很清楚,看到的大佬可以给我提示一下。