背景
对于GTID复制,如果存在多个机器的GTID的时候,说明这个机器之前是很多机器的
从库,但是GTID没有清理,之前对GTID的一些变量知道含义,但是具体的修改时机,
以及执行的命令会有什么作用没有理解。
先介绍一下变量:Gtid_executed
:当前机器已经执行过的GTID事务号。Gtid_purged
:当前机器已经清理的GTID号。
理解起来很简单,但是操作起来就比较容易不理解了。
比如这两个变量可以直接修改吗,reset master会有什么影响吗?
带着这些问题我做了一些测试。
测试过程
测速修改Gtid_purged的值
可以看到,修改成功了,而且旧的值必须是新的的子集。同时也将gtid_executed的值修改掉了。
测试修改gtid_executed
这里测试发现是只读的,不能手动修改。
测试reset master的作用
可以看到都被清空了。
总结
- set gtid_purged= ?会把gtid_purged 和gtid_executed都改成?号的值.
- set gtid_executed=?会报错,因为gtid_executed不能被修改.
- reset masetr 会把gtid_executed gtid_purged 全部清空.