关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】
刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正!
部分备份:
[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p -S /data/mysql3306/data/mysql3306.sock lyh2 >/home/backup/lyh2--`date +%Y%d%m`.sql
Enter password:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
检查部分备份文件内容:
出现了SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';
同时,备份的是指定库(没有像我猜想的会按照全局GTID,备份所有事物)
[root@localhost mysql]# less /home/backup/lyh2--.sql
-- MySQL dump 10.13 Distrib 5.7., for linux-glibc2. (x86_64)
--
-- Host: localhost Database: lyh2
-- ------------------------------------------------------
-- Server version 5.7.-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= ;
--
-- GTID state at the beginning of the backup
--
SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';
--
-- Table structure for table `tb2`
--
DROP TABLE IF EXISTS `tb2`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tb2` (
`id` int() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `tb2`
--
LOCK TABLES `tb2` WRITE;
/*!40000 ALTER TABLE `tb2` DISABLE KEYS */;
INSERT INTO `tb2` VALUES ();
/*!40000 ALTER TABLE `tb2` ENABLE KEYS */;
UNLOCK TABLES;
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
完整备份:
[root@localhost mysql]# /usr/local/mysql/bin/mysqldump -uroot -p -S /data/mysql3306/data/mysql3306.sock -A --master-data= --single-transaction >/home/backup/full--`date +%Y%d%m`.sql
Enter password:
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
检查完整备份文件内容:
依然出现了SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';
以及完整的数据备份
[root@localhost mysql]# less /home/backup/full--.sql
-- MySQL dump 10.13 Distrib 5.7., for linux-glibc2. (x86_64)
--
-- Host: localhost Database:
-- ------------------------------------------------------
-- Server version 5.7.-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= ;
--
-- GTID state at the beginning of the backup
--
SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';
--
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=;
--
-- Current Database: `lyh1`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `lyh1` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `lyh1`;
--
-- Table structure for table `t1`
--
DROP TABLE IF EXISTS `t1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
省略。。。。。
综上,无论是完整备份,还是部分备份,如果不设置 --set-gtid-purged=OFF 这个参数,最终的备份文件中会有这样一句话:SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-347';
这个的区间是主库中当前所完成的所有事务号。这条语句在备份被恢复的时候,起到的作用是,不再从主库同步1-347 这个范围内的事务了。
如果我们是部分备份,我们不应该阻止从库同步1-347全部区间的数据。因此部分备份是加上--set-gtid-purged=OFF 这句,不强行指定跳过这些操作。
根据上面实验可以看出,SET @@GLOBAL.GTID_PURGED 可以在从库指定跳过任何事物
那么,如果在从库恢复完数据备份,
SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-348';
指定到任意位置,如348,那么从库就会跳过348号以及以前的所有事物,认为已经同步完成。并且在show slave status 完全看不出空洞。
本例中从库只恢复到1-347号事务,没有开启同步时,主库执行了348,349号事务,由于从库设置了
SET @@GLOBAL.GTID_PURGED='5adbcab4-fcbb-11e7-a900-000c29e774f1:1-348';
从库再开启复制时,从库直接从349号事务开始同步,跳过348号事务,于是348号事务完美的丢失了,没有痕迹。
在从库show slave status
root@localhost:mysql3307.sock [lyh1] >show slave status\G
*************************** . row ***************************
。。。。。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
。。。。。
Retrieved_Gtid_Set: 5adbcab4-fcbb-11e7-a900-000c29e774f1:
Executed_Gtid_Set: 5adbcab4-fcbb-11e7-a900-000c29e774f1:-
通过
show master status; 记录已执行的事务号
reset master;
SET @@GLOBAL.GTID_PURGED='已执行的事务号';
可以设置多源复制
转自
关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验 - FireFly Club
http://q.fireflyclub.org/?/question/65
关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】的更多相关文章
- 使用mysqldump备份时为什么要加上 -q 参数(5.7默认为on)
使用mysqldump备份时为什么要加上 -q 参数(5.7默认为on) 写在前面:我们在使用mysqldump备份数据时,请一定记住要加上 -q 参数,后果可能是很严重的,不要给自己挖坑哦. 先来看 ...
- [Selenium]Grid模式下运行时打印出当前Case在哪台node机器上运行
当Case在本地运行成功,在Grid模式下运行失败时,我们需要在Grid模式下进行调试,同时登录远程的node去查看运行的情况. Hub是随机将case分配到某台node上运行的,怎样知道当前的cas ...
- MySQL Replication--开启GTID模式下匿名事务异常
错误环境: OS: CentOS release 6.5 (Final) MySQL: MySQL 5.7.19 主从参数配置: master_info_repository = TABLE rela ...
- 在线建立或重做mysql主从复制架构方法(传统模式和GTID模式)【转】
mysql主从复制架构,是mysql数据库主要特色之一,绝大多数公司都有用到. 而GTID模式是基于事务的复制模式的意思,发展到现在也是越来越多人用. 以前很多文章,介绍搭建mysql主从复制架构,是 ...
- MySQL MHA--故障切换模式(GTID模式和非GTID模式)
GTID和非GTID故障切换模式选择 MySQL 5.6版本引入GTID来解决主从切换时BINLOG位置点难定位的问题,MHA从0.56版本开始支持基于GTID的复制,在切换时可以采用GTID模式和非 ...
- MySQL 在线开启&关闭GTID模式
MySQL 在线开启&关闭GTID模式 目录 MySQL 在线开启&关闭GTID模式 基本概述 在线开启GTID 1. 设置GTID校验ENFORCE_GTID_CONSISTENCY ...
- sql server 备份与恢复系列五 完整模式下的备份与还原
一.概述 前面介绍了简单恢复模式和大容量恢复模式,这篇继续写完整恢复模式下的备份与还原.在完整恢复模式里最大的优点是只要能成功备份尾日志,就可以还原到日志备份内包含的任何时点("时点恢复&q ...
- sql server 备份与恢复系列四 大容量模式下的备份与还原
一. 概述 在sql server 备份与恢复系列的第一篇里,有讲到大容量模式下备份与还原的相关知识.这篇重点来演示在大容量模式下常用的备份与还原模式“完整备份+差异备份+日志备份”. 在大容量恢复模 ...
- 在线修改GTID模式
在线修改GTID模式 1. 在每一台机器上执行命令 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; 这是很重要的一步,必须确保服务器上没有违反GTID规范的 ...
随机推荐
- 【51NOD 1847】奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数)
[51NOD 1847]奇怪的数学题(莫比乌斯反演,杜教筛,min_25筛,第二类斯特林数) 题面 51NOD \[\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j)^k\] 其中\( ...
- KEIL中函数定义存在但go to definition却不跳转的原因
可能是 go to definition 函数的地方,被包含在一个未使能的条件编译宏内部,因为这样KEIL在编译时,就未将该条件编译宏内部的信息编译入工程的Browse Information.
- 洛谷 P1452 Beauty Contest 解题报告
P1452 Beauty Contest 题意 求平面\(n(\le 50000)\)个点的最远点对 收获了一堆计算几何的卡点.. 凸包如果不保留共线的点,在加入上凸壳时搞一个相对栈顶,以免把\(n\ ...
- Android 屏幕手势滑动中onFling()函数的技巧分析
关于如何处理手势操作以及那四个基本固定的顺序我就不讲解了,这里直接跳到我们获得瞬间滑动后回调onFling()这个抽象函数时,应该如何根据参数比较准确的判断滑动方向.如果你没有前面的基础知识,你可以去 ...
- C# ADO.NET基础&实战
什么是ADO.NET:数据库访问技术! 作用:通过程序来连接访问数据库! 一.基础: using System.Data.SqlClient; //数据库连接命名空间 string connec ...
- A1022. Digital Library
A Digital Library contains millions of books, stored according to their titles, authors, key words o ...
- struct字节对齐原则
原则1:windows下,k字节基本类型以k字节倍数偏移量对齐,自定义结构体则以结构体中最高p字节基本类型的p字节倍数偏移量对齐,Linux下则以2或4字节对齐; 原则2:整体对齐原则,例如数组结构体 ...
- ElasticSearch 索引整体迁移方案
以下都是经过实战验证过的!!! [前提]使用相同的版本 ElasticSearch-5.5.1,只不过是在不同的服务器之间且重跑数据相对来说代价比较高,这种情况下就可以使用一下这种方式对索引整体迁移 ...
- GTF文件
一.GTF文件格式 Fields must be tab-separated. Also, all but the final field in each feature line must cont ...
- python自动化运维之路~DAY4
python自动化运维之路~DAY4 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模块导入方式详解. 关于Python有几种导入模块的方式,请参考我的另外一篇博客(第20 ...