AWS RDSでリードレプリカが作成できない場合の対処について

2021.04.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

AWS コンソールより AWS RDS のリードレプリカを作成しようとしましたが、グレーアウトされていてできませんでした。 どうすれば良いでしょうか。

個人検証環境にて再現

どう対応すればいいの?

環境を確認したところ、自動バックアップが無効になっていました。

リードレプリカを作成する際、Amazon RDS はソース DB インスタンスの DB スナップショットを取得し、レプリケーションを開始します。 そのため、データベースの自動バックアップが無効になっているとリードレプリカの作成ができません。 リードレプリカを作成するためには、データベースのバックアップ保持期間を0以外の値に設定することで、自動バックアップを有効にする必要があります。

自動バックアップを有効にしたデータベースにて、無事リードレプリカが作成されました。

リードレプリカとは?

あらためてリードレプリカとは何かについて記載します。

一般的にはサーバの負荷が高まっている場合は、スケールアップ(サーバ自体のスペックを上げる)もしくはスケールアウト(サーバの処理台数を増やす)を考えます。 スケールアップは一台のサーバのスペック増のため、限界があります。 RDSのようなRelationalデータベースの場合、データの一貫性と可用性を保証したいので、単純にスケールアウトを考えるのは難しくなります。

参考: CAP定理

そこで、データの読み取りを専門に行う「リードレプリカ」というデータベースをプライマリDBインスタンスのスナップショットから作成します。 リードレプリカが読み取りを処理をすることで、プライマリDBインスタンスの負荷を下げることができるように設定します。 つまり、リードレプリカは、読み取り専用接続のみ許可される DB インスタンスとなります。 高可用性のために、スタンバイレプリカを持たせるマルチAZ構成も設定できます。

スタンバイレプリカとのレプリケーションは同期的です。 リードレプリカは、プライマリDBインスタンスに行った更新を非同期的にコピーします。

図にすると以下のイメージです。

リードレプリカは特に読み取り集中型のワークロードの負荷を下げるのに有効です。 プライマリDBに障害が発生した場合には、昇格もできます。(非同期コピーであることに注意した上での利用が可能です)

関連情報

  • RDS リードレプリカの説明に関しての詳細は以下をご参照ください。

リードレプリカの使用