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元 ...
随机推荐
- 80C51串行口
串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度 单工.半双工.全双工 单工数据传输只支持数据在一个方向上传输 半双工数据传输允许数据在两个方向上传输,但是,在 ...
- Appium|Locator Strategy ... is not supported for this session
appim server log InvalidSelectorError: Locator Strategy 'xpath,//android.widget.TextView[@resource-i ...
- Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608
这个问题也是某天做一个上传文件功能发生的.然后在网上查找的资料,整理了这几个解决方案. 1.在application.yml文件中设置multipart location ,并重启项目 spring: ...
- nginx解决浏览器跨域问题
1.跨域问题 浏览器出于安全方面的考虑,只允许与本域下的接口交互.不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源. 例如访问www.test1.com 页面, 返回的文件中需要ajax向 ...
- Hadoop_27_MapReduce_运营商原始日志增强(自定义OutputFormat)
1.需求: 现有一些原始日志需要做增强解析处理,流程: 1. 从原始日志文件中读取数据(日志文件:https://pan.baidu.com/s/12hbDvP7jMu9yE-oLZXvM_g) 2. ...
- java线程基础巩固---策略模式在Thread和Runnable中的应用分析
在上篇[http://www.cnblogs.com/webor2006/p/7709647.html]中已经学习了Runnable出现的好处,其实这种设计是采用的一种策略模式,所以为了进一步理解Ru ...
- PAT乙级1037
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232 题解 还算简单,就是模拟我们在生活 ...
- 记录一下UILabel加载富文本 iOS
一般情况下我们都习惯用webview加载富文本.但是webview比较消耗内存.然后发现其实本身可以用uilabel加载,性能还不错就记录下~~ 核心方法下面两个 -(NSMutableAttribu ...
- laravel常用响应操作
- BZOJ 1036 [ZJOI2008]树的统计Count 动态维护树上求和与求最大值 LCT板题
模板,也可以用树链剖分+线段树做O(nlog2)O(nlog^2)O(nlog2) 用LCT做O(nlog)O(nlog)O(nlog)在乘上一个大于30的常数-然后LCT比树剖慢一倍- CODE # ...