[アップデート] Amazon RDS for SQL Server でリードレプリカからスナップショットが取れるようになりました
いわさです。
Amazon RDS for SQL Server のリードレプリカで、レプリカインスタンスから直接 DB スナップショットを作成できるようになりました。
これまでスナップショットはスタンドアロンインスタンスとプライマリインスタンスでしか取れず、リードレプリカからは手動スナップショット作成も自動バックアップもできませんでした。
本日時点の日本語版ドキュメントには、まだアップデート前の制限がそのまま残っています。こんな感じ。
Amazon RDS for SQL Server では、次の機能はサポートされていません。
- リードレプリカのバックアップ保持
- リードレプリカからのポイントインタイムリカバリ
- リードレプリカの手動スナップショット
- マルチ AZ リードレプリカ
- リードレプリカのリードレプリカの作成
- リードレプリカへのユーザーログインの同期
今回のアップデートで、この中の「リードレプリカのバックアップ保持」と「リードレプリカの手動スナップショット」ができるようになりました。英語版ドキュメントの制限リストからはこの 2 つが外れていました。
レプリカのまま次の操作ができます。
- 手動スナップショットを取る
- 自動バックアップを有効にする
- 削除時に自動バックアップを残す
今回こちらを確認してみたので紹介します。
実際に確認してみる
前提として RDS for SQL Server のリードレプリカ機能は Enterprise Edition でのみ使えます。
今回は東京リージョンで SQL Server 2022 の Enterprise Edition を作成して、ソースインスタンスとリードレプリカを 1 台ずつ用意しました。

ではスナップショット取得やってみますか。
スナップショットを取得しようとレプリカの blog-sqlee-replica を選んでアクションメニューを開くと、「スナップショットの取得」はグレーアウトしていて選べませんでした。ここじゃないらしい。

色々触っててわかったのですが、プライマリの blog-sqlee-source を選んでアクションメニューから「スナップショットの取得」に進み、スナップショット取得画面の「DB インスタンス」ドロップダウンでリードレプリカの blog-sqlee-replica を選べるようになっていました。


おそらく、このドロップダウンにレプリカが出てくることが、今回のアップデートで追加された部分です。多分!!
このままスナップショット作成実行してみると、レプリカ blog-sqlee-replica を対象とする手動スナップショットが作成されました。
スナップショット一覧の「DB インスタンスまたはクラスター」列もレプリカ名になっていますね。

特にリードレプリカのスナップショットだから何か制限があるわけでは無さそうで、試しに新しいインスタンス blog-sqlee-restored として復元したところ、スタンドアロンインスタンスとして問題なく起動しました。

レプリカの自動バックアップを有効にする
レプリカは作成直後だと自動バックアップが無効(保持期間 0 日)になっています。
レプリカを変更して保持期間を 1 日以上にすると、自動バックアップが有効になりました。ただ、キャプチャ撮り忘れました。。。
また、レプリカを削除するときに自動バックアップを残す運用もできるようです(今回はそこまでは試していません)。
リードレプリカからの PITR は非対応
一方で、リードレプリカからのポイントインタイムリカバリは今回も対象外です。
レプリカを指定して PITR を実行すると、次のように拒否されました。
$ aws rds restore-db-instance-to-point-in-time \
--source-db-instance-identifier blog-sqlee-replica \
--target-db-instance-identifier blog-sqlee-pitr-test \
--use-latest-restorable-time
An error occurred (PointInTimeRestoreNotEnabled) when calling the RestoreDBInstanceToPointInTime operation: RDS for SQL Server doesn't support point-in-time recovery (PITR) for read replicas.
公式ドキュメントにも、レプリカから復元したい場合は手動スナップショットか自動バックアップのスナップショットを使うようにと書かれています。
Point-in-time recovery (PITR) from a read replica isn't supported. To restore, use a manual snapshot or an automated backup snapshot of the read replica.
認識しておきましょう。
さいごに
本日は Amazon RDS for SQL Server でリードレプリカのスナップショットが取れるようになったアップデートを確認してみました。
プライマリインスタンスがシングル AZ の場合、スナップショット取得時に数秒から数分の I/O 中断が起きます。
Creating this DB snapshot on a Single-AZ DB instance results in a brief I/O suspension that can last from a few seconds to a few minutes, depending on the size and class of your DB instance.
こういうの回避できるのでアリですね。
Enterprise Edition でリードレプリカ使っている方はぜひ試してみてください。








