MySql主从同步问题解决
先查看从服务器的状态
1 mysql>SHOW SLAVE STATUS;
如果发现以下两个字段
1 Slave_IO_Running: No 2 Slave_SQL_Running: NO
其中有一个为No,则同步出错,需要恢复。出错信息可以参考Last_Error字段。
一般情况下,在从服务器上执行
1 mysql>stop slave; 2 mysql>start slave;
即可恢复。
如果运行这个之后,依然不能恢复,则可尝试以下方法。
先锁定表,在主服务器上执行
1 mysql>FLUSH TABLES WITH READ LOCK; 2 mysql>SHOW MASTER STATUS;
第一句锁定表,第二句显示主服务器的状态,记下
1 File: 2 Position:
这两个字段的值,再把需要同步的数据库的目录,在主服务器上操作,复制到从服务器
1 scp -r db_1 db_2 root@192.168.1.200:/var/lib/mysql/
这里,把db_1,db_2两个数据库目录,复制到从服务器的MySql数据目录下,复制后,注意权限问题。
完成复制之后,在主服务器上操作,解锁表
1 UNLOCK TABLES;
在从服务器上操作
1 STOP SLAVE; 2 3 CHANGE MASTER TO 4 MASTER_LOG_FILE='mysql-bin.000098', 5 MASTER_LOG_POS=22926865; 6 7 START SLAVE; 8 9 SHOW SLAVE STATUS;
这里,LOG_FILE与LOG_POS分别对应之前在主服务器上查询出来的File与Position字段。
完成。
其中的CHANGE MASTER TO语句,通常还有以下值,按需选择设置
1 CHANGE MASTER TO 2 MASTER_HOST='192.168.1.199', 3 MASTER_USER='repl', 4 MASTER_PASSWORD='repl', 5 MASTER_PORT=3306 6 MASTER_LOG_FILE='MYSQL-BIN.000098', 7 MASTER_LOG_POS=22926865, 8 MASTER_CONNECT_RETRY=30;