MySQL 5.6主从报错的实战记录

下面就详细讲解“MySQL 5.6主从报错的实战记录”的完整攻略。

问题描述

在 MySQL 5.6 主从复制环境中,从库报错如下:

Error 'Duplicate entry '12345' for key 'PRIMARY'' on query...

问题分析

这个错误提示的含义是,由于从库上已经存在一条与主库上相同的记录,从而导致主从同步失败。查看数据库表的结构和数据,发现从库上的表确实存在主键相同的记录。这可能是由于以下原因导致的:

  • 从库上手动改写了记录,并将主键改为了与主库相同的值。
  • 从库上的同步线程发生了错误,导致主键冲突。

我们需要进一步分析错误日志,查找导致主从同步失败的具体原因。

解决方案

  1. 首先需要通过 show slave status\G 命令查看从库的同步状态,确认同步是否正常。
(...)
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(...)

如果以上两个状态都为 Yes,则表示从库同步正常,在解决主从同步问题时需要考虑其他方面的问题。

  1. 如果同步状态正常,需要进一步查看错误日志,找到导致主从同步失败的具体 SQL 语句。

在从库上运行 show slave status\G 命令,查看 Last_Error 项的内容。

(...)
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '12345' for key 'PRIMARY'' on query...
(...)

可以看到,报错信息中包含了具体的 SQL 语句。根据这个 SQL 语句,可以确认是从库上手动修改记录导致的冲突。

  1. 解决主从同步问题的方法是,删除从库上的重复记录。在删除记录前,需要先停止同步线程,否则删除操作可能会在主库和从库上都执行,导致再次出现冲突。

停止同步线程的命令为:

stop slave;

然后,可以通过以下命令,在从库上删除重复记录:

delete from 表名 where 主键=12345;

删除完成后,重新启动同步线程:

start slave;

等待一段时间后,可以通过 show slave status\G 命令查看同步状态,确认同步是否恢复正常。

示例说明

示例一

在从库上手动改写了记录,并将主键改为了与主库相同的值。在这种情况下,可以通过删除从库上的冲突记录解决主从同步问题。

例如,从库上的表为 user,主键为 id,其中有一条记录的 id 值为 12345,与主库中的 user 表中的记录重复。通过以下命令可以删除重复的记录:

stop slave;
delete from user where id=12345;
start slave;

示例二

从库上的同步线程发生了错误,导致主键冲突。在这种情况下,需要查找导致同步失败的具体原因,并解决问题。

例如,从库上的 Last_Error 项中包含的错误信息如下:

Last_Errno: 1213
Last_Error: Error 'Deadlock found when trying to get lock; try restarting transaction' on query...

这说明同步线程在执行 SQL 语句时发生了死锁,需要进一步分析原因并解决问题。可以通过查看 Last_SQL_ErrorLast_IO_Error 项的内容,进一步定位问题并解决。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 5.6主从报错的实战记录 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Navicat Premiun远程连接MySQL报错10038解决方案

    当我们使用 Navicat Premiun 远程连接 MySQL 数据库时,有时会遇到报错 10038 的情况。这种情况通常是由于连接数过多导致的。下面是解决这个问题的一些解决方案。 方案一:调整 MySQL 的最大连接数 可以通过修改 MySQL 配置文件来增加最大连接数。具体步骤如下: 使用管理员身份登录 MySQL 数据库。 输入以下命令进入 MySQ…

    MySQL 2023年5月18日
    00
  • linux – mysql – 卸载:使用rpm方式安装的mysql

    一、查看系统中是否以rpm包安装的mysql rpm -qa | grep -i mysql 结果: 备注:如果有内容则证明是使用rpm方式安装的mysql   二、卸载 使用rpm -e 命令将上个命令中包列表进行卸载 如果报错:error: Failed dependencies 只要加入–nodeps就ok了 命令格式:rpm -e 包名称 –no…

    MySQL 2023年4月13日
    00
  • 解析优化MySQL插入方法的五个妙招

    解析优化MySQL插入方法的五个妙招 MySQL是目前最为流行的关系型数据库之一,但在插入大量数据时,执行效率常常受到限制。本文将通过五个优化妙招,帮助你提高MySQL插入效率。 1. 批量插入数据 通过一次性插入多组数据,可以减少连接MySQL的次数,提高插入效率。可通过多种方式实现批量插入数据,其中最常见的是使用INSERT INTO语句: INSERT…

    MySQL 2023年5月19日
    00
  • MySQL 之 索引原理与慢查询优化

    1. 索引介绍 需求:   一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。 索引:    简单的说,相当于图书的目录,可以帮助用户快速的找到需要的内容.    在MySQL中也…

    MySQL 2023年4月13日
    00
  • MySQL深度分页(千万级数据量如何快速分页)

    MySQL是一种常用的关系型数据库,对于大数据量的分页查询,需要采用一些特殊的技巧来达到较好的性能和效果,这就是MySQL深度分页的技巧。下面是深度分页的完整攻略: 了解MySQL分页的性能问题 在MySQL中,使用OFFSET和LIMIT分页方式的底层实现是一次查询所有行然后返回指定的行数。因此,随着查询结果集的增加,OFFSET值越大,查询时间就会变得越…

    MySQL 2023年5月19日
    00
  • Mysql占用CPU过高如何优化,如何解决 批量 kill mysql 中运行时间长的sql

    2017-02-28 15:13 331人阅读 评论(0) 举报   MySQL占用CPU过高如何优化   一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 top 命令 查看Cpu(s) 参数一直处于 98% 状态 ,load average达到了 5  (4核服务器)   可见DB已经超负荷运行了   2.使用root…

    MySQL 2023年4月13日
    00
  • 解决mysql与navicat建立连接出现1251错误

    MySQL与Navicat建立连接可能会出现1251错误,这是由于MySQL服务器的字符集与Navicat客户端字符集不匹配所导致的。要解决这个问题,需要进行以下的操作。 1. 确认服务器字符集 首先确认MySQL服务器的字符集,可以通过以下的SQL语句查询该信息: show variables like ‘character_set_server’; 查询…

    MySQL 2023年5月18日
    00
  • MYSQL子查询和嵌套查询优化实例解析

    MYSQL子查询和嵌套查询优化实例解析 什么是子查询和嵌套查询 子查询指的是一个查询语句中包含了另一个查询语句,而被包含的查询语句就称为子查询,主查询则被称为外层查询。子查询可以包含在where子句、select语句中和from子句等位置,用于过滤或计算数据。 嵌套查询则是指子查询与主查询嵌套在一起的查询语句,嵌套查询需要在子查询中使用主查询返回的数据,所以…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部