MySQL使用空事务解决slave从库errant问题
MySQL集群一般部署为主从架构,主库专门用于写入数据,从库用于读数据。
异常情况下,在从库上写入数据,就会出现主从数据不一致问题,称为errant。
如果从库上的这些数据主库上已经有了,或者主库不需要这些数据,我们就可以使用空事务解决errant问题。
接下来,本文介绍如何使用空事务解决errant问题。
首先查看主库的GTID集合:
>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 7685
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:1-17,
c84e52d2-c2fa-11e9-9b19-002211f26ad8:1,
dea2c515-c2fa-11e9-9eef-0022a6d40ab9:1-6
1 row in set (0.00 sec)
查看从库的GITD集合:
>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 9783
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:1-23,
c84e52d2-c2fa-11e9-9b19-002211f26ad8:1,
dea2c515-c2fa-11e9-9eef-0022a6d40ab9:1-6
1 row in set (0.02 sec)
找到主库从库的差异:
b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:18-23
这些GTID是主库上没有的。
在主库上使用空事务进行补齐:
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:18';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.00 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:19';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.01 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:20';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.01 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:21';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.01 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:22';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.01 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:23';
Query OK, 0 rows affected (0.00 sec)
>BEGIN;
Query OK, 0 rows affected (0.01 sec)
>COMMIT;
Query OK, 0 rows affected (0.00 sec)
>SET GTID_NEXT='AUTOMATIC';
Query OK, 0 rows affected (0.00 sec)
最后,查看主库上的GTID集合:
>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 9783
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: b7a7c5c5-c2fa-11e9-8bd0-0022bf5315f2:1-23,
c84e52d2-c2fa-11e9-9b19-002211f26ad8:1,
dea2c515-c2fa-11e9-9eef-0022a6d40ab9:1-6
1 row in set (0.02 sec)
可以看到,事务集合已经补齐。
MySQL使用空事务解决slave从库errant问题的更多相关文章
- MySql不支持事务解决
用的是一个绿色版的mysql数据库,发现不支持事务,在网络上搜集资料找到解决方案: 1.执行语句 SHOW ENGINES; 如果发现InnoDB全部显示为“YES”,说明该版本的数据库支持事务 2 ...
- windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致
原文:windows 系统本地做mysql 主从同步,最后面解决主从同步库名不一致,表结构一致 mysql主从同步的好处以及原理 之前看到很多新闻说某某的服务器奔溃,磁盘碎了,导致数据丢失 ...
- paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
paip.导入数据英文音标到数据库mysql为空的问题之道解决原理 #---原因:mysql 导入工具的bug #---解决:使用双引号不个音标括起来. 作者 老哇的爪子 Attilax 艾龙, E ...
- MySQL 空事务
问题描述; 研发同事反应MySQL数据库有锁,检查innodb_trx时,发现有很多长时间未结束的空事务. 这些事务的trx_mysql_thread_id都为0,因此不能通过kill ...
- MySQL 采用Xtrabackup对数据库进行全库备份
1,xtrabackup简介 关于数据库备份以及备份工具,参考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经如 ...
- MySQL数据库分布式事务XA优缺点与改进方案
1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...
- MySQL笔记(7)---事务
1.前言 前面具体讲了MySQL中的锁实现的方式,解释了是如何保证数据在并发情况下的可靠性,并提到了事务REPETABLE READ和READ COMMITTED,解释了一下这两种事务的不同.本章讲具 ...
- Mysql 的InnoDB事务方面的 多版本并发控制如何实现 MVCC
Mysql的MVCC不能解决幻读的问题,但是Mysql还有间隙锁功能,Mysql的间隙锁工作在Repeatable Read隔离级别下面,可以防止幻读, 参考:Mysql 间隙锁原理,以及Repeat ...
- 【转】全面了解Mysql中的事务
为什么要有事务? 事务广泛的运用于订单系统.银行系统等多种场景.如果有以下一个场景:A用户和B用户是银行的储户.现在A要给B转账500元.那么需要做以下几件事: 1. 检查A的账户余额>500元 ...
随机推荐
- 3.web开发入门知识
/*web入门*/ /*互联网上常用的协议以及它的端口*/ http 80 http://localhost/ 相当于 http://localhost:80/ http协 ...
- 解决WinForm屏幕缩放适配只需修改两个Form的两个属性
最近要做一个windows下截屏识别文字的程序,调试发现截取的图像显示不完整. 输出了Screen.PrimaryScreen.Bounds.Width获取的值,结果与实际分辨率不同,所以确定了与我的 ...
- 【坑】Mybatis原始获取配置方式,获取配置失败
错误环境: mysql版本:6.0.6 mybatis 3.4.1 idea 2017.1.2 maven 3.5.0 错误描述: 配置经路径见图1,classpath是java文件夹 获取配置的代码 ...
- 《浏览器工作原理与实践》<06>渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
在上篇文章中,我们介绍了渲染流水线中的 DOM 生成.样式计算和布局三个阶段,那今天我们接着讲解渲染流水线后面的阶段. 这里还是先简单回顾下上节前三个阶段的主要内容:在 HTML 页面内容被提交给渲染 ...
- 并发编程: 生产消费模型、死锁与Rlock、线程、守护线程、信号量、锁
一.守护进程 二.互斥锁 三.抢票 四.进程间通讯 五.进程间通讯2 一.守护进程 """ 进程间通讯的另一种方式 使用queue queue 队列 队列的特点: 先进的 ...
- wlan相关查询命令
1.查看当前连接的设备 hostapd_cli all_sta
- 快速排序详解(lomuto划分快排,hoare划分快排,classic经典快排,dualpivot双轴快排源码)
目录 快速排序(lomuto划分快排,hoare划分快排,classic经典快排,dualpivot双轴快排) 一.快速排序思想 二.划分思想 三.测试用例 快速排序(lomuto划分快排,hoare ...
- Girls Like You--Maroon 5
Girls Like You Spent 24 hours, I need more hours with you (24小时过去 还想和你 相处更久) You spent the weekend g ...
- 查看tensorflow Pb模型所有层的名字
代码如下: import tensorflow as tf def get_all_layernames(): """get all layers name"& ...
- java学习笔记12-继承
继承就是子类继承父类的特征和行为 有时候单一划分某个类别并不能处理所有情况,某些类别下有明显不同的子类,这些子类虽然拥有类似的行为和属性,但是他们各自发生的这些行为的方式或者属性对某些结果的影响是不一 ...