主从同步常见故障

公司使用腾讯云数据库,今天在从库上面查询相关数据时候,显示没有任何记录,登录后

show slave status\G 查看到状态中报1032错误,这里把相关主从同步故障总结一下。

1、在master上删除一条记录,在slave上找不到。

  Last_SQL_Error.Could not execute Delete_rows event on table ….Error_code:1032…

2、主键冲突,在slave已经有该记录, 又在master上插入了同一条记录

  Last_SQL_Error.Could not execute Write_rows event on table…… Error_Code :1062……

3、在master上更新一条记录,在slave上找不到数据

  Last_SQL_Error.Could not execute Update_rows event …… Error_Code: 1032……

以上三种情况在HA切换过程中,由于异步复制且sync_binlog=0 时,会造成小部分binlog 没接受完而导致报错。

4、slave中继日志损坏

  Last_SQL_Error:Error initializing relay log postion: I/O error reading the headerfrom the binary log

  Last_SQL_Error:Error initializing relay log positon:Binlog has bad magic number:it’s not a binary log file that can be used by this version of MySQL.

Slave 宕机或非法关机,电源故障、硬件故障,造成中继日志损坏。

解决方法:

  对于第一种情况: master要删除一条记录,而slave上找不到相应记录而报错。Master上已经删除,slave 并没有改记录,可以直接跳过:

 mysql> Stop slave ;

mysql> set global sql_slave_skip_counter=1;

mysql>  start slave;

  对于第二种情况的处理:对于重复的记录,需要删除重复的键值。

  第三种情况: master更新的记录,在slave上找不到。通过 Mysqlbinlog 分析出真实的语句,将slave缺少的记录进行手动填充。

  第四种:找到salve 同步执行到master的位置,重新做同步。

  查找变量:

  Relay_Master_Log_File:

  Exec_Master_Log_Pos:

  从这两个位置重新同步。

  如果业务允许的话,可以设置下面两个变量:

  slave-skip-errors=1022,1032,1062 (必须在 f中进行设置,只读的系统变量)

  (1022 :Message: Can‘t write; duplicate key in table ‘%s‘)

  (1032: Message: Can‘t find record in ‘%s‘)

  (1062: Message: Duplicate entry ‘%s‘ for key %d)

  slave_exec_mode (可在全部变量中进行设置)

  可选项为STRICT(默认)和IDEMPOTENT 模式, STRICT遇到任何问题,都会导致复制的停止。

  IDEMPOTENT 对于 duplicate key 和 no-key-found错误跳过。

注:以上两个参数的设置,如果出现跳过的情况,则会在错误日志中进行记录。

可以参考:http://alwaysyunwei.blog.51cto.com/3224143/1272027

时间: 2024-10-10 10:55:39

主从同步常见故障的相关文章

mysql主从同步常见异常及恢复方法

1. 一般的异常只需要跳过一步即可恢复 >slave stop; >SET GLOBAL sql_slave_skip_counter = 1; >slave start; 2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复 在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt tail -n 100000  binxxxx.txt > tail-binxxxx.txt vim tail-binxxxx.txt

2015-09-16 mysql 主从原理、 同步常见异常及恢复方法

1.原理 MySQL复制技术有以下一些特点:            (1)    数据分布 (Data distribution ) (2)    负载平衡(load balancing)             (3)    备份(Backups)           (4)    高可用性和容错行 High availability and failover 整体上来说,复制有3个步骤: (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,

mysql 主从同步详细配置教程

8.10 Mysql 主从同步 8.10.1 主从原理mysql主从同步的原理:1.在master上开启bin-log日志,用于记录master上的更改删的一些记录.2.主从各开启io线程,从上开启io线程和sql线程.同时都配置好主从上的serveid唯一性3.主上配置好授权用户,从上设置change master授权连接的命令3. 从上io线程通过授权连接master,master通过io线程检查到slav的请求的日志.postsion点位置.4.master将这些相应的请求内容发送给sla

MYSQL 主从同步故障-Error1062--解决方案

MYSQL 主从同步故障-Error1062-解决方案 公司有两台Mysql服务器之前配置了主从同步,今天用户反映数据有差异,登陆到服务器上查看Mysql主从配置,发现有错误: show slave status \G;  果然出现问题了 Slave_IO_Running: Yes Slave_SQL_Running: No 而且出现了1062错误 Last_SQL_Error: Error 'Duplicate entry '1001-164761-0' for key 'PRIMARY''

mysql 主从同步故障解决   Error 'Row size too large (> 8126).

错误日志:  Error 'Row size too large (> 8126). Changing some columns to TEXT or BLOB   or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row   format, BLOB prefix of 768 bytes is stored inline.' on query. Default   database: 'XXXX

redis主从同步及手动处理故障

redis主从同步 redis主库机器故障,手动切换主从库 原文地址:https://www.cnblogs.com/open-yang/p/11256420.html

mysql主从同步中出现的问题梳理

之前部署了Mysql主从复制环境(MySQL复制环境(主从/主主)部署总结性梳理),在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题:1)slave运行过慢不能与master同步,也就是MySQL数据库主从同步延迟MySQL数据库slave服务器延迟的现象是非常普遍的,MySQL复制允许从机进行SELECT操作,但是在实际线上环境下,由于从机延迟的关系,很难将读取操作转向到从机.这就导致了有了以下一些潜规则:"实时性要求不高的读取操作可以放到slav

老男孩教育每日一题-2017年4月28日- MySQL主从复制常见故障及解决方法?

MySQL主从复制常见故障及解决方法? 1.1.1故障1:从库数据与主库冲突 show slave status; 报错:且show slave status\G Slave_I/O_Running:Yes Slave_SQL_Running:No Seconds_Behind_Master:NULL Last_error:Error 'Can't create database 'xiaoliu'; database exists' on query. Default   database:'

MySQL主从同步、读写分离配置步骤、问题解决笔记

根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经安装了MySQL,全是rpm包装的,能正常使用.       为了避免不必要的麻烦,主从服务器MySQL版本尽量保持一致; 环境:192.168.0.1 (Master)           192.168.0.2 (Slave) MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i6