mysql8基于gtid导出导入搭建主从
开启GTID的状况下导出导入库的注意事项
在开启了 GTID 功能的 MySQL 数据库中, 不管是否使用了 GTID 的方式作了主从同步, 导出导入时都须要特别注意数据库中的 GTID 信息.mysql
# 导出
# 在主库上全备,--set-gtid-purged决定是否带gtid,这里建议明确指出是ON仍是OFFsql
[root@db145 bak]# mysqldump --login-path=instance_3306 --set-gtid-purged=ON --all-databases --single-transaction --master-data=2 --triggers --routines --events >/home/bak/all_database.dump.sql
# 在主库上全备,不带gtid数据库
[root@db145 bak]# mysqldump --login-path=instance_3306 --set-gtid-purged=OFF --all-databases --single-transaction --master-data=2 --triggers --routines --events >/home/bak/all_database.dump.sql
# 导入
# 导入的时候也分两种, 一种是导入带有 GTID 的信息的库, 一种是导入不带有 GTID 信息的库
不带有 GTID 信息的 dump 文件, 无论目标数据库实例是否开启了 GTID 功能, 且无论数据库实例是否已有其余 GTID 信息, 均可以顺利导入vim
带有 GTID 信息的 dump 文件, 要求目标数据库实例必须开启 GTID 功能, 且当前数据库中无其余 GTID 信息.
若是目标数据库中已经记录了一条或一条以上的 GTID 信息, 那么在导入数据库时会报出相似以下的错误session
[root@db143 bak]# mysql --login-path=instance_3306_root
ERROR3546 (HY000) at line 26: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
这个时候你有两个选择:app
从新 dump 数据库, 使用--set-gtid-purged&#