检查 InnoDB Cluster / Group Replication 健康状况
MySQLInnoDB Cluster命令
# Shell: topology, primary, fault tolerance, lag
mysqlsh icadmin@db1:3306 -- cluster status --extended=1
mysqlsh icadmin@db1:3306 -- cluster list-routers
-- SQL: group members and queues from any member
SELECT m.MEMBER_HOST, m.MEMBER_PORT, m.MEMBER_STATE, m.MEMBER_ROLE, m.MEMBER_VERSION,
s.COUNT_TRANSACTIONS_IN_QUEUE AS certify_queue,
s.COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE AS apply_queue,
s.COUNT_CONFLICTS_DETECTED AS conflicts
FROM performance_schema.replication_group_members m
JOIN performance_schema.replication_group_member_stats s ON s.MEMBER_ID = m.MEMBER_ID
ORDER BY m.MEMBER_ROLE, m.MEMBER_HOST;作用
显示集群整体状态(OK / OK_NO_TOLERANCE / NO_QUORUM)、主节点、每个成员的状态以及 certification / applier 队列;队列可揭示哪个成员落后以及 flow control 风险。
适用场景
每次干预前后;出现告警、写入变慢,或成员显示 RECOVERING / ERROR / UNREACHABLE 时。
注意
statusText 应显示 'can tolerate up to ONE failure'(3 个成员)。NO_QUORUM 时写入会停止;只有在确定另一个分区已宕机时才使用 forceQuorumUsingPartitionOf,否则会出现脑裂。apply_queue 持续增长的成员会触发 flow control,使主节点上的写入变慢。长时间 RECOVERING 表示正在进行 clone / 增量恢复;出现 ERROR 时请检查错误日志并尝试 cluster.rejoinInstance()。密码中的特殊字符(#、@)在 URI 中必须进行 URL 编码(# → %23)。