mysql主从不一致解决方法

 

方法一:忽略错误,同步

 

该方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况

 

解决: 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

stop slave;

 

#表示跳过一步错误,后面的数字可变

 

setglobalsql_slave_skip_counter =1;

 

start slave;

 

之后再用mysql> show slave status\G  查看:

 

Slave_IO_Running: Yes

 

Slave_SQL_Running: Yes

 

 

ok,现在主从同步状态正常了。。。

 

 

方式二:重新做主从,完全同步

 

该方法适用于主从库数据相差较大,或者要求数据完全统一的情况

 

--主机开两个窗口,一个进入mysql,一个是shell

--主机阻断写操作
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
mysql> 
mysql> 
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |  1529881 | openser      | mysql,test       |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)


--另外一个窗口导出主机数据库
mysqldump -u root -p123456 --opt -R openser > openser20121203.sql

--刚才的窗口主机解锁
mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql>

--打包数据文件到从机
drop database openser;
create database openser;
mysql -u root -p123456 openser < openser20121127.sql

--从机操作
SLAVE STOP;

reset slave;
CHANGE MASTER TO MASTER_HOST='192.168.21.26',
MASTER_USER='repl_user',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=1529881;
start slave;
show slave status\G