ablog

不器用で落着きのない技術者のメモ

Aurora リードレプリカによる RDS MySQL から Aurora MySQL への移行

Aurora リードレプリカによる RDS MySQL から Aurora MySQL への移行手順。

手順

  • マネコンで RDS MySQL インスタンスを選択、[アクション] - [Aurora リードレプリカの作成] を選択。
  • RDS MySQL に対する書込みトランザクションを停止、Aurora リードレプリカのレプリカラグが 0 になるまで待つ*1
  • Aurora リードレプリカの DB クラスターを選択、[アクション] - [Promote (昇格)] を選択。
  • アプリケーションの接続先を Aurora のエンドポイントに変更。

参考

DB スナップショットを使用した MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータ移行

以下で説明するように、Amazon RDS MySQL DB スナップショットから Amazon Aurora MySQL DB クラスターにデータを移行 (コピー) できます。

トピック
DB スナップショットを使用した MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータ移行 - Amazon Aurora

Aurora は、MySQL DB エンジンのバイナリログレプリケーション機能を使用して、ソース MySQL DB インスタンスの Aurora リードレプリカと呼ばれる特殊なタイプの DB クラスターを作成します。ソースの MySQL DB インスタンスに加えられた更新は、Aurora リードレプリカに非同期的にレプリケートされます。

ソース MySQL DB インスタンスの Aurora リードレプリカを作成して MySQL DB インスタンスから Aurora MySQL DB クラスターに移行する場合は、この機能の使用をお勧めします。MySQL DB インスタンスと Aurora リードレプリカとの間のレプリカラグが 0 である場合は、クライアントアプリケーションを Aurora リードレプリカに誘導してからレプリケーションを停止することで、Aurora リードレプリカをスタンドアロンの Aurora MySQL DB クラスターにすることができます。移行では、データの 1 テビバイト (TiB) ごとに数時間程度の時間がかかります。

Aurora を使用できるリージョンのリストについては、AWS General Reference の「Amazon Aurora」を参照してください。

MySQL DB インスタンスの Aurora リードレプリカを作成すると、Amazon RDS により、ソース MySQL DB インスタンスの DB スナップショットが作成されます (Amazon RDS に対してプライベートであり、料金はかかりません)。次に Amazon RDS は DB スナップショットから Aurora リードレプリカにデータを移行します。DB スナップショットのデータが新しい Aurora MySQL DB クラスターに移行された後、Amazon RDS は、MySQL DB インスタンスと Aurora MySQL DB クラスターとの間でレプリケーションを開始します。MySQL DB インスタンスに、InnoDB 以外のストレージエンジンを使用するテーブルまたは圧縮行形式を使用するテーブルが含まれている場合は、Aurora リードレプリカを作成する前に InnoDB ストレージエンジンと動的行形式が使用されるようにテーブルを変更することで、Aurora リードレプリカの作成プロセスをスピードアップできます。


(中略)


移行が完了したら、Aurora リードレプリカをスタンドアロン DB クラスターに昇格させ、クライアントアプリケーションを Aurora リードレプリカのエンドポイントに誘導することができます。Aurora エンドポイントの詳細については、「Amazon Aurora 接続管理」を参照してください。昇格はすばやく完了し、昇格中も Aurora リードレプリカに対する読み取り/書き込みを行うことができます。ただし昇格中に、マスター MySQL DB インスタンスを削除したり、DB インスタンスと Aurora リードレプリカのリンクを解除する操作は行うことができません。

Aurora リードレプリカを昇格する前に、ソース MySQL DB インスタンスに対するトランザクションの書き込みをすべて停止し、Aurora リードレプリカのレプリカラグが 0 になるまで待ちます。Aurora リードレプリカのレプリカラグを確認するには、Aurora リードレプリカで SHOW SLAVE STATUS コマンドを呼び出し、Seconds behind master 値を確認します。

マスターへの書き込みトランザクションが停止し、レプリカラグが 0 になったら、Aurora AWS CLI コマンドへの書き込みを開始できます。それより前に Aurora リードレプリカへの書き込みを行い、MySQL マスターでも変更されているテーブルを変更した場合、Aurora へのレプリケーションが失われるおそれがあります。その場合は、Aurora リードレプリカを削除して、作り直す必要があります。

昇格したら、昇格が完了したことを確認します。これには、ナビゲーションペインの [インスタンス] を選択し、Aurora リードレプリカに対する [Promoted Read Replica cluster to stand-alone database cluster (リードレプリカクラスターがスタンドアロンデータベースクラスターへ昇格した)] イベントが存在することを確認します。昇格が完了したら、マスター MySQL DB インスタンスと Aurora リードレプリカのリンクは解除され、DB インスタンスは必要に応じて安全に削除できるようになります。

Aurora リードレプリカを使用した、MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータの移行 - Amazon Aurora

*1:SHOW SLAVE STATUS コマンドを呼び出し、Seconds behind master が 0 になるまで待つ