MySQL主从复制与主主复制详述(2)

第三步:
在192.168.1.2中创建一个192.168.1.1主机中可以登录的MySQL用户

mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.1' IDENTIFIED BY 'root'; mysql>FLUSH PRIVILEGES;

第四步:
在192.168.1.2查看二进制日志名和位置

mysql>show master status;

MySQL主从复制与主主复制详述

在192.168.1.1中执行:

mysql>CHANGE MASTER TO >MASTER_HOST='192.168.1.2', >MASTER_USER='root', >MASTER_PASSWORD='root', >MASTER_LOG_FILE='mysql-bin.000001', >MASTER_LOG_POS=98;

MySQL主从复制与主主复制详述

3.完成mysql主主复制

分别开启START SLAVE;

mysql>START SLAVE; #开启复制 mysql>SHOW SLAVE STATUS\G #查看主从复制是否配置成功

MySQL主从复制与主主复制详述

注意:当看到两台主机的Slave_IO_Running: YES、Slave_SQL_Running: YES才表明状态正常

3.关于报错

1.主从同步报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server
原因分析:
mysql 5.6的复制引入了uuid的概念,各个复制结构中的server_uuid得保证不一样,但是查看到直接copy data文件夹后server_uuid是相同的,show variables like ‘%server_uuid%’;
解决方法:
找到data文件夹下的auto.cnf文件,修改里面的uuid值,保证各个db的uuid不一样,重启db即可

场景二:创建主从关系时copy了同样的my.cnf文件,报错
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
原因分析:
和server_uuid类似,servier_id也得保证不一样
解决方法:
找到my.cnf配置文件中的server_id,修改从库的server_id保证和复制结构中的其他db不一样,重启db即可

1、主主复制配置文件中auto_increment_increment和auto_increment_offset只能保证主键不重复,却不能保证主键有序。

2、当配置完成Slave_IO_Running、Slave_SQL_Running不全为YES时,show slave status\G信息中有错误提示,可根据错误提示进行更正。

3、Slave_IO_Running、Slave_SQL_Running不全为YES时,大多数问题都是数据不统一导致。

常见出错点:

1、两台数据库都存在db数据库,而第一台MySQL db中有tab1,第二台MySQL db中没有tab1,那肯定不能成功。

2、已经获取了数据的二进制日志名和位置,又进行了数据操作,导致POS发生变更。在配置CHANGE MASTER时还是用到之前的POS。

3、stop slave后,数据变更,再start slave。出错。

终极更正法:重新执行一遍CHANGE MASTER就好了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6518a522f1996d7eeb81ead29cf1b6b9.html