リードレプリカをスタンドアロン DB インスタンスに昇格させる
リードレプリカをスタンドアロン DB インスタンスに昇格させることができます。ソース DB インスタンスに複数のリードレプリカがある場合、いずれかのリードレプリカを DB インスタンスに昇格させても、他のレプリカには影響が及びません。
リードレプリカを昇格させると、RDS によって DB インスタンスが使用可能になる前に DB インスタンスが再起動されます。リードレプリカのサイズによっては、昇格プロセスが完了するまで数分以上かかる場合があります。
リードレプリカを昇格させるユースケース
リードレプリカをスタンドアロン DB インスタンスに昇格させる理由には、次のようなものがあります。
-
障害復旧の実装 – プライマリ DB インスタンスに障害が発生した場合、データ復旧スキームとして、リードレプリカを昇格させることができます。このアプローチは、同期的なレプリケーション、自動障害検出、フェイルオーバーを補完します。
非同期レプリケーションの影響と制限を承知の上で、データ復旧にリードレプリカの昇格が必要と判断した場合に限り、昇格を行ってください。これを行うには、最初にリードレプリカを作成し、次にプライマリ DB インスタンスで障害をモニタリングします。障害が発生した場合、以下の作業を行います。
-
リードレプリカを昇格させます。
-
昇格された DB インスタンスにデータベーストラフィックを向けます。
-
昇格された DB インスタンスとの置き換えリードレプリカをソースとして作成します。
-
-
ストレージ設定のアップグレード — ソース DB インスタンスが推奨ストレージ設定になっていない場合は、インスタンスのリードレプリカを作成し、ストレージファイルシステム設定をアップグレードできます。このオプションは、リードレプリカのファイルシステムを適切な設定に移行させます。次に、リードレプリカをスタンドアロンインスタンスに昇格させることができます。
このオプションを使用すると、古い 32 ビットファイルシステムのストレージとファイルサイズのスケーリング制限を克服できます。詳細については、「DB インスタンスのストレージファイルシステムのアップグレード」を参照してください。
このオプションは、ソース DB インスタンスが最新のストレージ設定になっていない場合、または同じリクエスト内で DB インスタンスクラスを変更する場合にのみ使用できます。
-
シャーディング – シャーディングでは、「share-nothing」アーキテクチャを採用しており、基本的に大きいデータベースが複数の小さいデータベースに分割されます。データベースを分割する一般的な方法としては、同じクエリに結合されていないテーブルを切り離して別のホスト上に配置します。別の方法としては、複数のホスト間でテーブルを複製し、ハッシュアルゴリズムを使用してどのホストで特定の更新を受け取るかを指定します。各シャード (小さいデータベース) に対応するリードレプリカを作成し、スタンドアロンシャードに変換することを決定したら昇格させることができます。次に、要件に応じて、各シャードのテーブルのキースペース (行を分割する場合) または分布を分割できます。
-
DDL 操作の実行 (MySQL および MariaDB のみ) – インデックスの作成や再構築などの DDL 操作には時間がかかることがあり、DB インスタンスのパフォーマンスが大幅に低下する可能性があります。これらのオペレーションは、MySQL リードレプリカや MariaDB リードレプリカがプライマリ DB インスタンスと同期されたら、これらのリードレプリカに対して実行できます。次に、リードレプリカを昇格させ、昇格されたインスタンスを使用するようにアプリケーションに指示できます。
注記
リードレプリカが RDS for Oracle DB インスタンスの場合は、昇格の代わりにスイッチオーバーを実行できます。スイッチオーバーでは、ソース DB インスタンスが新しいレプリカになり、レプリカが新しいソース DB インスタンスになります。詳細については、「Oracle Data ata Guard のスイッチオーバー操作の実行」を参照してください。
昇格されたリードレプリカの特徴
リードレプリカを昇格させると、リードレプリカとして機能しなくなり、スタンドアロン DB インスタンスになります。新しいスタンドアロン DB インスタンスには、次の特徴があります。
-
スタンドアロン DB インスタンスは、昇格前のリードレプリカのオプショングループとパラメータグループを保持します。
-
新しい DB インスタンスからリードレプリカを作成して、ポイントインタイム復元オペレーションを実行できます。
-
昇格した DB インスタンスはリードレプリカではなくなったため、レプリケーションターゲットとしては使用できません。
リードレプリカを昇格させるための前提条件
リードレプリカを昇格する前に、次のことを実行してください。
-
バックアップ戦略を確認します。
-
バックアップを有効にし、少なくとも 1 つのバックアップを完了することをお勧めします。バックアップ期間は、以前のバックアップ以降のデータベースに対する変更数の関数です。
-
リードレプリカでバックアップを有効にしている場合は、自動バックアップウィンドウを構成して、毎日のバックアップがリードレプリカの昇格を妨げないようにします。
-
リードレプリカが
backing-up
ステータスになっていないことを確認します。この状態にあるリードレプリカを昇格させることはできません。
-
-
プライマリ DB インスタンスに対するトランザクションの書き込みを停止し、すべての更新がリードレプリカに反映されるまで待ちます。
データベースの更新は、プライマイ DB インスタンスで行われた後にリードレプリカで行われます。レプリケーションのラグは大きく異なる可能性があります。
Replica Lag
メトリクスを使用して、リードレプリカにすべての更新がいつ加えられたかを確認できます。 -
(MySQL および MariaDB のみ) MySQL または MariaDB のリードレプリカに変更を加えるには、リードレプリカの DB パラメータグループで
read_only
パラメータを0
に設定する必要があります。次に、インデックスの作成など、必要なすべての DDL 操作をリードレプリカで実行します。リードレプリカに対するアクションの実行は、プライマリ DB インスタンスのパフォーマンスには影響しません。
リードレプリカの昇格: 基本的な手順
以下のステップは、DB インスタンスにリードレプリカを昇格させる一般的なプロセスを示しています。
-
Amazon RDS コンソールの [Promote] (昇格) オプション、AWS CLI コマンドの
promote-read-replica
、または Amazon RDS API のPromoteReadReplica
オペレーションを使用して、リードレプリカをプロモートします。注記
昇格プロセスの完了までには数分かかります。リードレプリカを昇格させると、レプリケーションが停止され、リードレプリカが再起動されます。再起動が完了すると、リードレプリカは新しい DB インスタンスとして使用可能になります。
-
(オプション) 新しい DB インスタンスをマルチ AZ 配置に変更します。詳細については、Amazon RDS DB インスタンスを変更するおよびAmazon RDS でのマルチ AZ 配置の設定と管理を参照してください。
リードレプリカをスタンドアロン DB インスタンスに昇格させるには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
Amazon RDS コンソールで、[Databases (データベース)] を選択します。
[Databases (データベース)] ペインが表示されます。各リードレプリカには、[Role (ロール)] 列に [Replica (レプリカ)] があります。
-
昇格させるリードレプリカを選択します。
-
[アクション] で、[Promote (昇格)] を選択します。
-
[リードレプリカの昇格] ページで、新しく昇格された DB インスタンスのバックアップ保持期間とバックアップウィンドウを入力します。
-
すべての設定が正しいことを確認したら、[Continue] を選択します。
-
確認ページで、[Promote Read Replica] を選択します。
リードレプリカをスタンドアロン DB インスタンスに昇格させるには、AWS CLI promote-read-replica
コマンドを使用します。
例
Linux、macOS、Unix の場合:
aws rds promote-read-replica \ --db-instance-identifier
myreadreplica
Windows の場合:
aws rds promote-read-replica ^ --db-instance-identifier
myreadreplica
リードレプリカをスタンドアロン DB インスタンスに昇格するには、必須のパラメータ DBInstanceIdentifier
を指定して Amazon RDS API の PromoteReadReplica
オペレーションを呼び出します。