mysql 数据库主从复制、双主复制集群产生的问题以及mysql常见的错误代码

通用错误解决方案:

mysql主从复制,经常会遇到错误而导致slave端复制中断,这个时候一般就需要人工干预,跳过错误才能继续 跳过错误有两种方式

  1. 跳过指定数量的事务
slave stop;  
set global sql_slave_skip_counter = 1        #跳过一个事务  
slave start
  1. 跳所有错误或指定类型的错误
    修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误 
slave-skip-errors=all #跳过所有错误
1. mysql数据库报1062错误

原因分析:

从库插入数据,发生唯一性冲突。此时从库已经有相同主键的数据,如果再插入相同主键值的数据则会报错。可以查看主库的改行数据与从库的要插入数据是否一致,如一致则跳过错误,恢复SQL线程,如不一致,则以主库为准,将从库的该行记录删除,再开启复制。

例如:
在这里插入图片描述
问题由来:
经查看是主键冲突的问题,导致在写入数据的时候造成冲突。从库插入数据,发生唯一性冲突。
此时从库已经有相同主键的数据,如果再插入相同主键值的数据则会报错。可以查看主库的改行数据与从库的要插入数据是否一致,如一致则跳过错误,恢复SQL线程,如不一致,则以主库为准,将从库的该行记录删除,再开启复制。

解决办法:

mysql 主键冲突解决办法(1062错误)

stop slave;
set global slave_exec_mode=idempotent; 
start slave;

两台服务器都要做。

配置文件:

slave_exec_mode=IDEMPOTENT

具体参数:https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html#sysvar_slave_exec_mode

2. 数据库报 1032 错误解决办法

原因分析:
删除或更新从库的数据,从库找不到记录。此时,主库的数据是比从库新的,可以采取从库添加相同的数据在开启复制恢复SQL线程。

1032错误码说明:

	  MySQL主从同步的1032错误,一般是指要更改的数据不存在,SQL_THREAD提取的日志无法应用故报错,造成同步失败

	(Update、Delete、Insert一条已经delete的数据)。

   1032的错误本身对数据一致性没什么影响,影响最大的是造成了同步失败、同步停止。

   如果主主(主从)有同步失败,要第一时间查看并着手解决。因为不同步,会造成读取数据的不一致。应在第一时间恢复同步,

	 尽量减少对业务的影响。然后再具体分析不同步的原因,手动或者自动修复数据,并做pt-table-checksum数据一致性检查。

如图:
在这里插入图片描述

可以在主上查看

mysqlbinlog --no-defaults -v --base64-output=decode-rows  --stop-position=14631 mysql-bin.000018 | tail -20

在这里插入图片描述

以上为检索出来的结果,事务语句为:delete from db_99ducj.tbuservcbgolog where @1=10561502 and @2=1683955 …

其中@1 @2 @3…分别对应表的列名,填补上即可。

我们可以逆向此SQL 将deleter 变成Insert,手动在从库上执行此Insert SQL,之后restart slave就好了。
逆向SQL update、delete 就变成insert

实际问题:

在这里插入图片描述
现象: 报错信息

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值