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

InnoDB Clusterでの計画的なプライマリスイッチオーバー

MySQLInnoDB Cluster

コマンド

# Shell: planned switchover
mysqlsh icadmin@db1:3306 -- cluster set-primary-instance db2:3306

-- SQL alternative: target member's server_uuid, 30 s timeout for open transactions
SELECT MEMBER_HOST, MEMBER_ID, MEMBER_ROLE FROM performance_schema.replication_group_members;
SELECT group_replication_set_as_primary('3f06e651-c356-11f1-8aac-927a9034ef99', 30);

概要

シングルプライマリモードで、プライマリのロールを制御された方法で別のメンバーに移す。旧プライマリはsuper_read_onlyになり、新プライマリはバックログを適用してから書き込みを受け付ける。MySQL Routerは新しいプライマリを自動的に認識する。

使用する場面

プライマリのメンテナンス、OSパッチ適用、アップグレードの前、ハードウェアの移行に。

注意

旧プライマリのオープン中のトランザクションは、タイムアウトが経過すると強制終了される。タイムアウトなしでは切り替えはそれらを待機し、時間が長くなる。アプリケーションがRouter経由で接続していない場合は、自分で接続先を変更する必要がある。BEFORE_ON_PRIMARY_FAILOVERでは、新プライマリがバックログを処理し終えるまで書き込みは待機する。先にcluster statusでapply_queueが空であることを確認する。InnoDB ClusterではShellのコマンドを推奨する。メタデータとの整合性が保たれる。

DBAtlas で開く →

関連項目