DBAtlas · データベース運用アトラス

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)、プライマリ、各メンバーの状態、認証/アプライアキューを表示する。キューからどのメンバーが遅れているか、フロー制御のリスクがわかる。

使用する場面

すべての介入の前後に。アラート時、書き込みの遅延時、メンバーがRECOVERING / ERROR / UNREACHABLEを示すときに。

注意

statusTextは'can tolerate up to ONE failure'(3メンバー)となっているべきである。NO_QUORUMでは書き込みが停止する。forceQuorumUsingPartitionOfは、もう一方のパーティションが停止していると確信できる場合にのみ使用する。そうでないとスプリットブレインが発生する。apply_queueが増え続けるメンバーはフロー制御を発動させ、プライマリの書き込みを遅くする。RECOVERINGが長い場合はクローン/増分リカバリが実行中。ERRORの場合はエラーログを確認し、cluster.rejoinInstance()を試す。パスワード内の特殊文字(#、@)はURI内でURLエンコードする必要がある(# → %23)。

DBAtlas で開く →

関連項目