在 MySQL-5.7 中,我们有 GTID 和传统方法来设置 MySQL 复制。
我们还有一个新参数:
gtid_mode = ON_PERMISSIVE
这意味着我们可以启用 GTID,但也能够以传统方式运行复制。
现在我们已经启用了 MySQL 复制,但是我们如何检查 mysql 复制是否在 GTID 或传统上工作?
谢谢
如果:
show global variables like 'gtid_executed';
-- OR respectively:
select @@gtid_executed; -- @@ returns Globally set variables, single @ returns session set variables
返回一个值,您正在使用GTID
如果没有,则您正在使用“传统”复制
检查 GTID 是否在两个节点上进行复制
SHOW VARIABLES LIKE 'gtid_mode';
检查从属设备中存在的主设备 GTID:
show global variables like 'gtid_executed'; <!---Should be same as master--->
您可以通过运行以下命令来检查复制工作
SHOW REPLICA STATUS\G;
在输出检查中
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Executed_Gtid_Set: <!--- ID present in slave is also present in master --->
参考实现Mysql多源主从复制:https://www.svastikkka.com/2024/03/mysql-multi-source-master-slave.html
来自 MySQL 文档:
当
gtid_mode=OFF_PERMISSIVE
时,新事务是匿名的,同时允许复制事务是GTID或匿名事务。当 gtid_mode=ON_PERMISSIVE
时,新事务使用 GTID,同时允许复制事务为 GTID 或匿名事务
这意味着
gtid_mode = ON PERMISSIVE
允许使用匿名复制(传统方式)进行交易,尽管新交易是使用GTID进行的,这就是为什么新版本允许使用GTID或匿名复制进行拓扑。
这将帮助您满足您的要求:
显示单个 GTID 的字段(例如replication_applier_status_by_worker Performance Schema 表中的 CURRENT_TRANSACTION)现在在未使用 GTID 事务时显示 ANONYMOUS。
问候