今天slave机器报如下错误

[ERROR] Slave SQL: Error 'Duplicate entry '7301' for key 'PRIMARY'' on query. Default database: 'rt_roledb0301'. Query: 'insert into gm_proc_run_info (run_name, des, err_code) values ('pc_rank_of_day', 'begin', 0)', Error_code: 1062

111027  4:00:12 [Warning] Slave: Duplicate entry '7301' for key 'PRIMARY' Error_code: 1062

111027  4:00:12 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-binlog.000009' position 31542061

定位分析:在主从切换以后,由于没有关闭从上的计划任务

(root@localhost:)[(none)]> show global variables like 'event_sch%';

+-----------------+-------+

| Variable_name | Value |

+-----------------+-------+

| event_scheduler | ON |

+-----------------+-------+

1 row in set (0.00 sec)

导致 从服务器复制了一次主服务器计划任务的结果,又执行了一次相同的计划任务,导致了Duplicate entry报警。

解决方法:关闭从服务器上的计划任务,对从服务器进行数据恢复。

-------------------quote begin------------------------

3. If you decide that you can skip the next statement from the master, issue the following

statements:

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

mysql> START SLAVE;

The value of n should be 1 if the next statement from the master does not use

AUTO_INCREMENT or LAST_INSERT_ID(). Otherwise, the value should be 2. The

reason for using a value of 2 for statements that use AUTO_INCREMENT or

LAST_INSERT_ID() is that they take two events in the binary log of the master.

-------------------quote end------------------------

MySQL文档中的意思是当master传到slave的语句中要用到auto_increment,或者last_insert_id()时,需要skip两个event. 但实际情况并非如此

测试过程如下:

192.168.1.1 为master

192.168.1.2 为slave

同步test,初始状态ok

1. 在master上创建测试表

点击(此处)折叠或打开

mysql> create table tmp_test_0208(id int not nullauto_increment,name varchar(30),primary key(id)) engine=innodb;

Query OK, 0 rows affected (0.20 sec)

2, 在salve上insert 3条记录

点击(此处)折叠或打开

mysql> insert into tmp_test_0208 values(1,'a'),(2,'b'),(3,'c');

Query OK, 3 rows affected (0.00 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from tmp_test_0208;

+----+------+

| id | name |

+----+------+

| 1 | a |

| 2 | b |

| 3 | c |

+----+------+

3 rows in set (0.00 sec)

3, 在master上insert 3条记录

点击(此处)折叠或打开

mysql> insert into tmp_test_0208(name) values('a'),('b'),('c');

Query OK, 3 rows affected (0.02 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from tmp_test_0208;

+----+------+

| id | name |

+----+------+

| 1 | a |

| 2 | b |

| 3 | c |

+----+------+

3 rows in set (0.00 sec)

4,  slave 的sql thread 中止

点击(此处)折叠或打开

/usr/local/mysql/bin/mysql -uroot -pxxx c2cdb -s -e"show slave status\G" |egrep "Slave_IO_Running|Sl

ave_SQL_Running"

Slave_IO_Running: Yes

Slave_SQL_Running: No

5,  skip next statemate后start slave正常

点击(此处)折叠或打开

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 ;

Query OK, 0 rows affected (0.00 sec)

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

/usr/local/mysql/bin/mysql -uroot -pxxx c2cdb -s -e"show slave status\G" |egrep "Slave_IO_Running|Sl

ave_SQL_Running"

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

slave端errlog如下:

130416 13:20:57 [ERROR] Slave SQL: Error 'Duplicate entry '1' for key 'PRIMARY'' on query. Default database: 'test'. Query: 'insert into tmp_test_0208(name) values('a'),('b'),('c')', Error_code: 1062

130416 13:20:57 [Warning] Slave: Duplicate entry '1' for key 'PRIMARY' Error_code: 1062

130416 13:20:57 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.004707' position 39082343

master binlog中相应的记录如下:

SET INSERT_ID=1/*!*/;

# at 39082439

#130416 13:16:07 server id 1  end_log_pos 39082557      Query   thread_id=12589 exec_time=0     error_code=0

SET TIMESTAMP=1366089367/*!*/;

insert into tmp_test_0208(name) values('a'),('b'),('c')

/*!*/;

# at 39082557

#130416 13:16:07 server id 1  end_log_pos 39082584      Xid = 409512836

COMMIT/*!*/;

总结:使用SET GLOBAL SQL_SLAVE_SKIP_COUNTER 命令跳过失败的SQL

mysql slave duplicate entry_slave 报Duplicate entry for key相关推荐

  1. Mysql报错:Specified key was too long; max key length is 767 bytes

    在执行mysql脚本时,报错:Specified key was too long; max key length is 767 bytes. 解决办法: 一.修改mysql的字符集为uft8 再次执 ...

  2. mysql 出现错误 Duplicate entry for key PRIMARY 解决办法

    原来是没有主键的,想增加一列为主键. mysql> desc t111; +-------+-------------+------+-----+---------+-------+ | Fie ...

  3. MySql插入数据时错误Duplicate entry '131' for key 'PRIMARY'

    今天在进行开发的过程中,遇到MySQL数据库插入数据时抛出异常: Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViol ...

  4. Duplicate entry for key 'PRIMARY'

    错误场景: 更新同事代码之后启动报错,代码中的bug 具体的堆栈信息: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolatio ...

  5. Duplicate entry...for key...

    Duplicate entry...for key...的错误原因是主键的唯一值重复,在对数据库进行修改.插入操作时,一但主键的唯一值重复就会报此错误,有时在表中存在多个主键时,对表操作仍然报此错误, ...

  6. Duplicate entry ‘***‘ for key ‘UK_mjrobjw9m8n29ou6083ixjxmf‘

    后台运行报错Duplicate entry '***' for key 'UK_mjrobjw9m8n29ou6083ixjxmf' 检查sql语句,看数据库里面唯一的字段,你在添加或者修改的时候重复

  7. Hibernate: Duplicate entry for key错误排查

    背景: 公司业务需求: 1.合并两个用户,包括资产账户信息. 2.其中用户的积分账户有身份证号码(idNum)与真实姓名(realName)信息,且为联合唯一索引. 3.为了描述方便,假设两个用户A与 ...

  8. Duplicate entry '??…???' for key 'cname' Query:

    今天开发过程中,进行数据修改Update 时遇到了个问题Duplicate entry '??-???' for key 'cname' Query: 这报错是 代表数据表中 字段xxx中 已经的这个 ...

  9. MySQL5.7创建唯一索引时报错提示Duplicate entry * for key *

    一.报错原因 因表中创建唯一索引的列有重复数据,导致创建唯一索引时报错提示Duplicate entry * for key * 二.报错演示 例如lz用户表中用户名.邮箱和创建时间三列属性中存在相同 ...

最新文章

  1. 科学家都解决不了的5个“简单”算法,你不来看看?
  2. 转换营销阵地 特步的世界杯身影
  3. 安装suricata
  4. codeforces364D
  5. keras 多维时间序列预测
  6. JCG新年献礼,JHR-N825R给力上市
  7. 外键约束 mysql
  8. Batch Normailzation
  9. 蓝桥杯2019年第十届C/C++省赛C组第一题-求和
  10. 常见排序算法之插入排序
  11. DPCM差分预测编码
  12. 大数据分析技术与应用 1
  13. STM32-M3(野火)SD卡读写/移植znFAT文件访问系统
  14. linux如何打印脚本运行进度,linux-如何在使用systemd引导期间最后运行并打印我的脚本输出?...
  15. 拖拽牛逼,轻松实现一个自由拖拽的组件
  16. (一)安全测试基础:安全测试的内容
  17. Mac idea打开项目Java文件和resources文件都被标记了resources类型
  18. 最新xampp安装教程与配置
  19. 西安电子科技大学计算机834,西安电子科技大学834数据结构2021年硕士研究生招生考试自命题科目考试大纲...
  20. 将Google Analytics for Firebase数据导入BigQuery

热门文章

  1. cmos存储器中存放了_CMOS存储器里放哪些东西
  2. JAVA SE_part.2
  3. 【JavaScript】this指向经典面试题(超详细)
  4. CStdioFile类
  5. 图解+原理推导完全读懂KPM算法
  6. 计算机漏洞英语怎么说,游戏漏洞英文怎么写
  7. UDP多播:一对多数据收发
  8. 百度AI 实现人体姿态检测
  9. 诺基亚如何利用计算机上网,诺基亚S60怎么通过笔记本的WIFI上网?
  10. 第三方接口转换工具类