时间:2021-07-01 10:21:17 帮助过:5人阅读
===============================================
mysqldump与gtid-purged
当使用--all-databases + --triggers --routines --events导出脚本时,会在导出脚本中包含:
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
--
-- GTID state at the beginning of the backup
--
SET @@GLOBAL.GTID_PURGED=‘3a8d8f51-feab-11e8-99ec-fa166946750e:17-768,
865cca62-feac-11e8-baec-fa075be7f38b:1-16‘;
如果使用--databases ‘database_name‘+--triggers --routines --events导出脚本时,会提示:
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-gtid-purged选项,则不会导出下面两个命令:
SET @@SESSION.SQL_LOG_BIN= 0;
SET @@GLOBAL.GTID_PURGED=‘xxxx‘
踩坑案例:
当前有复制A(主)->B(从),现需要将C中数据全部迁移到A上,使用mysqldump --all-databases在C上导出所有数据并导入到A上,发现A上数据没有复制到B上。
问题原因:在mysqldump导出的命令中包含"SET @@SESSION.SQL_LOG_BIN= 0;",导致数据导入到A上时不会生成binlog,无法传递到其从库。
mysqldump命令之常用选项
标签:数据库 host charset 设置 rest 时间 action 输出 hose