mysql主从复制不同步案例_Mysql主从不同步问题处理案例

在使用Mysql的主从复制架构中,有两个比较头疼的问题:

1、主从数据不同步后如何处理

2、主从同步延迟问题如何解决

本文将根据实际案例来分析下问题1,至于问题2多数文档介绍的办法是启用多线程复制来解决,言归正传,这里的问题1还可以细分成两种情况。

1、Slave_IO_Running和Slave_SQL_Running在YES情况下,主从数据不同步如何处理?

2、Slave_SQL_Running在NO情况下,主从数据不同步如何处理?

出现第一种情况通常原因是手工去修改了从库的数据导致主从数据不一致,这种情况如果不及时处理,当主库也更新了对应的数据的时候,就会演变为第二种情况。

举个例子:

在一主一从的条件下,当前主从的数据是同步的。

47bc5a49d1fe4b24678a28711a68984a.png

人为去操作从库的某张表数据,本例中以asm_user表为演示,其中id字段为主键

mysql> insert into test.asm_user (id,name,salary) values (1,'a',10000);

36ae7ee9a6b71d8102df434994351674.png

当主库的这条数据未变动的时候,当前主从同步进程中Slave_IO_Running和Slave_SQL_Running还是为YES,目前只是asm_user这张表的数据不同步而已,对应其他schema上的数据还是会保持主从同步;

但如果这个情况,主库执行相同的SQL语句:

mysql> insert into test.asm_user (id,name,salary) values (1,'a',10000);

ee271c1711d865f8753cb7cedc61a1eb.png

对应的SQL apply到从库的时候就会发现duplicate key,这个时候主从的同步就会停止掉。

2a9af2ddaec5b8fbc134fb6411347785.png

# tail -f /home/mydata/localhost.localdomain.err

8b4e2f4010f801788f084309a1abd612.png

这种情况下,一般我们采用maatkit工具来校验主从数据库的数据差异情况。

这个办法其实回答了前面的问题1,Slave_IO_Running和Slave_SQL_Running在YES情况下,主从数据不同步如何处理?# yum -y install perl-TermReadKey

# wget ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/maatkit-7540.tar.gz

# tar -zxvpf maatkit-7540.tar.gz

# cd maatkit-7540

# perl Makefile.PL

# make && make install

# mk-table-checksum h=192.168.115.6,u=root,p=123456,P=3306  \

h=192.168.115.7,u=root,p=123456,P=3306 -d test | mk-checksum-filter

# mk-table-checksum h=192.168.115.6,u=root,p=123456,P=3306 \

h=192.168.115.7,u=root,p=123456,P=3306 -d test

febd67e473af4d2441de465b3f0f2279.png

如果主从数据不一致则采用mk-table-sync进行数据同步# mk-table-sync --execute --print --no-check-slave --transaction --databases test  \

h=192.168.115.6,u=root,p=123456 h=192.168.115.7,u=root,p=123456

很明显当前test库数据是一致的,目前主从同步这个错误是可以忽略的,因此我们采用跳过这个事务的办法来处理主从数据库不同步问题。通常在生产环境中,主库的数据是不断的更新的,这里我们在主从数据不同步的情况下在主库继续插入一条数据,方便后续验证。

0634ce04a08f30eebfc5ec7601cc7c93.png

下面我们开始处理主从不同步问题:

在未启用GTID复制的情况下采用下面的方法跳过事务:mysql>slave stop;

mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;  //跳过一个事务

mysql>slave start;

Mysql5.6之后支持GTID复制,开启GTID复制的好处很多,具体可以百度一下!但当开启gtid后就不能采用前面那种办法来跳过事务。

7e162578a9173cf348d34215d4800e29.png

在show slave status \G;输出中的最后几条里面,

Retrieved_Gtid_Set项:记录了relay日志从Master获取了binlog日志的位置

Executed_Gtid_Set项:记录本机执行的binlog日志位置(如果是从机,包括Master的binlog日志位置和slave本身的binlog日志位置)

25c2b1155aee9ff0912063f2889fd887.png

我们要跳过事务的GTID在错误日志中有记录

# tail -f /home/mydata/localhost.localdomain.err

7e88f995979ea695f1d5d12c9a361073.pngmysql> set session gtid_next='bd9e9912-2bc7-11e6-bade-000c29b8871c:1440';

mysql> begin;commit;

mysql> set session gtid_next=automatic;

63836d4c2fab5cbd0edfc75ef8094b7b.pngmysql> start slave;

mysql> show slave status \G;

3644239d1224bf30e35569b5b3e198b7.png

验证从库数据是否和主库一致

mysql> select * from test.asm_user;

2e0cf35ce07fc526a73ba445d19f57ff.png

前面模拟了Slave_SQL_Running在NO情况下,主从数据不同步情况的处理过程,在现实的环境中,往往情况要复杂的多,下面分享一则内存开发库因为断电导致主从数据不一致的故障处理:

1、因为电源故障,导致主从数据库全部宕机,电源恢复后,主库启动正常,从库无法启动,通过分析日志发现可能是电源故障导致从库的固态盘异常,许多的binlog文件权限出现???,这些文件甚至无法正常查看

cccde0fab8a02ca66865a9f8be30ccd3.png

1、通过fsck -y进行文件系统校验修复坏块,修复完成后从库数据库可以启动,但开启复制进程的时候报中继日志丢失

2、在没有办法的情况下,采用主库dump数据,从库重新source的办法在线重做主从数据同步。整个操作过程中,主库的数据不断的写入。

下面是大致的步骤:

3.1、主库导出全库数据,注意一定要使用--single-transaction参数

# /usr/local/mysql/bin/mysqldump --all-databases --single-transaction --triggers --routines > /tmp/1.sql

3.2、将备份文件拷贝到从库进行source

3.3、开启从库的复制进程

mysql>change master to master_host='192.168.1.15',

master_user='rep1',master_password='123456',MASTER_AUTO_POSITION=1;

mysql>start slave;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3.6生成exe_Python 3.6打包成EXE可执行程序的实现

1、下载pyinstaller python 3.6 已经自己安装了pip,所以只需要执行 pip install pyinstaller就可以了2、打包程序 进入到你你需要打包的目录;比如我在H:\xcyk开始打包,执行pyinstaller xxx.py我们发现,竟然报错!&#…

opencvpython教程百度云资源_Python+OpenCV图像处理入门,视频教程下载

课程介绍: 李老师讲课生动、深入浅出,出版OpenCV编程案例详解、Python-OpenCV图穷录、MATLAB图像处理、MATLAB图像案例教程等在线课程。 本课程系统概括了Python-OpenCV的使用方法,让学习者快速入门。根据本课程规划的图书《Python-OpenCV图穷…

将结构体写入文件_将COCO检测结果写入json文件

最近很多朋友留言问我如何将检测结果写入json文件并且用于COCO API的评估,之前对于检测结果的格式已经做了简单的说明,这里提供一些简单的函数,直接调用将结果写入即可。用于COCO API测试的文件格式HUST小菜鸡:用于COCO API测试的…

js for循环_JS 函数的执行时机(深入理解6个6)

定时器:setTimeout()setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式提示: 1000 毫秒 1 秒。 提示: 如果你只想重复执行可以使用 setInterval() 方法。 提示: 使用 clearTimeout() 方法来阻止函数的执行。语法&#x…

OCLint+Xcode 代码规范利器

很多公司里面都会强调代码规范的问题,开发者也都知道代码规范的好处。可实际开发中往往因为各种原因使我们把它的优先级不知不觉中降低了。  这里向一个有代码追求和洁癖的程序猿推荐一个分析工具,它可以成为你重构代码或着review的基本规则 OCLint是一…

MySQL求类型为GX的平均积分_mysql基本操作

一、连接操作格式:mysql-h主机地址 -u用户名 -p用户密码例:连接到远程主机上的mysql假设远程主机的IP为:110.110.110.110用户名为root,密码为abcd123则键入以下命令:mysql-h110.110.110.110-uroot-pabcd123二、用户级操作1、selec…

k均值聚类算法优缺点_Grasshopper实现K均值聚类算法

本文很长很长,有很多很多图,包含以下部分:1.算法简介2.如何分类平面点3.如何分类空间点4.如何分类多维数据5.后记提醒:以下内容包括:智障操作,无中生友,重复造轮子 等1.算法简介k均值聚类算法&a…

fullgc频繁的原因_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排…

WEKA “Detailed Accuracy By Class”和“Confusion Matrix”含义

原文 Summary (总结)Correctly Classified Instances(正确分类的实例) 45 90 %Incorrectly Classified Instances (错误分类的实例) 5 10 %Kappa …

es删除数据_面试官是怎么来考察你对ES搜索引擎的理解?

来源:http://1t.click/ZdY一. 面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是…

一个分布式服务器集群架构方案

0x01.大型网站演化 简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。 集群主要分为:高可用集群(High Availability Cluster),负载均衡集群(Load Balance Cluster&…

python数据预处理_Python数据预处理——缺失值、重复值

一、缺失值处理 isnull( ) 、fillna( ) 、dropna( )(1)查看缺失查看数据集缺失,返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[df.a.isnull()] 查看某字段每行的缺失情况:返回T/F:df.score.isnull() …

vb如何测试连接mysql_VB怎么连接访问Access数据库?

VB是我们常常会见到的一款可视化程序设计语言,它的功能十分强大,因此有很多人会使用它,但是有时候我们需要用到VB来连接Access数据库,但是却无从下手,那么VB怎么连接访问Access数据库呢?不懂的朋友请看以下…

textarea如何在文字后面_FLASH如何制作风吹文字的效果

使用动作补间动画可以制作各种各样的动态效果,树叶飘落、蝴蝶飞舞等。这里再使用引导层动画结合动作补间动画制作风吹文字飞起的效果。主要知识点:引导层动画、动作补间动画FLASH如何制作树叶飘落​jingyan.baidu.comFlash如何制作飞舞的蝴蝶​jingyan.b…

ef mysql 外键 一对一_EFCore-一对一配置外键小记2

前后两次遇到这样的错误:The property xx on entity type xxxx has a temporary value. Either set a permanent value explicitly or ensure that the database is configured to generate values for this property.多数情况下是表配置关系会出现这样的问题。我实…

矩阵快速幂 HDU3483

1 #include <iostream>2 #include <cstring>3 4 using namespace std;5 6 //矩阵大小上限7 const int SIZ100;8 int MOD;9 10 //矩阵大小为n*m&#xff0c;初始化全部为011 struct mat12 {13 int n,m;14 long long ar[SIZ][SIZ];15 mat()16 {17 …

哲学家就餐问题python_Python实现哲学家就餐问题实例代码

哲学家就餐问题&#xff1a; 哲学家就餐问题是典型的同步问题&#xff0c;该问题描述的是五个哲学家共用一张圆桌&#xff0c;分别坐在五张椅子上&#xff0c;在圆桌上有五个盘子和五个叉子&#xff08;如下图&#xff09;&#xff0c;他们的生活方式是交替的进行思考和进餐&am…

fpga摄像头模块_FPGA开源项目:双目测距(一)之双目图像采集显示以及图片保存...

1.简述这个项目是大三下学期暑假(也就是2019年8份)完成的&#xff0c;当时的视频效果已发布在bilibili上&#xff0c;这是我们的省级的科研立项&#xff0c;其实就我一个人负责完成。发布bilibili后很多人比较感兴趣&#xff0c;打算年初回学校完成毕设期间开源的&#xff0c;一…

github ssh 配置_Github远程仓库克隆更新本机,SSH协议免密操作配置和注意事项

Github远程仓库-克隆远程仓库到本机 【重点】目标如何克隆远程仓库到本机呢&#xff1f;小结下载项目的命令&#xff1a;git clone https://gitee.com/kekesam/sassweb777.git注意&#xff1a;1&#xff1a;它会自动创建本地仓库&#xff1b;2&#xff1a;它也会自动和远程仓库…

golang中文文档_【译】Go 语言源码贡献官方指导文档

以前给 Go 语言项目源码提交过一些 commits&#xff0c;期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考&#xff0c;因为最近又提交了几个 commits&#xff0c;就又把这篇文档再看了一遍&#xff0c;有感于 Go 团队在项目管…