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,一经查实,立即删除!

相关文章

九度oj题目1518:反转链表

题目1518:反转链表 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2567 解决:948 题目描述:输入一个链表,反转链表后,输出链表的所有元素。(hint : 请务必使用链表) 输…

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

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

登录mysql时 未找到 grant命令_我在mysql数据库中可以登陆,为什么用grant命令创建用户时提示错误?...

问题表象:我的mysql中的 my.ini文件配置:[csharp] view plaincopyprint?#Path to installation directory. All paths are usually resolved relative to this.basedir"D:/software_builder/mysql/"#Path to the database rootdatadir"C…

在 Apex 代码中生成 csv 文件

在 Apex 代码中生成 csv 文件可以写一个 Visualforce 页面,设定类型为 excel 的格式,然后调用 PageReference 的 getContent()方法来获取 Blob 格式,存放在附件。 不过另一种更简单的方式就是拼接字符串,csv 即逗号分隔值&#xf…

python实现五大基本算法_算法基础:五大排序算法Python实战教程

排序是每个算法工程师和开发者都需要一些知识的技能。 不仅要通过编码实现,还要对编程本身有一般性的了解。 不同的排序算法是算法设计如何在程序复杂性,速度和效率方面具有如此强大影响的完美展示。 让我们来看看前6种排序算法,看看我们如何…

将10进制整数转换成16进制整数输出

题意&#xff1a; 把十进制整数转换为十六进制&#xff0c;格式为0x开头&#xff0c;10~15由大写字母A~F表示。 Input 每行一个整数x&#xff0c;0< x < 2^31。 Output 每行输出对应的八位十六进制整数&#xff0c;包括前导0。 案例输出&#xff1a; Sample Input 0 1023…

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

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

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

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

LR通过SiteScope监控mysql

SiteScope下载&#xff0c;安装 要想使用LoadRunner监测MySQL数据库的性能&#xff0c;LoadRunner没有提供直接监测 MySQL的功能&#xff0c;所以&#xff0c;我们需要借助sitescope监控&#xff0c;然后在LoadRunner显示sitescope监测结果&#xff0c;这样间接地监控MySQL性能…

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

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

OCLint+Xcode 代码规范利器

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

python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

# coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding(utf8) # print os.getcwd() # 有些文件夹下面有很多文件夹&#xff0c;每个文件夹下面有很多视频文件&#xff0c;现在通过脚本&#xff0c;将文件夹下面的所有文件转移到一个目录下面 …

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

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

PC-红警联机问题与下载

或许不是软件问题&#xff1a; 你做好相关设置了吗&#xff1f; 红警局域网联机的具体方法: 适用于原版红警、尤里复仇&#xff0c;及任何同样的扩展版。 第一步&#xff1a;安装IPX协议。 方法&#xff1a; 控制面板——网络连接&#xff08;或网上邻居属性&#xff09;——本…

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

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

ip地址异常判定python_python检测异常ip,并查询ip详细信息

#!/usr/local/bin/python3# coding:utf-8import string, subprocess, send_mailfrom time import strftime, gmtime, sleep, reimport urllib.request, redef filter_tags(htmlstr):re_cdata re.compile(//]*//\]\]>, re.I) # 匹配CDATAre_script re.compile(]*>[^, re…

保持充沛的精力

转载的&#xff1a;原文地址&#xff1a;http://www.cnblogs.com/siylz/p/4589134.html不管我们做大事还是小事&#xff0c;最需要的是精力。一个人有了充沛的精力&#xff0c;干什么大事都不成问题。可是有不少人往往把他们那宝贵的精力胡乱挥橄在那些走无意义、自讨苦吃的事情…

php while mysql_我怎么能避免在PHP的While循环中使用MySQL查询

我有一个输出类列表的while循环.在类数据库中,教师名称由用户数据库中的教师ID确定.这是我的数据库结构.Classes Database-----------------------------ID CLASS TEACHER1 product design 3User Database-----------------------------ID NAME3 John Doe因此,当列出我的类时,我…

Jq_网站顶部定时折叠广告

<!DOCTYPE html><html xmlns"http://www.w3.org/1999/xhtml"><head><title>网页顶部定时收起广告jQuery特效 - HoverTree</title><base target"_blank" /><style>a {color:blue;text-decoration:none;}</sty…

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

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