首先,如果遇到主键冲突:
Last_SQL_Error: Error 'Duplicate entry '1001-164761-0' for key 'PRIMARY'' on query. Default database: 'bug'. Query: 'insert into misdata (uid,mid,pid,state,mtime) values (164761,1001,0,-1,1262623560)'

A.可以先将冲突的记录删除,然后再进行一下方法:

进入主库锁表,

FLUSH TABLES WITH READ LOCK;

mysql>show master status;

+——————-+———–+————–+——————+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+——————-+———–+————–+——————+

| ufo.000063 | 159164526 | | |


+——————-+———–+————–+——————+

1 row in set (0.00 sec)


进入从库

mysql>slave stop;

mysql>change master to master_log_file=’ufo.000063’, master_log_pos=159164526;

完成上面这些后

mysql>slave start;

回到主库

unlock tables; 解锁

回到从库查看

show slave status \G;

B.另外,可以在热备时跳过冲突的记录:

slave stop;

set global sql_slave_skip_counter=10; //跳过10个错误

slave start;

show slave status \G;

C.修改从库的/etc/my.cnf文件

在[mysqld]下面加入slave-skip-errors = 1062 (忽略所有的1062错误)

重启下从库的mysql

D.修改binlog_format的格式为mixed

进入从库查看show global variables like ‘binlog_format’,如果是statement,修改从库的 my.cfg,在[mysqld]下面添加binlog_format=mixed,然后重启数据库