[Amazon RDS] スナップショットの共有機能を試してみた

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

はじめに

AWSチームのすずきです。

AWSが提供するマネージドなRDBMSのAmazon RDS。 これまで、日時や任意のタイミングでバックアップとして取得したスナップショットは、 同一AWSアカウント内の利用に制限されていました。

今回、RDSのアップデートにより、EBSのスナップショットやAMIと同様、 RDSのスナップショットも異なるAWSアカウント間で共有したり、 パブリックに公開する事が可能となりました。

東京リージョンのRDS(MySQL)のスナップショットを利用して、 異なるAWSアカウントからデータベースのリストアを試す機会がありましたので、 その内容を紹介します。

エクスポート操作

スナップショットの作成

  • 自動スナップショット(日時バックアップ)は共有対象外のため、手動スナップショットを作成します。

rds-share-snapshot-06

  • ステータス「利用可能」、進捗「完了」となるまで待機します。

rds-share-snapshot-07

スナップショットの共有

  • 設定対象とするスナップショットを指定し、共有設定を行います。

rds-share-snapshot-08

  • 共有先のAWSアカウント番号を指定します。

rds-share-snapshot-09

  • 意図したAWSアカウント番号である事を確認し、「保存」します。

rds-share-snapshot-10

インポート操作

  • 先に共有先として指定したAWSアカウントでAWSコンソールにログイン済みとします。

スナップショットの検索

  • フィルタとして「共有ファイル」を指定すると、共有先として自身が指定されたスナップショットが表示されます。

rds-share-snapshot-11

スナップショットの復元

  • 「スナップショットの復元」よりリストアを行います。

rds-share-snapshot-12

  • 復元操作は、従来の自身のスナップショットからと同様です。

rds-share-snapshot-13

まとめ

これまで、異なるAWSアカウント間でRDSのデータベースのコピーや移動を行うためには、 MySQLであれば「mysqldump」、PostgreSQLでは「pg_dump」などを用いたデータのエクスポートとインポート操作を必要とし、 エクスポート時のデータベース負荷や、作業時間が問題となる事がありました。

今回、RDSのスナップショットを共有可能となった事で、AWSアカウント間のデータベースのコピーが簡単に実現できるようになりました。 また、初期設定済みのDBを組み込んだCloudFormationのテンプレートなどにも応用が出来ると思われます。

ただし、パブリック公開オプションを有効にして公開したRDSのスナップショットは、全てのAWS利用者から参照が可能な状態となります。AWSコンソールからの設定時に同意が求められるなどの配慮がなされていますが、十分に注意してご利用下さい。

  • パブリック公開設定時の案内

rds-share-snapshot-15

  • パブリック公開されている、RDSスナップショット rds-share-snapshot-14