环境:两台服务器双机备份,数据库采用主主复制
说明:以下主机指HA集群的主机

Error_code: 1062
该报错通常会出现在主机或备机,通常最后两台服务器都有该报错(形式相同,内容不同),我们以主机上的报错为准去恢复备机数据。步骤如下:
1、记录主机(node1)执行show slave status\G;的报错
Last_SQL_Error: Error 'Duplicate entry '4200000357' for key 'PRIMARY'' on query. Default database: 'somedb'. Query: 'insert into sometable (columns…) values (values…)'

说明:主机和备机报错为同一张表。如果仅备机有报错,记录备机报错;如果主机和备机同一张表报错,记录较小的那一个id。

2、停止HA服务
# service rgmanager stop; service cman stop

3、停止数据库主从复制
分别在主、备机上关闭 MySQL 主从复制和 MySQL 事件调度器。

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)
mysql> stop slave io_thread;
Query OK, 0 rows affected (0.07 sec)
mysql> set global event_scheduler=0;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| OFF               |
+-------------------+
1 row in set (0.00 sec)

4、数据恢复
4.1 删除不一致的表记录
删除报错中备机(node2)与主机不一致的表记录

mysql> use somedb;
mysql> delete from sometable where id>4200000356;
说明:开始不一致的id是4200000357,所以把alaems表中大于420000036的记录都删除

4.2 记录需要恢复到的位置
查看备机错误日志,记录ERROR出现后stopped的位置
2017-05-23T05:47:16.711096Z 1511 [ERROR] Slave SQL for channel '': Error 'Duplicate entry '4200000358' for key 'PRIMARY'' on query. Default database: 'somedb'. Query: 'insert into sometable (columns…) values (values…)', Error_code: 1062
2017-05-23T05:47:16.711117Z 1511 [Warning] Slave: Duplicate entry '4200000358' for key 'PRIMARY' Error_code: 1062
2017-05-23T05:47:16.711122Z 1511 [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.000008' position 129383305

4.3 重新定位备机复制主机数据库的位置
在备机(node2)执行如下操作
mysql> change master to master_log_file='mysql-bin.000008',master_log_pos=129383305;

说明:将备机读取主机MySQL操作的二进制文件位置改为备机错误日志中提示的位置(发生该报错后stoped的位置,即该位置之前的操作是无误的,重新定位后,会从该位置开始继续读取主机的数据库操作)

4.4 重新定位主机复制备机数据库的位置
说明:如果主机也有报错执行,执行该步骤;反之则跳过该步骤(1)    首先在备机(node2)刷新其mysql-bin.xxx

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |  3952751 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)mysql> flush logs;
Query OK, 0 rows affected (0.36 sec)mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      154 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)mysql> change master to master_log_file='mysql-bin.000003',master_log_pos=154;
Query OK, 0 rows affected (0.00 sec)

(2)    然后在主机(node1)重新定位其读取备机二进制文件的位置

mysql> change master to master_log_file='mysql-bin.000003',master_log_pos=154;
Query OK, 0 rows affected (0.00 sec)

说明:因为数据库采用主主复制,主机会复制备机MySQL执行的操作,而数据库恢复以主机数据为基准,所以刷新备机的mysq-bin.xxx以新的位置开始,主机就不会去执行备机与自己数据库不一致的部分。flush logs后,备机mysql-bin.xxx数值加1,重新在一个文件中记录备机操作。

5、启动复制
分别在主、备机上开启和MySQL 事件调度器和MySQL 主从复制。

mysql> set global event_scheduler=1;
Query OK, 0 rows affected (0.00 sec)
mysql> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON                |
+-------------------+
1 row in set (0.00 sec)
mysql> start slave io_thread;
Query OK, 0 rows affected (0.07 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

6、 查看主机和备机同步状态

mysql> show slave status\G;
数据库恢复正常,不过备机延时较大,但只要主机正常,不影响其业务。
主机(node1)延迟:
Seconds_Behind_Master: 0
备机(node2)延迟:
Seconds_Behind_Master: 86669

等待同步完成,即两台服务器上述Seconds_Behind_Master:0

7、启动HA服务
# service cman start; service rgmanager start

[MySQL] 数据库复制异常恢复之Error_code: 1062 (Duplicate entry)相关推荐

  1. 利用navicat向mysql数据库导入数据时出现1062 - Duplicate entry '0' for key 'PRIMARY'错误的解决办法

    1062 - Duplicate entry '0' for key 'PRIMARY',明明导入的数据值不一样,但错误提示主键已存在,不能插入.不知道为什么有些数据插入不成功,原因我也不知道. 解决 ...

  2. mysql integrityerror_mysql插入数据报错IntegrityError: (1062, Duplicate entry 'xx' for key 'xxxxx')...

    1.问题描述 MySQL插入数据的时候报错,提示如下: IntegrityError: (1062, "Duplicate entry 'xx' for key 'xxxxx'") ...

  3. 【数据库-MySql】[Err] 1062 - Duplicate entry '1-1' for key 'PRIMARY'

    背景 在Mysql转存过程中使用以下SQL语句,出现Err 1062的报错. INSERT INTO dbbackup.tb1 SELECT* FROMtb1 主键或联合主键对应的数据已存在. [Er ...

  4. mysql实例怎么复制_Mysql实例MySQL数据库复制概论

    <Mysql实例MySQL数据库复制概论>要点: 本文介绍了Mysql实例MySQL数据库复制概论,希望对您有用.如果有疑问,可以联系我们. 导读:每当我们讨论一项(新的)领域技术的时候, ...

  5. 从永远到永远-Navicat将MySQL数据库复制到另一个Mysql数据库

    Navicat将MySQL数据库复制到另一个Mysql数据库 1.需求 2.方案 3.问题 1.需求 云服务器快到期了,实在不想续费了.一个是再续费太贵,再一个就是性能一般.索性直接买了个32G内存笔 ...

  6. mysql下 复制文件命令行_命令行下Mysql数据库复制、备份

    命令行下Mysql数据库复制.备份 在Win10下如果安装了Mysql,那么我们可以把远程Mysql服务器上的数据库备份到本地,前提是远程Mysql服务器允许远程接入. 假设远程Mysql服务器的访问 ...

  7. mysql #1062 –Duplicate entry '1' for key 'PRIMARY'

    把数据从一个机器上导到另外一个机器上,因此记录太多,刚开始没注意,超过了phpmyadmin的限制,提示出错了,我把文件手动的给分成一些小文件,可是再导就提示#1062 - Duplicate ent ...

  8. Mysql数据库复制及备份

    来源:http://blog.csdn.net/ssdbbg/article/details/8055631 Mysql数据库复制及备份 一.mysql数据库复制概述 复制解决的基本问题是让一台服务器 ...

  9. mysql-pymysql.err.IntegrityError:(1062, “Duplicate entry ‘2147483647‘ for key ‘PRIMARY‘)

    项目场景: mysql插入数据时遇到的bug. 问题描述: pymysql.err.IntegrityError:(1062, "Duplicate entry '2147483647' f ...

最新文章

  1. numpy.hstack(a,b) 按列方向扩展 与 numpy.vstack(a,b) 按行方向扩展 其中n*1 数组可以写成 举例 np.array([[1],[2],[3]])
  2. MaxCompute作业日常监控与运维实践
  3. php+js实现弹幕,jquery.barrager.js-专业的网页弹幕插件
  4. linux改狗命令,linux安装安全狗
  5. 系统学习深度学习(三十九)--基于模型的强化学习与Dyna算法框架
  6. android霓虹灯源代码——基础编
  7. python如何预处理文本分类_文本分类二之文本预处理
  8. python之web编程
  9. IDC 发布《中国视频云市场跟踪》最新报告,视频云市场将趋向何方?
  10. 阿里实习转正面试收获总结
  11. JProfiler ERROR: Invalid license key. Aborting.
  12. CTGU·OJ .特别的幸运数
  13. 游戏实时语音SDK是怎么炼成的
  14. 百度网盘免费扩容2T的内幕
  15. Linux学习思维导图
  16. SQLite Expert Professional v5.4.34-Crack
  17. 每日哲学与编程练习5——分数问题(Python实现)
  18. 攻防世界web进阶区Web_php_wrong_nginx_config详解
  19. 计算机卡 怎么检测,卡硬工具箱怎么测试CPU 轻松了解自己的处理器性能
  20. sklearn降维算法:PCA、LDA、MDS、流形学习Isomap

热门文章

  1. Ext4.2 使用iframe实现页面四宫格布局
  2. 20179311《网络攻防实践》第九周作业
  3. autojs识别本地验证码
  4. 【MAFNet】 A Multi-Attention Fusion Networkfor RGB-T Crowd Counting解读
  5. c语言程序设计考试a答案,C语言程序设计考试A答案.doc
  6. 最新京东金融Vue组件化实战视频教程(完整)
  7. Win10任务管理器变成灰色无法打开该怎么办?
  8. 关于MyBatis-Plus自动更新时间的小坑
  9. 动手写一个现代化的操作系统
  10. 关联容器迭代器itr (*itr)是什么意思