mysql主从复制不同步案例_Mysql主从不同步问题处理案例
在使用Mysql的主从复制架构中,有两个比较头疼的问题:
1、主从数据不同步后如何处理
2、主从同步延迟问题如何解决
本文将根据实际案例来分析下问题1,至于问题2多数文档介绍的办法是启用多线程复制来解决,言归正传,这里的问题1还可以细分成两种情况。
1、Slave_IO_Running和Slave_SQL_Running在YES情况下,主从数据不同步如何处理?
2、Slave_SQL_Running在NO情况下,主从数据不同步如何处理?
出现第一种情况通常原因是手工去修改了从库的数据导致主从数据不一致,这种情况如果不及时处理,当主库也更新了对应的数据的时候,就会演变为第二种情况。
举个例子:
在一主一从的条件下,当前主从的数据是同步的。
人为去操作从库的某张表数据,本例中以asm_user表为演示,其中id字段为主键
mysql> insert into test.asm_user (id,name,salary) values (1,'a',10000);
当主库的这条数据未变动的时候,当前主从同步进程中Slave_IO_Running和Slave_SQL_Running还是为YES,目前只是asm_user这张表的数据不同步而已,对应其他schema上的数据还是会保持主从同步;
但如果这个情况,主库执行相同的SQL语句:
mysql> insert into test.asm_user (id,name,salary) values (1,'a',10000);
对应的SQL apply到从库的时候就会发现duplicate key,这个时候主从的同步就会停止掉。
# tail -f /home/mydata/localhost.localdomain.err
这种情况下,一般我们采用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
如果主从数据不一致则采用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库数据是一致的,目前主从同步这个错误是可以忽略的,因此我们采用跳过这个事务的办法来处理主从数据库不同步问题。通常在生产环境中,主库的数据是不断的更新的,这里我们在主从数据不同步的情况下在主库继续插入一条数据,方便后续验证。
下面我们开始处理主从不同步问题:
在未启用GTID复制的情况下采用下面的方法跳过事务:mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; //跳过一个事务
mysql>slave start;
Mysql5.6之后支持GTID复制,开启GTID复制的好处很多,具体可以百度一下!但当开启gtid后就不能采用前面那种办法来跳过事务。
在show slave status \G;输出中的最后几条里面,
Retrieved_Gtid_Set项:记录了relay日志从Master获取了binlog日志的位置
Executed_Gtid_Set项:记录本机执行的binlog日志位置(如果是从机,包括Master的binlog日志位置和slave本身的binlog日志位置)
我们要跳过事务的GTID在错误日志中有记录
# tail -f /home/mydata/localhost.localdomain.err
mysql> set session gtid_next='bd9e9912-2bc7-11e6-bade-000c29b8871c:1440';
mysql> begin;commit;
mysql> set session gtid_next=automatic;
mysql> start slave;
mysql> show slave status \G;
验证从库数据是否和主库一致
mysql> select * from test.asm_user;
前面模拟了Slave_SQL_Running在NO情况下,主从数据不同步情况的处理过程,在现实的环境中,往往情况要复杂的多,下面分享一则内存开发库因为断电导致主从数据不一致的故障处理:
1、因为电源故障,导致主从数据库全部宕机,电源恢复后,主库启动正常,从库无法启动,通过分析日志发现可能是电源故障导致从库的固态盘异常,许多的binlog文件权限出现???,这些文件甚至无法正常查看
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;
mysql主从复制不同步案例_Mysql主从不同步问题处理案例相关推荐
- mysql主从复制延时性问题_MySQL主从同步延迟原因及解决办法
MySQL主从延迟原因以及解决方案:谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作(mysql5.6版本之前),主库对所有DDL和D ...
- mysql的主从同步问题_mysql主从同步问题梳理
前言: MySQL主从复制故障机延迟原因有很多,之前详细介绍了Mysql主从复制的原理和部署过程,在mysql同步过程中会出现很多问题,导致数据同步异常.以下梳理了几种主从同步中可能存在的问题: 1) ...
- mysql 主从同步不一致_MySQL 主从同步延迟的原因及解决办法
mysql 用主从同步的方法进行读写分离,减轻主服务器的压力的做法现在在业内做的非常普遍. 主从同步基本上能做到实时同步.我从别的网站借用了主从同步的原理图. 在配置好了, 主从同步以后, 主服务器会 ...
- mysql主从复制、基于GTID的主从、半同步
使用的mysql版本5.7.17 一.主从复制 原理: 主从复制一共有三个进程,从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库的binlog,并将得到的binlog日志写到r ...
- mysql主从同步原理_mysql主从同步以及原理
mysql主从复制介绍 当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步. 实时和异步: 同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,My ...
- mysql主从 毫秒_MySQL主从数据库同步延迟问题解决(转)
最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务 ...
- 阿里云mysql主从有延迟怎么办_MySQL主从数据库同步延迟问题解决-阿里云开发者社区...
MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以 ...
- 阿里云mysql主从有延迟怎么办_MySQL主从数据库同步延迟问题解决
MySQL主从数据库同步延迟问题 摘要:MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主 ...
- mysql 同步方式_MYSQL 主从同步详解
关于MYSQL主从同步 什么是MYSQL的主从复制 主从复制是指将一个服务器作为主服务器,所有的数据更新操作都在主服务器进行,并且将主服务器的数据同步到一个或多个从服务器,保证从服务器和主服务器的数据 ...
最新文章
- 用 JavaScript 编写测试脚本
- iap如何初始化_IAP超级详解
- 绘制颜色渐变矩形函数
- 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目
- 戴尔看好Ubuntu超越Windows的十个优势
- [前台]---js重复上传一张图片两次,第二次失败的解决办法和思路
- shell-script(command groups)
- JS基础--组合继承,寄生组合式继承
- 浅谈闪电网络的可行性
- win10basic模式_BASIC的完整形式是什么?
- 多省市区“十四五”规划布局交通新基建
- html 透明玻璃效果,PS教程:制作透明玻璃效果(一)
- 光流与Lucas-Kanade 光流法
- 史玉柱:打造爆款消费品7大人性洞察,8个操作方法
- Taro项目中设置了设计稿尺寸
- win8/win10任务栏/语言栏跳动/闪烁
- 顶级数学家玩股票胜过巴菲特 被人建议改行(图)
- 《黄帝内经.生气通天论篇》不生病的智慧节选02
- python列表拆包_python元组拆包
- 服务器装系统步骤图解win7,win7 硬盘重装系统步骤图解|win7系统硬盘重装教程
热门文章
- 接口测试到底是什么?如何制造接口数据
- vb 获取汉字拼音的首字母
- 英语四级真题作文 计算机,2019年6月大学英语四级作文范文50例:电脑
- java调用dubbo服务器_dubbo源码分析-服务端注册流程-笔记
- 采用计算机辅助电话调查,计算机辅助电话调查(CATI)-实验.pdf
- c treelist绑定mysql_TreeList 绑数据
- 【离散数学中的数据结构与算法】三 同余定理
- 【C语言进阶深度学习记录】二十一 # 和 ## 号操作符的使用与分析
- 位运算 中度难度 子集
- Ubuntu安装完后设置root密码