GTID备份恢复注意事项
MySQL工作在GTID模式做备份恢复的时候,有时需要恢复出来的 MySQL 实例可以作为从库连上原来的主库继续复制,这就要求从备份恢复出来的 MySQL 实例拥有和主数据库数据一致的 gtid_executed 值。这也是通过设置 gtid_purged实现的,下面看下 mysqldump 做备份的例子。
通过mysqldump在主库上做一个全量备份
这里使用 --all-databases选项是因为基于 GTID 的复制会记录全部的事务, 所以要构建一个完整的dump备份
/usr/local/mysql/bin/mysqldump --user=root --host=localhost --default-character-set=utf8 --socket=/data/mysql/mysql.sock -p'xxxxxx' --extended-insert=false --all-databases --single-transaction --triggers --routines --events > /tmp/alldatabase.sql
在备份的alldatabase.sql中有GTID_PURGED语句
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='91a08937-7b0b-11e7-9575-52540061843d:1-6';
在slave上恢复前需要清空 gtid_executed 变量
reset master; #清空gtid_executed
source /tmp/alldatabase.sql; #导入备份
或者
mysql -h127.0.0.1 --user=root -pxxxxxx < /tmp/alldatabase.sql #导入
此时恢复出的 MySQL 实例的 GTID_EXECUTED 和在主库备份时的一致:
可以直接进行主从同步了·
Tag标签:「备份 gtid」更新时间:「2021-11-03 22:55:28」阅读次数:「852」