port=3000;dbname=gas;/home/mysql/mysql_KaTeX parse error: Expected group after '_' at position 55: …ome/mysql/mysql_̲{port}/etc/user.root.cnf --single-transaction -q --set-gtid-purged=OFF --default-character-set=utf8 KaTeX parse error: Expected group after '_' at position 29: …ome/mysql/mysql_̲{port}/mysql_KaTeX parse error: Expected group after '_' at position 7: {port}_̲{dbname}_date +%Y%m%d%H%M%S
.sql
关于GTID是5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。
官方给的:A global transaction identifier (GTID) is a unique identifier created and associated with each transaction committed on the server of origin (master).
所以可能是因为在一个数据库里面唯一,但是当导入其他的库就有可能重复。所有会有一个提醒。
可以通过添加–set-gtid-purged=off 或者–gtid-mode=OFF这两个参数设置。
个人认为是在导入库中重新生产GTID,而不用原来的。
gtid :
MySQL5.6 新特性之GTID
MySQL 5.6 引入了 GTID 特性,因此随 5.6 版本分发的 mysqldump 工具增加了 –set-gtid-purged 选项。
选项名:set-gtid-purged
默认值:AUTO
可选值:ON,OFF,AUTO
作用:是否输出 SET@@GLOBAL.GTID_PURGED 子句
ON:在 mysqldump 输出中包含 SET@@GLOBAL.GTID_PURGED 语句
OFF:在 mysqldump 输出中不包含 SET@@GLOBAL.GTID_PURGED 语句
AUTO:默认值,对于启用 GTID 实例,会输出 SET@@GLOBAL.GTID_PURGED 语句;对于没有启动或者不支持 GTID 的实例,不输出任何 GTID 相关信息。
背景:
MySQL5.6在5.5的基础上增加了一些改进,本文章先对其中一个一个比较大的改进"GTID"进行说明。
概念:
GTID即全局事务ID(global transaction identifier),GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增,所以GTID能够保证每个MySQL实例事务的执行(不会重复执行同一个事务,并且会补全没有执行的事务)。下面是一个GTID的具体形式:
4e659069-3cd8-11e5-9a49-001c4270714e:1-77
更具体的说明见官方说明。
GTID意义:
引入GTID的意义是什么?
1)因为清楚了GTID的格式,所以通过UUID可以知道这个事务在哪个实例上提交的。
2)通过GTID可以极方便的进行复制结构上的故障转移,新主设置。很好的解决了下面这个图(图来自高性能MySQL第10章)的问题。
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写。
此外:
一般主从架构的数据库,通常相关导入操作只需要在master(主库)端进行即可,但是正如代码中红色部分所示,禁掉了session级别的sql_log_bin,所以在目标端导入t1.sql时,并不会产生对应的bin log日志,
所以该表及其数据并不会被同步到slave端。这是在数据库测试时发现这点是需要注意的。
经过测试发现,当数据库开启GTID模式时才出现综上所述,因此如果数据库用GTID模式,在mysqldump数据时,应该如warning提示加上参数–set-gtid-purged=OFF,此时导出的sql文件(没有了红色部分所标记的)。