mysql dump gtid_gtid环境下mysqldump对于set-gtid-purged的取值

gtid环境备份的时候,还在为set-gtid-purged=0|1的选择而烦恼吗,一起来分析一下。

[mysql@lxd-vm1@/home/mysql]$ mysqldump --help | grep 'set-gtid-purged' -A 10

--set-gtid-purged[=name]

Add'SET @@GLOBAL.GTID_PURGED'to the output. Possible

valuesfor this option are ON, OFF and AUTO. If ON isused and GTIDs are not enabled on the server, an errorisgenerated. If OFFis used, thisoption does nothing. If

AUTOis used and GTIDs are enabled on the server, 'SET

@@GLOBAL.GTID_PURGED'is added to the output. If GTIDs

are disabled, AUTO does nothing. If no value issupplied

then thedefault (AUTO) value will be considered.

从命令提供的注释中可以看出,其实该参数有3种取值:

控制是否在备份文件中添加SET @@GLOBAL.GTID_PURGED语句。

1. set-gtid-purged=0|off 不添加。

2. set-gtid-purged=1|on 如果gtid没有开启,则报错;如果开启gtid,则添加。

3. 如果没有提供set-gtid-purged,默认是auto,如果gtid没有开启,不添加;如果开启gtid,则添加。

mysqldump -h5.5.5.101 -uroot -proot --single-transaction --set-gtid-purged=off lxddb t1 >lxddb_t1.sql

[mysql@lxd-vm1@/home/mysql]$ egrep -v '^$|^--|^/'lxddb_t1.sql

DROP TABLE IF EXISTS `t1`;

CREATE TABLE `t1` (

`i1`int(11) NOT NULL DEFAULT '0',

`i2`int(11) NOT NULL DEFAULT '0',

`d` date DEFAULT NULL,

PRIMARY KEY (`i1`,`i2`),

KEY `k_d` (`d`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `t1` WRITE;

INSERT INTO `t1` VALUES (3,1,'1998-01-01'),(3,2,'1999-01-01'),(3,3,'2000-01-01'),(3,4,'2001-01-01'),(3,5,'2002-01-01');

UNLOCK TABLES;

[mysql@lxd-vm1@/home/mysql]$

mysqldump -h5.5.5.101 -uroot -proot --single-transaction --set-gtid-purged=on lxddb t1 >lxddb_t1.sql

[mysql@lxd-vm1@/home/mysql]$ egrep -v '^$|^--|^/'lxddb_t1.sql

SET @MYSQLDUMP_TEMP_LOG_BIN=@@SESSION.SQL_LOG_BIN;

SET @@SESSION.SQL_LOG_BIN= 0;

SET @@GLOBAL.GTID_PURGED='84e06268-dfa5-11e7-b0bc-080027a59108:1-2';

DROP TABLE IF EXISTS `t1`;

CREATE TABLE `t1` (

`i1`int(11) NOT NULL DEFAULT '0',

`i2`int(11) NOT NULL DEFAULT '0',

`d` date DEFAULT NULL,

PRIMARY KEY (`i1`,`i2`),

KEY `k_d` (`d`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

LOCK TABLES `t1` WRITE;

INSERT INTO `t1` VALUES (3,1,'1998-01-01'),(3,2,'1999-01-01'),(3,3,'2000-01-01'),(3,4,'2001-01-01'),(3,5,'2002-01-01');

UNLOCK TABLES;

SET @@SESSION.SQL_LOG_BIN=@MYSQLDUMP_TEMP_LOG_BIN;

[mysql@lxd-vm1@/home/mysql]$

结论:

我们备份,就是可能需要拿来进行恢复,是在master上恢复,还是slave上恢复。

如果是在master上进行恢复,那么就需要生成对应的gtid,所以需要使用set-gtid-purged=off

如果是在slave上进行恢复,那么不需要生成对应的gtid,所以需要使用set-gtid-purged=on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值