zoukankan      html  css  js  c++  java
  • X GTID环境下mysqldump set-gtid-purged取值


    $ mysqldump --help | grep 'set-gtid-purged' -A 10 --set-gtid-purged[=name] Add 'SET @@GLOBAL.GTID_PURGED' to the output.

    Possible values for this option are ON, OFF and AUTO.
    If ON is used and GTIDs are not enabled on the server, an error is generated. If OFF is used, this option does nothing.
    If AUTO is 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 is supplied then the default (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,则添加。 如果 set-gtid-purged=1 在mysqldump文件中会有两条 SET @@SESSION.SQL_LOG_BIN= 0; SET @@GLOBAL.GTID_PURGED='85e07268-dfa5-12e7-b0bc-080027a59108:1-2'; 这样导入时可能造成主备不一致情况。 所以,对GTID使用mysqldump 要注意 set-gtid-purged的指定 出自: https://www.cnblogs.com/yiyuf/p/4673714.html https://www.cnblogs.com/imdba/p/10120752.html

    ==============================================================================================================

    文档二:

    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
                          values for this option are ON, OFF and AUTO. If ON is
                          used and GTIDs are not enabled on the server, an error is
                          generated. If OFF is used, this option does nothing. If
                          AUTO is 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 is supplied
                          then the default (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

  • 相关阅读:
    面试官没想到一个Volatile,我都能跟他扯半小时
    面试官:你经历过数据库迁移么?有哪些注意点和难点?
    【逼你学习】让自制力提升300%的时间管理方法、学习方法分享
    面试官:说一下内存溢出排查过程和工具?我...
    大厂需求研发流程,进去前了解一波?
    面试必问:分布式锁实现之zk(Zookeeper)
    Redis之分布式锁实现
    大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
    【面经分享】互联网寒冬,7面阿里,终获Offer,定级P6+
    我找到了Dubbo源码的BUG,同事纷纷说我有点东西
  • 原文地址:https://www.cnblogs.com/chendian0/p/14549827.html
Copyright © 2011-2022 走看看