[小ネタ] RDS にリードレプリカが含まれていると停止できません
コーヒーが好きな emi です。
タイトルがすべてなのですが、RDS にリードレプリカが含まれていると停止できません。
リードレプリカ自体も停止できませんし、リードレプリカの元となっているソース DB も停止できません。
リードレプリカが含まれているか、リードレプリカである DB インスタンスは停止できません。
DB インスタンスの停止に関する制限事項
テストであっても止められないので料金に注意
例えばアプリケーションのテストで、リードレプリカを使った負荷分散テストやパフォーマンス改善テストをする場合、リードレプリカがあると停止できないので料金に注意してください。
「テスト中だから節約のために停止しよう」などといったことはできません。
テスト中のコストが気になる場合はリードレプリカを削除しましょう。
挙動の確認
結論は冒頭で申し上げた通りなのですが、挙動も確認しましたのでご紹介します。
検証構成は以下です。Multi-AZ DB instance 構成の RDS for MySQL に、リードレプリカを 2 台作成しています。
- 補足
- 本当にリードレプリカを作るだけの検証をしたかったので深く考えていない AZ 配置になっています。
- AZ 間のレイテンシーの影響を受けないようにしたい場合はソース DB と同じ AZ にリードレプリカを配置すべきです。
リードレプリカを停止しようとすると
以下のように、リードレプリカは 2 台とも「一時的に停止」がグレーアウトしており、停止できません。
AWS CLI からも停止できません。
リードレプリカを停止しようとする AWS CLI コマンド
aws rds stop-db-instance \ --db-instance-identifier database-1-secrets-test-read-replica2
▼実行結果
[cloudshell-user@ip-10-132-71-122 ~]$ aws rds stop-db-instance \ > --db-instance-identifier database-1-secrets-test-read-replica2 An error occurred (InvalidDBInstanceState) when calling the StopDBInstance operation: Cannot stop or start a Read-Replica target instance [cloudshell-user@ip-10-132-71-122 ~]$
An error occurred (InvalidDBInstanceState) when calling the StopDBInstance operation: Cannot stop or start a Read-Replica target instance
(機械翻訳)StopDBInstance 操作の呼び出し時にエラーが発生しました(InvalidDBInstanceState): Read-Replica ターゲット・インスタンスを停止または開始できません。
ソース DB を停止しようとすると
ソース DB の場合、「一時的に停止」は選択できてしまいます。停止操作を途中まで進められますが、やはりエラーになります。
Cannot stop or start the source instance for a Read-Replica
(機械翻訳)Read-Replicaのソース・インスタンスを停止または開始できない。
AWS CLI からも停止できません。
ソース DB を停止しようとする AWS CLI コマンド
aws rds stop-db-instance \ --db-instance-identifier database-1-secrets-test
▼実行結果
[cloudshell-user@ip-10-132-71-122 ~]$ aws rds stop-db-instance \ > --db-instance-identifier database-1-secrets-test An error occurred (InvalidDBInstanceState) when calling the StopDBInstance operation: Cannot stop or start the source instance for a Read-Replica [cloudshell-user@ip-10-132-71-122 ~]$
An error occurred (InvalidDBInstanceState) when calling the StopDBInstance operation: Cannot stop or start the source instance for a Read-Replica
(機械翻訳)StopDBInstance 操作の呼び出し時にエラーが発生しました(InvalidDBInstanceState): Read-Replica のソース・インスタンスを停止または開始できません。
以上です。
参考
- リードレプリカには通常の RDS インスタンスと同じインスタンス料金が発生します。ソース DB と同じストレージ料金も発生するため料金はシンプルに 2 倍になります。
- ソース DB からリードレプリカへのデータレプリケーションで発生するデータ通信料金は無料です。