2
2

More than 1 year has passed since last update.

AWS RDS: 東京リージョンで日次バックアップを取得し、大阪リージョンにコピーしてリストアする方法

Last updated at Posted at 2023-04-14

AWS RDS のバックアップとクロスリージョンリストア

この記事では、東京リージョン (ap-northeast-1) で日次バックアップを取得し、大阪リージョン (ap-northeast-3) にコピーしてリストアする方法について説明します。

バックアップ要件

  • 東京リージョン(ap-northeast-1)で稼働するRDSを日次でバックアップする・維持する期間は仕様上の最大値とする。
  • 東京リージョン(ap-northeast-1)でバックアップしたデータを日次で大阪リージョン(ap-northeast-3)へコピーし、維持する期間は1年とする。

東京リージョン(ap-northeast-1)でのRDSバックアップ

  • 自動バックアップ機能を無効にする
    バックアップウィンドウが明示的に設定されていない場合、AWSはランダムな30分間の期間を選択し、その期間内に自動バックアップを開始します。今回、AWS BackupプランでRDSバックアップをスケジュールするので自動バックアップ機能は無効にしておくことをお勧めします。これにより、2回バックアップが取得されることを防ぐことができます。
db.tf
resource "aws_db_instance" "example" {
  # ...
  backup_retention_period = 0 // Controlled by backup plan

東京リージョン(ap-northeast-1)から大阪リージョン(ap-northeast-3)へのバックアップデータのコピー

  • 東京リージョンと大阪リージョンの両方で、バックアップデータを格納するための AWS Backup Vault を作成します。
main.tf
provider "aws" {
  alias  = "tokyo"
  region = "ap-northeast-1"
}
provider "aws" {
  alias  = "osaka"
  region = "ap-northeast-3"
}
vault.tf
resource "aws_backup_vault" "tokyo" {
  provider = aws.tokyo
  name = "vault-tokyo"
}

resource "aws_backup_vault" "osaka" {
  provider = aws.osaka
  name     = "vault-osaka"
}
  • 東京リージョンでバックアップし、そのデータを大阪リージョンへコピーするためにCrossRegionCopyを有効化します
backup.tf
resource "aws_backup_plan" "multi_region" {
  name = "multi-region-backup"

  rule {
    rule_name         = "multi-region-backup-rule"
    target_vault_name = aws_backup_vault.tokyo.name
    schedule          = "cron(00 14 * * ? *)" // 23:00UTC+9

    lifecycle {
      delete_after = "35"
    }

    copy_action {
      destination_vault_arn = aws_backup_vault.osaka.arn
      lifecycle {
        delete_after = "365" // 1年
      }
    }
  }
}
iam-role.tf
data "aws_iam_role" "awsbackupservicerolepolicyforbackup" {
  name = "AWSBackupServiceRolePolicyForBackup"
}

resource "aws_iam_role" "example_backup" {
  name = "example-backup"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          Service = "backup.amazonaws.com"
        }
      }
    ]
  })
}

resource "aws_iam_role_policy_attachment" "example_backup" {
  policy_arn = data.aws_iam_role.awsbackupservicerolepolicyforbackup.arn
  role       = aws_iam_role.example_backup.id
}

リストアについて注意点

  1. RDSのリージョン間コピーを使用した場合、コピー先リージョンでリストアする際には、AWSマネージド型キー(aws/rds というデフォルトのマネージドキー)しか使用できません。そもそも、データ暗号化で使用するKMSキーはリージョン固有なので、東京リージョンで使用したKMSキーを他リージョンでは使用できません。
  2. コピー元リージョンで使用しているインスタンスタイプがコピー先リージョンでは提供されておらず、使用できないこともあります。

まとめ

この記事では、東京リージョンで日次 RDS バックアップを取得し、大阪リージョンにコピーしてリストアする方法について説明しました。AWS Backup を使用することで、異なるリージョン間でのデータの移動やリストアを簡単に行うことができます。これにより、災害復旧やデータの可用性が向上し、ビジネスの継続性が確保されます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2