MySQL双主环境复制延时故障处理

故障现象
生产中的一组MySQL双主(主库A和主库B)+Keepalived高可用单写(主库A),出现B库高延时问题。检查B库复制状态如下图1:

(B库的复制状态—图1)
问题分析
1、和开发人员确认,这组MySQL双主每天有批量的数据导入操作,业务是网站展示前一天股票大盘指数,数据是由脚本批量导入,从而产生了复制延时。
2、通过对导数据脚本分析,导数据是对一个表先进行delete后进行insert操作;股指大盘展示数据只保留一天数据,因此确认不需要保留前一天数据,修改脚本先truncate表后insert数据,这样可以加快数据导入的速度,避免复制的延时。
3、检看表结构,表没有主键,没有主键会影响主从复制。
4、检查B库show full processlist(图2),有批量的查询操作,user是dm,host是localhost连接是本地执行的,接下来排查系统是否有定时任务。
5、查看进程(图3),有批量备份脚本执行,每天的备份脚本没有完成,并且不停的执行。

(B库processlist信息-图2)

(B库检查进程-图3)

处理问题过程
1、kill掉B库系统上的备份脚本进程
2、A库全备份传输到B库,从做A库到B库的复制

(A库作全备份并传到B库-图4)
3、B库导入A库的备份文件,过程中会有报错,因为备份文件含有GTID信息,需要登录到B库执行reset master清除GTID信息,导入备份文件时重新生成GTID,再次导入A库的备份文件时就可以成功导入。

(B库导入A库备份-图5)
4、从做A库到B库的复制
1)reset slave all; 清除B库复制信息
2)Change master to 从做配置A库到B库的复制
3)Start slave;开启复制
4)Show slave status\G 检查复制状态已经是双YES(图6)
5)查看Master_Log_File=relay_master_log_file &&read_master_log_pos=exec_master_log_pos(图7)

(B库复制状态-图6)

(B库复制状态-图7)

5、检查B库向A库的复制状态,由于B库执行了reset master清除了B库的GTID信息,所以A库复制报错1236找不到master的binary log。

(A库复制状态-图8)
6、恢复B库到A库的复制,执行change master后检查A库复制状态。

(A库复制状态-图9 )
7、双主环境的双向复制状态都恢复正常。

总结
此次双主环境产生复制延时的原因,主要是B库的备份脚本不停的执行,造成B库有批量的慢查询,备份脚本在B库不停执行的同时A库导数据脚本在删除数据和插入数据,A库在删除数据使用delete数据影响删除效率,造成复制延时。另外A库导数据所涉及的表没有主键也影响了B库复制数据重放速度,产生了复制延时。为了避免故障再次发生,需要给表添加主键,增加复制重放数据的执行效率,优化导数据脚本和备份脚本,来防止再次出现复制产生大量的延时的问题。

原文地址:https://blog.51cto.com/9201316/2375218

时间: 2024-08-27 02:00:30

MySQL双主环境复制延时故障处理的相关文章

mysql双主环境搭建corosync+drbd+mysql

一.搭建环境 2台虚拟机 操作系统centos6.3 二.ip地址规划 node1   172.30.82.45 node2      172.30.82.58 VIP        172.30.82.61 三.注意: 1.设置各个节点间的时间同步,ntpdate 172.30.82.254 &>/dev/null 2.基于hosts文件实现能够互相用主机名访问,修改/etc/hosts文件 172.30.82.45node1 172.30.82.58node2 node1上执行: ssh

keepalived+mysql双主复制高可用方案

MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了双主对外的统一接口以及自动检查.失败切换机制.联合使用,可以实现MySQL数据库的高可用方案. 实验环境:OS:centos 6.x x86_64系统MySQL版本: :mysql 5.6.22   64 位A: master :192.168.79.3 3306B: slave :192.168.

MySQL双主复制

原文发表于cu:2017-06-12 本文简单介绍MySQL双主复制原理及1个简单是双主复制验证. MySQL双主复制原理 双主复制原理 master-master复制的两台服务器,既是master,又是另一台服务器的slave,本质上互为主从. 验证环境 操作系统 CentOS-6.7-x86_64 MySQL版本 MySQL版本是5.6.36: https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.36.tar.gz 拓扑图 采用VMwar

Mysql双主加Keepalived

一.MySQL于keepalived简介** 前言: 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入口,增加高可用.不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题. 1.1.MySQL** 1.1.1.MySQL主从复制原理 复制分成三步: \

MySQL双主(主主)架构方案

在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入口,增加高可用.不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题. 主从同步复制原理 在开始之前,我们先来了解主从同步复制原理. 复制分成三步: 1. master将改变记录到二进制日志(binary

MySQL双主+keeplived安装部署说明

MySQL双主+keeplived安装部署说明 一.环境介绍 1.1.规划 序号 类别 版本 主机名 IP 端口 备注 1 OS CentOS release 6.9 (Final) (minimal) my1 172.16.210.180 8306 172.16.210.183 2 mysql mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz my2 172.16.210.181 8306 3 keeplived keepalived-1.2.7.tar.g

mysql双主模式方案

在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mysql入口,增加高可用.不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题. 主从同步复制原理 在开始之前,我们先来了解主从同步复制原理. 复制分成三步: 1. master将改变记录到二进制日志(binary

keepalived+mysql双主

       mysql高可用keepalived+mysql双主 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,PXC,MMM,Heartbeat+DRBD等,比较常用的是keepalived+双主,MHA和PXC. 本节主要介绍了利用 keepalived 实现 MySQL 数据库的高可用. Keepalived+mysql双主来实现MySQL-HA,我们必须保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系,通过Keepalived配

通过KeepAlived搭建MySQL双主模式的高可用集群系统

企业级MySQL集群具备高可用.可扩展.易管理.低成本的特点.下面将介绍企业环境中经常应用的一个解决方案,即MySQL的双主互备架构,主要设计思路是通过MySQL Replication技术将两台MySQL Server互相将对方作为自己的Master,自己又同时作为对方的Slave来进行复制.这样就实现了高可用构架中的数据同步功能,同时,将采用KeepAlived来实现Mysql的自动failover.在这个构架中,虽然两台MySQL Server互为主从,但同一时刻只有一个MySQL Ser