mysql使用GTID跳过事务
GTID跳过有两种方法,一种是普通的跳过一个事务的方法,另外一个是在基于主库搭建新的slave的时候.
一、普通跳过一个事务的方法。
通过show slave status\G找到冲突的GTID号.
然后执行
SET gtid_next = '冲突的GTID号';
BEGIN;COMMIT;
SET gtid_next = 'AUTOMATIC';
START SLAVE;
这就可以跳过一个事务了,原理在于通过执行一个空事务代替master传递过来的冲突事务.
二、通过备份的dump.sql文件搭建新的slave.
开启gtid以后,使用mysqldump备份,一般系统会要求你使用–all-databases参数,避免主库和从库有部分数据不一致。
备份以后,dump.sql里面会有这样一条语句.
SET @@GLOBAL.GTID_PURGED='0140505e-4230-11e4-b7c9-000c29da163d:1-8,dd079e18-4244-11e4-b851-000c29da163e:1-2';
这个就是当前主库已经执行过的GTID,也就是dump.sql里面的数据已经包含的GTID,对于这些GTID,slave是不用执行了,所以我们需要设置slave从这些
GTID以后开始复制.方法就是上面这条sql.
将dump.sql直接导入到slave以后.就可以直接change master了.
如果你是想通过这个方法跳过某个或者某些GTID,那么有点不同了.
set @@GLOBAL.GTID_PURGED是有要求的,也就是GTID_PURGED必须为空才可以设置,如何把GTID_PURGED清空呢.也就是需要执行
(root:hostname)[test]> show global variables like '%gtid%';
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+
| enforce_gtid_consistency | ON |
| gtid_executed | 0140505e-4230-11e4-b7c9-000c29da163d:1-25,
dd079e18-4244-11e4-b851-000c29da163e:1-2,
dda2f003-4244-11e4-b851-000c29da163f:1-3 |
| gtid_mode | ON |
| gtid_owned | |
| gtid_purged | 0140505e-4230-11e4-b7c9-000c29da163d:1-8,
dd079e18-4244-11e4-b851-000c29da163e:1-2 |
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------+
5 rows in set (0.00 sec) (root:hostname)[test]> reset master;
Query OK, 0 rows affected (0.02 sec) (root:hostname)[test]> show global variables like '%gtid%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON |
| gtid_executed | |
| gtid_mode | ON |
| gtid_owned | |
| gtid_purged | |
+--------------------------+-------+
5 rows in set (0.00 sec)
(root:hostname)[test]> stop slave; //清掉SLAVE信息.
(root:hostname)[test]> reset slave all;
然后设置gtid_purged,这个ID就是你要跳过过的GTID,注意这里GTID还要包含gtid_executed里面其他UUID的GTID(本机的可以不再设置了)。
(root:hostname)[test]> set @@global.gtid_purged='0140505e-4230-11e4-b7c9-000c29da163d:1-25,dd079e18-4244-11e4-b851-000c29da163e:1-2';
Query OK, 0 rows affected (0.03 sec) (root:hostname)[test]> CHANGE MASTER TO MASTER_HOST='192.168.153.150', MASTER_PORT=3306, MASTER_USER='slave',MASTER_PASSWORD='slave', master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.20 sec) (root:hostname)[test]> start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)
CHANGE MASTER TO MASTER_HOST='192.168.1.136', MASTER_PORT=3306, MASTER_USER='dbadmin',M
mysql使用GTID跳过事务的更多相关文章
- mysql开启GTID跳过错误的方法【转】
1.数据库版本 MySQL> select version() -> ;+-------------------------------------------+| version( ...
- Mysql基于GTID主从复制
Mysql5.6基于GTID全局事务的复制 什么是GTID? GTID(Global Transaction Identifiers)是全局事务标识 当使用GTIDS时,在主上提交的每一个事务都会 ...
- Mysql基于GTID复制模式-运维小结 (完整篇)
先来看mysql5.6主从同步操作时遇到的一个报错:mysql> change master to master_host='192.168.10.59',master_user='repli' ...
- MySQL 使用GTID进行复制
MySQL 使用GTID进行复制 1. GTID的格式和存储 1.1 GTID 集 1.2 mysql.gtid_executed 表 1.3 mysql.gtid_executed 表压缩 2. G ...
- Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记
GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...
- MySQL的GTID复制与传统复制的相互切换
MySQL的GTID复制与传统复制的相互转换 1. GTID复制转换成传统复制 1.1 环境准备 1.2 停止slave 1.3 查看当前主从状态 1.4 change master 1.5 启动主从 ...
- 腾讯云TDSQL MySQL版 - 开发指南 分布式事务
由于事务操作的数据通常跨多个物理节点,在分布式数据库中,类似方案即称为分布式事务. TDSQL MySQL版 支持普通分布式事务协议和 XA 分布式事务协议.TDSQL MySQL版(内核5.7或以上 ...
- mysql源码解读之事务提交过程(二)
上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...
- 解决mysql开启GTID主从同步出现1236错误问题【转】
最近遇到mysql开启gtid做复制时,从库出现1236错误,导致同步无法进行,本文就这问题记录下处理步骤,有关gtid知识在这里不做介绍,mysql版本为5.7.16. 一.错误原因分析 错误信息如 ...
随机推荐
- jQuery补充之jQuery扩展/form表单提交/滚动菜单
jQuery扩展 为了避免重复造轮子,能高效使用别人的代码,所以有了扩展. jQuery扩展有两种方式: 自执行函数方式 定义函数,并执行函数. 自执行函数: (function(jq){ jq.ex ...
- scala的wordcount
import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.SparkSession object Wo ...
- 深入理解隐马尔可夫(HMM)模型
1.安装依赖包hmmlearn 直接pip install hmmlearn可能会报错(安装这个模块需要使用C环境编译) 可以尝试用 conda install -c omnia hmmlearn安装 ...
- 【Kail 学习笔记】自用KAIL更新源
打开 /etc/apt/source.list 添加-保存即可 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contr ...
- golang 日志模块(log)
log 日志 log 模块可以自定义log 对象, 也可以使用log默认对象的日志方法 func New 创建log对象 func New(out io.Writer, prefix string, ...
- WEB前端动态背景集
本资源是我在源代码网站上发现的,内附几十种背景动态特效,我单独提取出来精品背景特效在此分享,文件里有20多种精品动态效果,本人觉得可用作于个人博客主页背景,登陆页面背景等,有20多个背景特效,非常漂亮 ...
- Direct2D 学习笔记(3)图层 Layer
利用图层Layer绘制资源网址:https://docs.microsoft.com/zh-cn/windows/win32/direct2d/direct2d-layers-overview 1 ...
- 17-js观察者模式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 记录项目中easyui的运用
1.实现合并列,且文字显示居左,背景为固定颜色 效果图: 实现代码: $('#tab').datagrid({ title : '', //表格标题 iconCls : 'icon-list', // ...
- Python中logging在多进程环境下打印日志
因为涉及到进程间互斥与通信问题,因此默认情况下Python中的logging无法在多进程环境下打印日志.但是查询了官方文档可以发现,推荐了一种利用logging.SocketHandler的方案来实现 ...