MySQL GTID レプリケーション (非同期 / 準同期)
MySQLレベル: 中級所要時間: 45–90 分インストール済みの MySQL サーバーで、1 ソース + N レプリカの GTID ベースのレプリケーションを構築します。レプリケーションユーザー、clone プラグインまたは mysqldump による既存データの転送、SOURCE_AUTO_POSITION、TLS、任意の準同期 (semi-sync)、super_read_only のレプリカ、遅延の監視、手動フェイルオーバー手順を扱います。最終的に、書き込みをソースで、読み取りをレプリカで処理でき、監視された構成が得られます。自動フェイルオーバーが必要な場合は InnoDB Cluster を、構築済みレプリケーションの日常運用と障害対応にはレプリケーション運用ガイドを参照してください。
構成: ソース 1 台 + レプリカ 1..5 台
開始前の確認
- すべてのサーバーに MySQL … が同じマイナーバージョンでインストールされて稼働している (DBAtlas のMySQL シングルサーバーインストールガイド)。バイナリログと GTID が有効。OS の root が mysql でパスワードなしで接続できる。
- server_id と server_uuid が各サーバーで異なる。(サーバーをコピー/クローンして作成した場合、datadir の auto.cnf が同一になっている可能性があります。削除してサービスを再起動してください。)
- サーバー同士が … ポートで到達できる (…)。
- 時刻が同期されている (chrony)。遅延の測定と PITR はタイムスタンプに依存します。
- レプリカにソースのデータサイズ分の空き容量がある…。さらにダンプファイル用の領域もある…。
- ソースのデータサイズとネットワーク速度を把握している (転送時間の見積もりのため)。
- レプリケーションユーザー…と一時的な clone ユーザー…用の強力なパスワードを用意している (8 文字以上、大文字/小文字、数字、特殊文字。' と \ を含めない)。パスワードは各手順で画面に表示せずに入力を求められます。
- アプリケーションが書き込みをソースにのみ送り、読み取りを (任意で) レプリカに送ることが分かっている。レプリカは super_read_only になります。
ガイドのフェーズ
- 事前準備 (すべてのサーバー) — サーバーの識別子を確認する · ファイアウォールで他のノードを許可する · レプリケーション設定を追加する (ソース) · レプリケーション設定を追加する (…) · MySQL を再起動する
- ソースの準備 — レプリケーションユーザーを作成する · 準同期プラグインをインストールする · ソースで準同期を有効にする
- レプリカへのデータ転送 (clone) — clone プラグインをインストールする · 一時的な clone ユーザーを作成する · ソースをクローンする (…)
- レプリカへのデータ転送 (mysqldump) — ソースから整合性のあるダンプを取得する · ダンプをレプリカにコピーする · ダンプをロードする (…)
- レプリケーションを開始する — レプリカを読み取り専用にする (…) · ソースを設定してレプリケーションを開始する (…)
- 検証 — ソースで接続中のレプリカを確認する · テスト書き込み (ソース) · レプリカでテスト書き込みを読み取る (…) · テストデータベースを削除する
- 遅延と状態の監視 — レプリケーションの状態と遅延 (…)
- 後片付け — clone ユーザーを削除する · ダンプファイルを削除する
- 手動フェイルオーバー (ソースの喪失) — フェイルオーバー: 候補の状態を確認する · フェイルオーバー: 候補の状態を確認する · フェイルオーバー: 候補をソースに昇格する · フェイルオーバー: 候補をソースに昇格する · フェイルオーバー: 他のレプリカを新しいソースに接続する (…) · フェイルオーバー: 他のレプリカを新しいソースに接続する (…) …