mysql 1062 场景_解决Mysql 主从或主主报1062错误[通俗易懂]

mysql 1062 场景_解决Mysql 主从或主主报1062错误[通俗易懂]1062错误——主键冲突,出现这种情况就是从库出现插入操作,主库又插入相同的数据,iothread没问题,sqlthread出错处理此种错误一般有两种思路:1、直接跳过错误执行语句2、找到错误执行语句,修复主库2数据https://www.cndba.cn/leo1990/article/2957https://www.cndba.cn/leo1990/article/2957https://ww…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1062错误——主键冲突,出现这种情况就是从库出现插入操作,主库又插入相同的数据,iothread没问题,sqlthread出错

处理此种错误一般有两种思路:

1、直接跳过错误执行语句

2、找到错误执行语句,修复主库2数据https://www.cndba.cn/leo1990/article/2957https://www.cndba.cn/leo1990/article/2957

https://www.cndba.cn/leo1990/article/2957

https://www.cndba.cn/leo1990/article/2957https://www.cndba.cn/leo1990/article/2957

Last_Errno: 1062

Last_Error: Could not execute Write_rows event on table test.test; Duplicate entry ‘2’ for key ‘PRIMARY’, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event’s master log mysql2-bin.000001, end_log_pos 2799

Skip_Counter: 0

—传统模式

mysql> stop slave;

#表示跳过一步错误,后面的数字可变,(或者N条event,一条一条跳过)

mysql> set global sql_slave_skip_counter =1;

mysql> start slave;

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

mysql> show slave status/G;/

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.21

Master_User: rep1

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql2-bin.000001

Read_Master_Log_Pos: 3087

Relay_Log_File: cndba-relay-bin.000006

Relay_Log_Pos: 587

Relay_Master_Log_File: mysql2-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test

#还有一种方法跳过所有1062错误

更改my.cnf文件,在Replication settings下添加:

slave-skip-errors = 1062

并重启数据库,然后start salve。

注意:因为要重启数据库,不推荐,除非错误事件太多。

模拟1062场景:

主库1创建表

mysql> create table test(id int PRIMARY KEY ,name varchar(32));

Query OK, 0 rows affected (0.06 sec)

修改参数sql_log_bin 使主库1操作不同步到主库2

mysql> set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values (1,’aa’);

Query OK, 1 row affected (0.02 sec)

mysql> insert into test values (2,’bb’);

Query OK, 1 row affected (0.01 sec)

mysql> insert into test values (3,’dd’);

Query OK, 1 row affected (0.00 sec)

修改参数sql_log_bin 使主库1操作说同步到主库2

mysql> set sql_log_bin=1;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values (4,’cc’);

Query OK, 1 row affected (0.08 sec)

mysql> select * from test;

+—-+——+

| id | name |

+—-+——+

| 1 | aa |

| 2 | bb |

| 3 | dd |

| 4 | cc |

+—-+——+

4 rows in set (0.00 sec)

主库2查看数据同步情况主库2查看数据同步情况

可以看到主库2数据只同步了一条数据

mysql> select * from test;

+—-+——+

| id | name |

+—-+——+

| 4 | cc |

+—-+——+

1 row in set (0.00 sec)

在主库2插入表test

mysql> insert into test values (2,’bb’);

Query OK, 1 row affected (0.01 sec)

在主库1查看主从状态

发现报1062错误,发生这个错误的原因是因为主库1已经存在id=2的数据,导致主键冲突。

mysql> show slave status/G;

……

Last_Errno: 1062

Last_Error: Could not execute Write_rows event on table test.test; Duplicate entry ‘2’ for key ‘PRIMARY’, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event’s master log mysql2-bin.000001, end_log_pos 2799

Skip_Counter: 0

Exec_Master_Log_Pos: 2564

Relay_Log_Space: 1541

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 1062

Last_SQL_Error: Could not execute Write_rows event on table test.test; Duplicate entry ‘2’ for key ‘PRIMARY’, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event’s master log mysql2-bin.000001, end_log_pos 2799

……

根本解决办法:

根据Last_Error中提示的master log和end_log_pos的位置查找这条主库2上缺失的数据

主库2操作:

[root@cndba data]# mysqlbinlog –no-defaults -v –base64-output=decode-rows –stop-position=2799 /data/mysql/binlog/mysql2-bin.000001 | tail -20

#180819 10:59:56 server id 21 end_log_pos 2706 CRC32 0x5a43437b Query thread_id=6 exec_time=0 error_code=0

SET TIMESTAMP=1534647596/*!*/;

SET @@session.sql_mode=1436549152/*!*/;

SET @@session.auto_increment_increment=2, @@session.auto_increment_offset=2/*!*/;

BEGIN

/*!*/;

# at 2706

#180819 10:59:56 server id 21 end_log_pos 2756 CRC32 0x0d6a3132 Table_map: `test`.`test` mapped to number 229

# at 2756

#180819 10:59:56 server id 21 end_log_pos 2799 CRC32 0xc6a8a0b0 Write_rows: table id 229 flags: STMT_END_F

### INSERT INTO `test`.`test`

### SET

### @1=2

### @2=’bb’

ROLLBACK /* added by mysqlbinlog */ /*!*/;

SET @@SESSION.GTID_NEXT= ‘AUTOMATIC’ /* added by mysqlbinlog */ /*!*/;

DELIMITER ;

# End of log file

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

找到之后,手动转变为delete 语句

主库1执行以下语句:

mysql> delete from test where id=2;

Query OK, 1 row affected (0.02 sec)

启动复制

mysql> start slave;

Query OK, 0 rows affected, 1 warning (0.00 sec)

查看主库2状态:

mysql> show slave status/G;

……

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

……

确定插入的数据和库里的数据是不是相同,如果相同可以删除主库1的数据来解决,否则可以考虑跳过这个事件来解决。

https://www.cndba.cn/leo1990/article/2957

https://www.cndba.cn/leo1990/article/2957

版权声明:本文为博主原创文章,未经博主允许不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189545.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 茅台抢购脚本详细教程, 另已将茅台抢购做成了一个软件

    今天对软件进行了升级,公众号上重新回复茅台获取最新软件!!最新软件解压后如图!以管理员方式运行main.exe软件最后抢购成功是不会主动付款的,要自己去APP支付注意使用茅台软件版抢购的朋友需要自己先去app上预约抢购!!!预约完之后,运行软件,输入2按回车键!,等待到指定时间开始抢购!!!别再问我为什么没动了!因为还没到抢购时间!!别再问我为什么没动了!因为还没到抢购时间!!别再问我为什么没动了!因为还没到抢购时间!!文章上有详细说明的,就不要再问我了!!看文章就对了,问我也

    2022年4月6日
    2.9K
  • rocketmq的原理_dns原理及其解析过程

    rocketmq的原理_dns原理及其解析过程1如何保证消息的可靠性传输生产者丢失数据:生产者设置同步提交消息,并且手动提交,将消息同步刷盘到从节点后在返回成功,broker:主从复制,同步刷盘消费端:消费重试,只有返回consume_success才算消费完成,保证消息的可靠性,最终还是消费16次还是失败的会进死信队列2.如何保证消息不被重复消费消费端消费消息的幂等1服务端代码根据messageId设置分布式锁,获取锁再做业务操作2更新数据库时校验业务的状态3或者设置唯一索引3.如何保证消息的顺序性…

    2025年6月27日
    2
  • SPPnet

    SPPnet目录1.Motivation2.SPPnet2.1SPP层的原理2.2SPPnet的区域映射原理3.总结论文:SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognition.来源:ECCV20141.MotivationR-CNN模型存在很多缺点和可改进的地方,其中的两个缺点如下:CNN网络后面接的FC层需要固定的输入大小,导致CNN也需要固定大小的输入,即要求候选区域在进入CNN前需要c

    2022年4月27日
    55
  • java日期格式化之特殊字符

    如何能够将日期2015-01-29格式化为15W05(表示15年第5周)呢?

    2022年4月7日
    93
  • mybatis 拦截器 添加参数_mybatis传递多个参数

    mybatis 拦截器 添加参数_mybatis传递多个参数上一篇中讲了mybatis拦截器的实现这一篇扩展mybatis在拦截器中添加额外参数在mybatis的mapper.xml文件中,我们可以使用#{}或${}的方式获取到参数,这些参数都需要提前我们在mapper.java接口文件中通过参数的方式传入参数才能取到为了扩展参数,我们需要了解mybatis是怎么帮我们保管mapper.java中传入的参数的进入Executor.java接口查看query方法,可以看到第一个参数MappedStatement对象中有一个parameterMap字段,该字段是

    2025年8月28日
    5
  • 光流法简单介绍「建议收藏」

    光流法简单介绍「建议收藏」光流的概念是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:(1)基于区域或者基于特征的匹配方法;

    2022年7月23日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号