{Aurora}AWS リージョン間での Amazon Aurora MySQL DB クラスターのレプリケーション

ソース DB クラスターごとに、リードレプリカとすることができるクロスリージョン DB クラスターは最大 5 つです。

グローバルデータベースとの相違点:
グローバルデータベースの場合、プライマリ DB クラスターからすべてのセカンダリへのレプリケーションは、
データベースエンジンではなく Aurora ストレージレイヤーによって処理されるため、
変更をレプリケートする際のラグタイムは 通常は 1 秒未満で、最小となります。

Aurora PostgreSQLベースの DB クラスターは、異なる AWS リージョンの Aurora レプリカをサポートしていません。

(1)暗号化なしの場合

-- ソース DB クラスターの作成

aws rds create-db-cluster-parameter-group \
--db-parameter-group-family aurora-mysql5.7 \
--db-cluster-parameter-group-name cpg01 \
--description cpg01

aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=binlog_format,ParameterValue=MIXED,ApplyMethod=pending-reboot

aws rds create-db-cluster \
--db-cluster-identifier cluster11 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password' \
--db-cluster-parameter-group-name cpg01

aws rds create-db-instance \
--db-instance-identifier cluster11-instance01 \
--db-cluster-identifier cluster11 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade


-- クロスリージョンリードレプリカDB クラスターの作成
export AWS_DEFAULT_REGION=ap-northeast-3

aws rds create-db-cluster \
--db-cluster-identifier cluster12 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--replication-source-identifier arn:aws:rds:ap-northeast-1:999999999999:cluster:cluster11


aws rds describe-db-clusters --db-cluster-identifier cluster12
aws rds describe-db-clusters | jq -c '.DBClusters | [.DBClusterIdentifier , .Status]'


aws rds create-db-instance \
--db-instance-identifier cluster12-instance01 \
--db-cluster-identifier cluster12 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade

 

-- リードレプリカをスタンドアロンのDB クラスターに昇格させる
aws rds promote-read-replica-db-cluster \
--db-cluster-identifier cluster12

(2)暗号化ありの場合

-- ソース DB クラスターの作成

aws rds create-db-cluster-parameter-group \
--db-parameter-group-family aurora-mysql5.7 \
--db-cluster-parameter-group-name cpg01 \
--description cpg01

aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name cpg01 \
--parameters ParameterName=binlog_format,ParameterValue=MIXED,ApplyMethod=pending-reboot

aws rds create-db-cluster \
--db-cluster-identifier cluster21 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--master-username root \
--master-user-password 'password' \
--db-cluster-parameter-group-name cpg01 \
--storage-encrypted

aws rds create-db-instance \
--db-instance-identifier cluster21-instance01 \
--db-cluster-identifier cluster21 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade


-- クロスリージョンリードレプリカDB クラスターの作成
export AWS_DEFAULT_REGION=ap-northeast-3

aws rds create-db-cluster \
--db-cluster-identifier cluster22 \
--engine aurora-mysql \
--engine-version 5.7.mysql_aurora.2.10.0 \
--replication-source-identifier arn:aws:rds:ap-northeast-1:999999999999:cluster:cluster21 \
--storage-encrypted \
--kms-key-id arn:aws:kms:ap-northeast-3:999999999999:key/11111111-2222-3333-4444-555555555555 \
--source-region ap-northeast-1


クロスリージョンレプリカ側ではカスタマー管理CMKを使用する必要あり


aws rds describe-db-clusters --db-cluster-identifier cluster22
aws rds describe-db-clusters | jq -c '.DBClusters | [.DBClusterIdentifier , .Status]'


aws rds create-db-instance \
--db-instance-identifier cluster22-instance01 \
--db-cluster-identifier cluster22 \
--db-instance-class db.t3.small \
--engine aurora-mysql \
--no-auto-minor-version-upgrade


-- リードレプリカをスタンドアロンのDB クラスターに昇格させる
aws rds promote-read-replica-db-cluster \
--db-cluster-identifier cluster22