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日

相关文章

  • 第06章 索引的数据结构

    1. 为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,如果不符合则需要全表扫描,即需要一条一条地查找记录,直到找到与条件符合的记录。 如上图所示,数据库…

    MySQL 2023年4月17日
    00
  • 阿里云安装mysql数据库出现2002错误解决办法

    针对“阿里云安装mysql数据库出现2002错误解决办法”,我来给一个详细的攻略: 问题 在安装阿里云服务器上的mysql数据库过程中,可能会出现2002错误,导致无法正常安装数据库。 原因 该错误一般是由于数据库服务没有启动或者服务连接配置出现了问题导致。 解决办法 以下是两种解决办法: 解决办法一:启动mysql服务 打开终端,通过以下命令确认mysql…

    MySQL 2023年5月18日
    00
  • MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化

    MySQL性能全面优化方法参考 1. CPU优化 1.1 选择合适的CPU型号 CPU是MySQL运行过程中最重要的硬件设备之一。选择合适的CPU型号可以最大限度地发挥MySQL的性能。在选择CPU型号时,需要考虑CPU的核心数、主频、缓存大小以及功耗等因素。 例如,目前普遍使用的Intel Xeon E5系列CPU,具有超线程技术,可以将一个物理核心模拟成…

    MySQL 2023年5月19日
    00
  • ubuntu16.04 编译安装mysql5.7.x,以及配置使用

    編譯與安裝:  源码下载地址:http://dev.mysql.com/downloads/mysql/     选择Generic Linux (Architecture Independent), Compressed TAR Archive  Includes Boost Headers 首先    : sudo apt-get update  第一步…

    MySQL 2023年4月13日
    00
  • mysql存储过程之引发存储过程中的错误条件(SIGNAL和RESIGNAL语句)实例分析

    MySQL存储过程是MySQL所支持的一种特殊的PL/SQL语言,可以用于实现一些特定的业务逻辑。然而在实际的开发中,存储过程中难免会出现一些错误条件,需要我们及时进行处理。其中,SIGNAL和RESIGNAL语句就是两种常见的处理方式。 什么是SIGNAL和RESIGNAL语句 SIGNAL语句 SIGNAL语句用于引发一个异常,并将异常信息传递到存储过程…

    MySQL 2023年5月18日
    00
  • 优化mysql之key_buffer_size设置

    关于“优化MySQL之key_buffer_size设置”的完整攻略,我将从以下几个方面进行讲解: 什么是key_buffer_size? 如何设置key_buffer_size? key_buffer_size设置示例说明 总结 什么是key_buffer_size? 在MySQL数据库中,我们经常会遇到大量数据的读取问题。而默认情况下,MySQL使用磁盘…

    MySQL 2023年5月19日
    00
  • 一文搞懂MySQL持久化和回滚的原理

    一文搞懂MySQL持久化和回滚的原理 1. 持久化和回滚的概念 在数据库中,持久化指的是在数据被写入磁盘后仍能保持其状态的能力,即使数据库服务器意外关闭,也能够恢复之前的状态。而回滚指的是当操作失误或出错时,撤销已完成的操作,回到未完成操作前的状态。 2. MySQL持久化技术 MySQL使用了多种持久化技术来确保数据的可靠性,其中最常用的是日志和InnoD…

    MySQL 2023年5月19日
    00
  • MYSQL企业常用架构与调优经验分享

    一、选择Percona Server、MariaDB还是MYSQL  mysql应用源码:http://www.jinhusns.com/Products/Download/?type=xcj 1、Mysql三种存储引擎   MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎。从MYSQL5.5开始,M…

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