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

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

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

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

Aurora を使用できるリージョンの一覧は、AWS 全般のリファレンス の「Amazon Aurora」を参照してください。

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

1 つの RDS for MySQL DB インスタンスに対して作成できる Aurora リードレプリカは、1 つだけです。

注記

レプリケーションプライマリである RDS for MySQL DB インスタンスの MySQL データベースエンジンバージョンと Aurora MySQL との間に存在する特性の相違が原因で、レプリケーションの問題が発生することがあります。エラーが発生した場合のサポートについては、Amazon RDS コミュニティフォーラムを参照するか、AWS Supportまでお問い合わせください。

RDS for MySQL DB インスタンスに既に Aurora リードレプリカのソースがある場合は、Aurora リードレプリカを作成できません。

8.0.11、8.0.13、8.0.15 などの一部の古い RDS for MySQL 8.0 バージョンからは Aurora MySQL バージョン 3.05 以上に移行できません。移行する前に RDS for MySQL バージョン 8.0.28 にアップグレードすることをお勧めします。

MySQL リードレプリカの詳細については、「MariaDB、MySQL、PostgreSQL DB インスタンスのリードレプリカの使用」を参照してください。

Aurora リードレプリカの作成

コンソール、AWS CLI、または RDS API を使用して、RDS for MySQL DB インスタンスの Aurora リードレプリカを作成できます。

ソース RDS for MySQL DB インスタンスから Aurora リードレプリカを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. Aurora リードレプリカの出典として使用する MySQL DB インスタンスを選択します。

  4. [アクション] で [Aurora リードレプリカの作成] を選択します。

  5. 次の表の説明に従って、Aurora リードレプリカに使用する DB クラスターの仕様を選択します。

    オプション 説明

    DB インスタンスクラス

    DB クラスターのプライマリインスタンスに対する処理要件やメモリ要件を定義する DB インスタンスクラスを選択します。DB インスタンスクラスのオプションについては、「Amazon Aurora DB インスタンスクラス」を参照してください。

    マルチ AZ 配置

    [別のゾーンにレプリカを作成します] を選択し、フェイルオーバーをサポートするため、ターゲット AWS リージョン内の別のアベイラビリティーゾーンに新しい DB クラスターのスタンバイレプリカを作成します。複数のアベイラビリティーゾーンの詳細については、「リージョンとアベイラビリティーゾーン」を参照してください。

    DB インスタンス識別子

    Aurora リードレプリカ DB クラスターのプライマリインスタンスの名前を入力します。この識別子は、新しい DB クラスターのプライマリインスタンスのエンドポイントアドレスで使用されます。

    DB インスタンス識別子には次の制約があります。

    • 1 ~ 63 文字の英数字またはハイフンを使用する必要があります。

    • 1 字目は文字である必要があります。

    • ハイフンを、文字列の最後に使用したり、2 つ続けて使用したりすることはできません。

    • これは AWS リージョンごとの各 AWS アカウントのすべての DB インスタンスに対して一意にする必要があります。

    Aurora リードレプリカ DB クラスターは出典 DB インスタンスのスナップショットから作成されるため、Aurora リードレプリカのマスターユーザー名およびマスターパスワードは出典 DB インスタンスのマスターユーザー名およびマスターパスワードと同じになります。

    仮想プライベートクラウド (VPC)

    DB クラスターをホストする VPC を選択します。[新しい VPC の作成] を選択し、Aurora で自動的に VPC を作成します。詳細については、「DB クラスターの前提条件」を参照してください。

    DB サブネットグループ

    DB クラスターで使用する DB サブネットグループを選択します。[新しい DB サブネットグループの作成] を選択し、Aurora で自動的に DB サブネットグループを作成します。詳細については、「DB クラスターの前提条件」を参照してください。

    パブリックアクセシビリティ

    DB クラスターにパブリック IP アドレスを指定するには [Yes] を選択します。それ以外の場合は [No] を選択します。DB クラスターのインスタンスでは、パブリック DB インスタンスとプライベート DB インスタンスの両方を混在させることができます。パブリックアクセスからインスタンスを隠す方法については、「VPC 内の DB クラスターをインターネットから隠す」を参照してください。

    アベイラビリティーゾーン

    特定のアベイラビリティーゾーンを指定するかどうかを指定します。利用可能ゾーンについての詳細は、リージョンとアベイラビリティーゾーン を参照してください。

    VPC セキュリティグループ (ファイアウォール)

    [Create new VPC security group] を選択し、Aurora で自動的に VPC セキュリティグループを作成します。または、[Select existing VPC security groups] を選択し、DB クラスターへのネットワークアクセスの保護用に 1 つ以上の VPC セキュリティグループを指定します。詳細については、「DB クラスターの前提条件」を参照してください。

    データベースポート

    データベースのアクセスに使用するために、アプリケーションやユーティリティのポートを指定します。Aurora MySQL DB クラスターのデフォルトの MySQL ポートは 3306 になります。会社のファイアウォールでは、このポートへの接続がブロックされます。会社のファイアウォールがデフォルトのポートをブロックする場合は、新しい DB クラスター用に別のポートを選択します。

    DB パラメータグループ

    Aurora MySQL DB クラスターの DB パラメータグループを選択します。Aurora にはデフォルトの DB パラメータグループが用意されています。また、独自の DB パラメータグループを作成することもできます。DB パラメータグループの詳細については、「Amazon Aurora のパラメータグループ」を参照してください。

    DB クラスターのパラメータグループ

    Aurora MySQL DB クラスター用に、DB クラスターパラメータグループを選択します。Aurora にはデフォルトの DB クラスターパラメータグループが用意されています。また、独自の DB クラスターパラメータグループを作成することもできます。DB クラスターパラメータグループの詳細については、「Amazon Aurora のパラメータグループ」を参照してください。

    暗号化

    新しい Aurora DB クラスターを暗号化しない場合は、[暗号化を無効にする] を選択します。[暗号を有効化] を選択すると、新しい Aurora DB クラスターが保管時に暗号化されます。[暗号を有効化] を選択する場合、KMS キーを AWS KMS key 値として選択する必要があります。

    MySQL DB インスタンスが暗号化されていない場合は、暗号化キーを指定して保管時の DB クラスターを暗号化します。

    MySQL DB インスタンスが暗号化されている場合は、暗号化キーを指定し、その指定された暗号化キーを使用して保管時の DB クラスターを暗号化します。MySQL DB インスタンスで使用される暗号化キー、または別のキーを指定できます。暗号化された MySQL DB インスタンスから 非暗号化の DB クラスターを作成することはできません。

    優先度

    DB クラスターのフェイルオーバー優先度を選択します。値を選択しない場合、デフォルト値は tier-1 になります。この優先度により、プライマリインスタンスの障害からの復旧時に、Aurora レプリカを昇格する順序が決まります。詳細については、「Aurora DB クラスターの耐障害性」を参照してください。

    バックアップの保存期間

    Aurora がデータベースのバックアップコピーを保持する期間 (1〜35 日) を選択します。バックアップコピーは、2 番目のデータベースに対するポイントインタイム復元 (PITR) で使用できます。

    拡張モニタリング

    DB クラスターが実行されているオペレーティングシステムに対してリアルタイムでのメトリクスの収集を有効にするには、[拡張モニタリングを有効にする] を選択します。詳細については、「拡張モニタリングを使用した OS メトリクスのモニタリング」を参照してください。

    モニタリングロール

    [拡張モニタリング] が [拡張モニタリングの有効化] に設定されている場合にのみ使用できます。ユーザーに代わって Amazon CloudWatch Logs と通信することを Aurora に許可するために作成した IAM ロールを選択するか、[デフォルト] を選択して rds-monitoring-role という名前のロールを Aurora で自動的に作成します。詳細については、「拡張モニタリングを使用した OS メトリクスのモニタリング」を参照してください。

    詳細度

    [拡張モニタリング] が [拡張モニタリングの有効化] に設定されている場合にのみ使用できます。DB クラスターのメトリクスを収集する間隔を秒単位で設定します。

    マイナーバージョン自動アップグレード

    この設定は Aurora MySQL DB クラスターには適用されません。

    Aurora MySQL のエンジンに関する更新の詳細については、「Amazon Aurora MySQL のデータベースエンジンの更新」を参照してください。

    メンテナンスウィンドウ

    [ウィンドウの選択] を選択し、システムメンテナンスが実行される期間を週単位で指定します。または、[指定なし] を選択し、Aurora によって期間をランダムに割り当てます。

  6. [Create read replica] を選択します。

ソース RDS for MySQL DB インスタンスから Aurora リードレプリカを作成するには、AWS CLI コマンドの create-db-clustercreate-db-instance を使用して、新しい Aurora MySQL DB クラスターを作成します。create-db-cluster コマンドを呼び出すときは、--replication-source-identifier パラメータを含めて、出典 MySQL DB インスタンスの Amazon リソースネーム (ARN) を指定します。Amazon RDS ARN の詳細については、「Amazon Relational Database Service (Amazon RDS)」を参照してください。

出典 MySQL DB インスタンスと同じマスターユーザーネーム、マスターパスワード、またはデータベース名を Aurora リードレプリカで指定しないでください。

Linux、macOS、Unix の場合:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora \ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance

Windows の場合:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora ^ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:primary-mysql-instance

コンソールを使用して Aurora リードレプリカを作成すると、DB クラスターの Aurora リードレプリカのプライマリインスタンスが Aurora によって自動的に作成されます。AWS CLI を使用して Aurora リードレプリカを作成する場合、使用する DB クラスターのプライマリインスタンスを明示的に作成する必要があります。プライマリ インスタンスは、DB クラスターで作成される初期の DB インスタンスです。

以下のパラメータを指定して create-db-instance AWS CLI コマンドを使用することで、DB クラスターにプライマリインスタンスを作成できます。

  • --db-cluster-identifier

    DB クラスターの名前。

  • --db-instance-class

    プライマリインスタンスに使用するための DB インスタンス名。

  • --db-instance-identifier

    プライマリインスタンスの名前。

  • --engine aurora

この例では、myinstanceclass で指定される DB インスタンスクラスを使用して、myreadreplicacluster という名前の DB クラスターに myreadreplicainstance という名前のプライマリインスタンスを作成します。

Linux、macOS、Unix の場合:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass \ --db-instance-identifier myreadreplicainstance \ --engine aurora

Windows の場合:

aws rds create-db-instance ^ --db-cluster-identifier myreadreplicacluster ^ --db-instance-class myinstanceclass ^ --db-instance-identifier myreadreplicainstance ^ --engine aurora

ソース RDS for MySQL DB インスタンスから Aurora リードレプリカを作成するには、CreateDBClusterCreateDBInstance Amazon RDS API コマンドを使用して新しい Aurora DB クラスターとプライマリインスタンスを作成します。ソース RDS for MySQL DB インスタンスと同じマスターユーザーネーム、マスターパスワード、またはデータベース名と同じユーザーネーム、マスターパスワード、またはデータベース名を Aurora リードレプリカに指定しないでください。

以下のパラメータを指定して CreateDBCluster Amazon RDS API コマンドを使用することで、RDS for MySQL DB インスタンスから Aurora リードレプリカに新しい Aurora DB クラスターを作成できます。

  • DBClusterIdentifier

    作成する DB クラスターの名前。

  • DBSubnetGroupName

    この DB クラスターに関連付ける DB サブネットグループの名前。

  • Engine=aurora

  • KmsKeyId

    MySQL DB インスタンスが暗号化されているかどうかによって、オプションで DB クラスターを暗号化する AWS KMS key。

    • MySQL DB インスタンスが暗号化されていない場合は、暗号化キーを指定して保管時の DB クラスターを暗号化します。これを実行しない場合、保管時の DB クラスターはデフォルトでアカウントの暗号化キーを使用して暗号化されます。

    • MySQL DB インスタンスが暗号化されている場合は、暗号化キーを指定し、その指定された暗号化キーを使用して保管時の DB クラスターを暗号化します。これを実行しない場合、保管時の DB クラスターは MySQL DB インスタンスの暗号化キーを使用して暗号化されます。

      注記

      暗号化された MySQL DB インスタンスから 非暗号化の DB クラスターを作成することはできません。

  • ReplicationSourceIdentifier

    送信元の MySQL DB インスタンスの Amazon リソースネーム (ARN)。Amazon RDS ARN の詳細については、「Amazon Relational Database Service (Amazon RDS)」を参照してください。

  • VpcSecurityGroupIds

    この DB クラスターに関連付ける EC2 VPC セキュリティグループのリスト。

この例では、ARN が mysqlprimaryARN に設定された元の MySQL DB インスタンスから、mysubnetgroup という名前の DB サブネットグループと mysecuritygroup という名前の VPC セキュリティグループに関連付けられる myreadreplicacluster という名前の DB クラスターを作成します。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &DBClusterIdentifier=myreadreplicacluster &DBSubnetGroupName=mysubnetgroup &Engine=aurora &ReplicationSourceIdentifier=mysqlprimaryARN &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &VpcSecurityGroupIds=mysecuritygroup &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request &X-Amz-Date=20150927T164851Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db

コンソールを使用して Aurora リードレプリカを作成すると、DB クラスターの Aurora リードレプリカのプライマリインスタンスが Aurora によって自動的に作成されます。AWS CLI を使用して Aurora リードレプリカを作成する場合、使用する DB クラスターのプライマリインスタンスを明示的に作成する必要があります。プライマリ インスタンスは、DB クラスターで作成される初期の DB インスタンスです。

以下のパラメータを指定して CreateDBInstance Amazon RDS API コマンドを使用することで、DB クラスターにプライマリインスタンスを作成できます。

  • DBClusterIdentifier

    DB クラスターの名前。

  • DBInstanceClass

    プライマリインスタンスに使用するための DB インスタンス名。

  • DBInstanceIdentifier

    プライマリインスタンスの名前。

  • Engine=aurora

この例では、myinstanceclass で指定される DB インスタンスクラスを使用して、myreadreplicacluster という名前の DB クラスターに myreadreplicainstance という名前のプライマリインスタンスを作成します。

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=myreadreplicacluster &DBInstanceClass=myinstanceclass &DBInstanceIdentifier=myreadreplicainstance &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request &X-Amz-Date=20140424T194844Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77

Aurora リードレプリカの表示

AWS Management Console または AWS CLI を使用すると、Aurora MySQL DB クラスターでの、MySQL から Aurora MySQL へのレプリケーション関係を確認できます。

Aurora リードレプリカのプライマリ MySQL DB インスタンスを表示するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. Aurora リードレプリカの DB クラスターを選択して、その詳細を表示します。プライマリの MySQL DB インスタンスの情報は、[レプリケーション出典] フィールドに表示されます。

    MySQL プライマリを表示

AWS CLI により、Aurora MySQL DB クラスターでの Aurora MySQL レプリケーションと MySQL の関係性を確認するには、describe-db-clusters および describe-db-instances コマンドを使用します。

どの MySQL DB インスタンスがプライマリかを判別するには、describe-db-clusters を使用して、Aurora リードレプリカのクラスター識別子を --db-cluster-identifier オプションに指定します。レプリケーションのプライマリである DB インスタンスの ARN については、出力の ReplicationSourceIdentifier 要素を参照してください。

どの DB クラスターが Aurora リードレプリカであるかを判別するには、describe-db-instances を使用して、MySQL DB インスタンスのインスタンス識別子を --db-instance-identifier オプションに指定します。Aurora リードレプリカの DB クラスター識別子については、出力の ReadReplicaDBClusterIdentifiers 要素を参照してください。

Linux、macOS、Unix の場合:

aws rds describe-db-clusters \ --db-cluster-identifier myreadreplicacluster
aws rds describe-db-instances \ --db-instance-identifier mysqlprimary

Windows の場合:

aws rds describe-db-clusters ^ --db-cluster-identifier myreadreplicacluster
aws rds describe-db-instances ^ --db-instance-identifier mysqlprimary

Aurora リードレプリカの昇格

移行が完了したら、AWS Management Console または AWS CLI を使って、Aurora リードレプリカをスタンドアロンの DB クラスターに昇格することができます。

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

Aurora リードレプリカを昇格する前に、出典 MySQL DB インスタンスに対するトランザクションの書き込みをすべて停止し、Aurora リードレプリカのレプリカラグが 0 になるまで待ちます。Aurora リードレプリカのレプリカラグを確認するには、SHOW SLAVE STATUS (Aurora MySQL バージョン 2) または SHOW REPLICA STATUS (Aurora MySQL バージョン 3) コマンドを Aurora リードレプリカに対して呼び出します。[マスターから数秒遅れ] 値をチェックします。

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

Aurora リードレプリカを Aurora DB クラスターに昇格させるには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. Aurora リードレプリカの DB クラスターを選択します。

  4. [アクション] で、[Promote (昇格)] を選択します。

  5. [リードレプリカの昇格] を選択します。

昇格したら、以下の手順を実行して昇格が完了したことを確認します。

Aurora リードレプリカが昇格したことを確認するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインの [Events] (イベント) を選択します。

  3. [イベント] ページで、昇格したクラスターの Promoted Read Replica cluster to a stand-alone database cluster イベントがあることを確認します。

昇格が完了したら、プライマリ MySQL DB インスタンスと Aurora リードレプリカのリンクは解除され、DB インスタンスは必要に応じて安全に削除できるようになります。

Aurora リードレプリカをスタンドアロン DB クラスターに昇格させるには、AWS CLI の promote-read-replica-db-cluster コマンドを使用します。

Linux、macOS、Unix の場合:

aws rds promote-read-replica-db-cluster \ --db-cluster-identifier myreadreplicacluster

Windows の場合:

aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier myreadreplicacluster