怎么查看MGR从节点是否有延迟
首先,可以执行下面的命令查看当前除了 PRIMARY 节点外,其他节点的
trx_tobe_applied 或
trx_tobe_verified 值是否较大:
SELECT MEMBER_ID AS id, COUNT_TRANSACTIONS_IN_QUEUE AS trx_tobe_verified, COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE AS trx_tobe_applied, COUNT_TRANSACTIONS_CHECKED AS trx_chkd, COUNT_TRANSACTIONS_REMOTE_APPLIED AS trx_done, COUNT_TRANSACTIONS_LOCAL_PROPOSED AS proposed FROM performance_schema.replication_group_member_stats;
其中,
trx_tobe_applied 的值表示等待被apply的事务队列大小,
trx_tobe_verified 表示等待被认证的事务队列大小,这二者任何一个值大于0,都表示当前有一定程度的延迟。
另外,也可以查看接收到的事务和已执行完的事务之间的差距来判断:
SELECT RECEIVED_TRANSACTION_SET FROM performance_schema.replication_connection_status WHERE channel_name = 'group_replication_applier' UNION ALL SELECT variable_value FROM performance_schema.global_variables WHERE variable_name = 'gtid_executed'
可以看到,接收到的事务 GTID 已经到了1-72115961,而本地只执行到 1-72119306,二者的差距是 46385。可以顺便持续关注这个差值的变化情况,估算出本地节点是否能追平延迟,还是会加大延迟。




