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日

相关文章

  • MySQL root修改普通用户密码

    MySQL是一种流行的关系型数据库管理系统,它被广泛用于各种应用程序中。作为MySQL的管理员,我们需要时常修改普通用户的密码以确保数据库的安全性。 在MySQL中,root用户是拥有最高权限的用户。如果我们需要修改普通用户的密码,那么我们需要使用root用户登录MySQL并进行操作。 下面是MySQL root修改普通用户密码的方法详解: 步骤1:使用ro…

    MySQL 2023年3月10日
    00
  • 数据库系列:MySQL慢查询分析和性能优化

    1 背景 我们的业务服务随着功能规模扩大,用户量扩增,流量的不断的增长,经常会遇到一个问题,就是数据存储服务响应变慢。导致数据库服务变慢的诱因很多,而RD最重要的工作之一就是找到问题并解决问题。下面以MySQL为例子,我们从几个角度分析可能产生原因,并讨论解决的方案。 2 定位慢查询的原因并优化 2.1 慢查询的分析 开启SlowLog,默认是关闭的,由参数…

    MySQL 2023年4月12日
    00
  • MySQL如何处理无效数据值?

    MySQL会在处理无效数据值时,根据数据类型和使用场景的不同,采取不同的处理方式。主要包括以下几种方式: 数据类型不匹配时,MySQL会自动进行数据类型转换。例如,如果数字类型的字段中存储了字符串类型的数据,MySQL会尝试将其转换为数字类型。如果转换失败,MySQL会将其转换为0或NULL。 字符串类型的字段中存储了超长数据时,MySQL会根据字段的定义,…

    MySQL 2023年3月10日
    00
  • 详解MySQL WHERE:条件查询数据

    MySQL WHERE模块用来筛选满足特定条件的数据。该模块常用于查询数据表中的数据,其中条件是用来限制要返回的数据的范围。 语法: SELECT column_name(s) FROM table_name WHERE condition; 其中,column_name(s) 是要查询的列名,可以使用 * 代替。table_name 是要查询的数据表名。c…

    MySQL 2023年3月10日
    00
  • Python – Django – 使用 Pycharm 连接 MySQL 数据库

    在 Pycharm 的右上方找到 Database 点击 依次点击,选择 MySQL 数据库 点击 Download 下载驱动文件 下载完成后对数据库的相关信息进行填写 填写完成后点击“Test Connection”,如果出现 Successful 就说明连接成功 然后点击“应用”,再点击“确定” 左边这个窗口是写 SQL 语句的地方  例如查询 app0…

    MySQL 2023年4月13日
    00
  • Windows安装MySQL8.0.x 版本教程

    Windows安装MySQL8.0.x 版本教程 系统要求 操作系统:Windows 7/8/10或Windows Server 2008 R2/2012/2016。 内存:建议至少4GB。 硬盘空间:建议至少500MB,安装MySQL Server和工具包需要额外空间。 下载MySQL 访问 MySQL官网,在下载列表中找到需要的版本,选择对应的操作系统和…

    MySQL 2023年5月18日
    00
  • IDEA连接MySQL测试连接失败解决方法

    问题描述 IDEA的强大不需要再多做描述,其中有一个非常好用的功能就是我们可以在IDEA中连接数据库,尤其是使用MyBatis用插件生成逆向工程代码时,并且我们如果连接上了数据库,在IDEA中编写SQL代码时也会有相应的代码补全提示。 可能我们在连接MySQL 5.* 的版本是没有遇到连接失败的问题 但是如果我们的MySQL 是8.*的版本时就有可能会遇到测…

    MySQL 2023年4月12日
    00
  • Mysql中行转列和列转行

    一、行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容。 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score(    id INT(11) NOT NULL auto_increment,    userid VARCHAR(20) NOT NULL COMMENT ‘用户id’,…

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