こんにちは。アプリケーションサービス部の兼安です。
本記事は時系列データに特化したDB、Amazon Timestreamのバックアップとリストアについての記事です。
本記事の対象者
- Amazon Timestreamで、本番を意識した運用を行いたい方
- Amazon TimestreamとAWS Backupの基礎知識を持っている方
Amazon TimestreamとAWS Backupの基本操作については割愛してるのでご了承ください。
Amazon Timestreamのバックアップ
まずは、バックアップの方法について説明します。
Amazon Timestreamのバックアップは、AWS Backupを使用して行います。
基本的に操作はこちらのAWS公式ページの手順に従います。
オンデマンドバックアップの作成
まずは、オンデマンドバックアップの作成方法について説明します。
AWS Backupのナビゲーションペインで、保護されたリソース
をクリック、オンデマンドバックアップを作成
をクリックします。
作成画面で、必要な情報を入力していきます。
まずは、リソースタイプにTimestream
を選択して、テーブルを選択します。
バックアップボールトとIAMロールを選択して、オンデマンドバックアップを作成
をクリックすれば完了です。
バックアップジョブが始まり、一定時間後にバックアップができます。
スケジュールバックアップの作成
次に、スケジュールバックアップの作成方法について説明します。
スケジュールバックアップの場合は、事前にバックアッププランを作ります。
バックアッププランの画面で、画面下のリソースを割り当てる
をクリックします。
オンデマンドバックアップの時とは画面構成が異なります。
まずは、名前とIAMロールを入力します。
特定のリソースタイプを含める
を選択し、リソースタイプにTimestream
を選択、そしてテーブル名を選択します。
あとは、リソースを割り当てる
をクリックすれば完了です。
バックアップに必要なIAMロール
バックアップの手順の中で一番引っかかりやすいのは、IAMロールの設定です。
デフォルトを選んだ場合は問題ないのですが、独自のIAMロールを使用する場合は、こちらのページを参考にされるとよいと思います。
AWSBackupServiceRolePolicyForBackup — Amazon Timestream リソースのバックアップを AWS Backup に許可するアクセス許可を追加しました。
AWS Backup では、timestream:StartAwsBackupJob、timestream:GetAwsBackupStatus、timestream:ListTables、timestream:ListDatabases、timestream:ListTagsForResource、timestream:DescribeTable、timestream:DescribeDatabase および timestream:DescribeEndpoints のアクセス許可が追加されました。AWSBackupServiceRolePolicyForRestores — Amazon Timestream リソースの復元を AWS Backup に許可するアクセス許可を追加しました。
AWS Backup では、timestream:StartAwsRestoreJob、timestream:GetAwsRestoreStatus、timestream:ListTables、timestream:ListDatabases、timestream:ListTagsForResource、timestream:DescribeTable、timestream:DescribeDatabase、s3:GetBucketAcl および timestream:DescribeEndpoints のアクセス許可が追加されました。
timestream:StartAwsBackupJob
やtimestream:DescribeEndpoints
など、知らなければ浮かばないようなポリシーが必要です。
Amazon Timestreamのリストア
バックアップができたので、次はリストアの方法について説明します。
リストア先は新しいテーブルができる
Amazon Timestreamのリストアはテーブル単位で行います。
リストアするとバックアップからテーブルそのものが新しくできます。
後で出てきますが、リストアでは特に何も指定しない場合、元のテーブル名 + _restored
という名前で新しいテーブルができます。
_restored
の部分を削除すれば元のテーブル名のままでリストアができますが、この場合は事前に元のテーブルは削除しておく必要があります。
リストアの手順
リストアの手順も基本的にAWSの公式ページの手順に従います。
docs.aws.amazon.com
AWS Backupのナビゲーションペインで、バックアップ
をクリック、一覧からリストアしたいバックアップを選択した状態で、復元
をクリックします。
編集画面でリストアに必要な情報を入力していきます。
新しいテーブルの名前
は、バックアップのテーブル名+_restored
が初期値として入っているはずです。
元のテーブル名のままでリストアしたい場合は、_restored
の部分の削除が必要です。
送信先データベース
は、リストア先のデータベースを選択してください。
メモリストアの保持期間
、マグネティックストアの保持期間
、S3 エラーログの場所
は、基本バックアップ元と同じ値がよいと思います。
ちなみに保持期間から外れたデータはリストアの過程で自動的に削除されるようです。
復元ロール
を指定して、バックアップを復元
をクリックして完了です。
復元ロール
をIAMロールを選択
とした場合は、バックアップ同様AWSの公式サイトを参考にしてポリシーを用意するとよいと思います。
AWS Backup 用の管理ポリシー - AWS Backup
なお、S3 エラーログの場所
を指定した場合は指定したバケットに対する書き込みポリシーが必要なのも忘れないでください。
以上で、リストアの作業は完了です。
一定時間後にリストアしたテーブルが出来上がります。
レコードレベルでリストアするには
最後に、時系列DBだとあまりやらないかもしれませんが、レコードレベルでリストアする方法を考えます。
こちらは、エクスポート・インポート機能を駆使すれば実現できると思います。
エクスポート・インポートについてはこちらの記事をご覧ください。
リストアする時にテーブルを別名でリストアし、レコードをエクスポート。
エクスポートしたファイルを編集して、特定のレコードだけインポートの流れです。
兼安 聡(執筆記事の一覧)
アプリケーションサービス部 DS3課所属
2024 Japan AWS Top Engineers (Database)
2024 Japan AWS All Certifications Engineers
認定スクラムマスター
広島在住です。今日も明日も修行中です。