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; 

 

 

 

 

 

 

posted on 2012-09-17 12:07  还是刀哥靠谱  阅读(4183)  评论(0编辑  收藏  举报

导航