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

MySQL InnoDB Cluster (Group Replication + MySQL Router)

MySQLレベル: 上級所要時間: 90–120 分

同一データセンター内のインストール済み MySQL サーバー 3 台 (または 5–9 台) から single-primary の InnoDB Cluster を構築します。MySQL Shell AdminAPI による dba.configureInstance、createCluster、clone を使った addInstance、MySQL Router の bootstrap (6446 RW / 6447 RO)、cluster.status() による監視、フェイルオーバーテスト、クォーラム喪失・完全停止・ローリング再起動の runbook を扱います。最終的に、プライマリがダウンすると自動でフェイルオーバーし、アプリケーションが Router 経由で接続するクラスタが得られます。遠隔サイトや単純な読み取りスケーリングにはクラシックレプリケーションを、構築済みクラスタの日常運用には InnoDB Cluster 運用ガイドを使用します。

構成: MySQL ノード 3–9 台 + Router サーバー 1 台

開始前の確認

  • すべてのノードに MySQL … が同じマイナーバージョンでインストールされている (DBAtlas のMySQL シングルサーバーインストールガイド)、GTID が有効、各ノードの server_id が異なる。OS の root が mysql でパスワードなしで接続できる。
  • ノード 2..… に保持すべきデータがない。クラスタへの追加時に clone でノード 1 (…) のコピーを受け取り、既存のデータは削除されます。
  • ノード 1 のすべてのテーブルが InnoDB で、主キーを持っている (Group Replication の要件)。確認クエリの結果は空である必要があります。
  • ノード同士が 3306 (MySQL および Group Replication の通信)、33060 (X Protocol)、33061 ポートで、Router サーバーがノードに 3306/33060 で到達できる。レイテンシが低い (同一データセンター。< 1–2 ms)。
  • 時刻が同期されている (chrony)。
  • ノード数が奇数 (…) である。… ノードで許容できるノード障害は最大 … 台です。偶数にしても許容数は増えません。
  • クラスタ管理者アカウント (…) 用の強力なパスワードを用意している (8 文字以上、大文字/小文字、数字、特殊文字)。MySQL Shell と Router は各手順でパスワードを画面に表示せずに入力を求めます。Shell にはパスワードを保存しないよう指定します。
  • Router サーバーが repo.mysql.com にアクセスできる (MySQL リポジトリはこのガイドで追加します)。

ガイドのフェーズ

  • 事前準備 (すべての MySQL ノード) — ファイアウォールでクラスタのポートを開放する · SELinux に Group Replication のポートを登録する · クラスタ設定を追加する (…) · MySQL を再起動する · MySQL Shell をインストールする
  • インスタンスの構成 (dba.configureInstance) — クラスタ管理者アカウントを作成する (…) · インスタンスをリモートでチェックする
  • クラスタを作成する — クラスタを作成する · ノードをクラスタに追加する (…) · クラスタの状態を確認する
  • MySQL Router — MySQL リポジトリを追加する (Router サーバー) · Router と Shell をインストールする · Router を bootstrap する · Router サービスを起動する · ファイアウォールで Router のポートを開放する · Router 経由の接続をテストする
  • 検証と監視 — 詳細な状態 · SQL でメンバーを監視する
  • フェイルオーバーテスト — フェイルオーバー: プライマリを停止する · フェイルオーバー: プライマリを停止する · フェイルオーバー: 新しいプライマリを確認する · フェイルオーバー: 新しいプライマリを確認する · フェイルオーバー: Router が新しいプライマリに振り向けているか · フェイルオーバー: Router が新しいプライマリに振り向けているか …
  • クォーラムの喪失と完全停止 — クォーラム: 状態を診断する · クォーラム: 状態を診断する · クォーラム: 稼働しているパーティションで強制的にクォーラムを構成する · クォーラム: 稼働しているパーティションで強制的にクォーラムを構成する · クォーラム: 復帰したノードで旧グループを停止する (…) · クォーラム: 復帰したノードで旧グループを停止する (…) …
  • ローリング再起動 (メンテナンス) — ローリング: セカンダリを再起動する (…) · ローリング: セカンダリを再起動する (…) · ローリング: プライマリのロールを引き渡す · ローリング: プライマリのロールを引き渡す · ローリング: 旧プライマリを再起動する · ローリング: 旧プライマリを再起動する …
環境に合わせた手順プランを開く →