MySQL主从同步排错思路
一、权限层
slave是通过MySQL连接登录到master上来读取二进制日志,因此需要在
master上给slave配置权限,最常见的就是误操作配置错误,修改正确即可
mysql > grant replication slave on *.* to 'slave1'@'192.168.2.106'identified by '123456';
二、服务层
server-id是标记一个数据库的标识,如果重复了就会报错,修改一下即可
三、日志层
主从复制就是master将数据库的改变写入bin-log二进制日志,slave同步这些二进制
日志,并根据这些二进制日志进行数据操作
1, 在主库上把数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中
2, 备库I/O线程将主库上的日志复制到自己的中继日志(Relay Log)中
3, 备库SQL线程读取中继日志中的事件,将其重放到备库数据库之上
查看master上的bin-log及其position位置
配置slave replication
mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> change master to master_host='192.168.17.101',master_user='slave1',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=333;
mysql> start slave;
四、数据层
因为master跟slave数据不一致,master上操作的数据在从库不存在,slave操作不了导致服务中断,只有解决掉错误操作才能继续主从同步,因为不知道到底缺了哪些数据,只能备份master数据,恢复到slave才行。
master:mysqldump -uroot -p'123456' --all-databases > /root/mysql.sql
master:scp /root/mysql root@slave的ip:/tmp
slave: mysql -uroot -p'123456' < /tmp/mysql.sql