mysqldump --master-data=1 --single-transaction --databases test
没有加set-gtid-purged时出现警告提示:
scutech@scutech:/tmp$ mysqldump --master-data=1 --single-transaction --databases test >aa.sql 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 @@SESSION.SQL_LOG_BIN= 0; SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '60a5b8ff-95c7-11ea-a28f-fa163e0ec694:1-4'; ......
结合警告和导出文件可以解读为GLOBAL.GTID_PURGED设置为源库里面所有的GTID,也就是gtid_executed,即使是部分导出。SESSION.SQL_LOG_BIN= 0 就不写binlog,这样也不会传到备库。
这种情况等于设置–set-gtid-purged=on 和auto。on和auto的区别是当gtid没有激活时,on会报错,auto不会。
如果有–set-gtid-purged=off ,这两项消失。
在MySQL 5.6 和 5.7,可以替换gtid_purged ,在8里面是加到现有的gtid_purged后面。注意看前面的 /!80000 ‘+’/ 部分。