はじめに
DX 技術本部の yu-yama@sra です。
AWS 環境で DB(Aurora)のバックアップ・リストアを検証した際に、
AWS Backup で復旧ポイントからリストアする時の挙動が思っていたのと違ったのでここに記します。
TL;DR
AWS Backup からリストアするとインスタンスが作成されないのでそのままではDBにアクセスできません。RDS コンソールからリストアしましょう
Aurora クラスターを AWS Backup の復元ジョブにて復旧ポイントからリストアする場合の挙動
-
これはどういう状況かというと、DB クラスターのみが作成され、クラスターのプライマリインスタンスやレプリカインスタンスが作成されていない状態1になります2。
Amazon Aurora DB クラスター - Amazon Aurora -
リストアを行うと復旧ポイント時点での状態で新規にクラスターが立ち上がり、DBアクセスできる状態になっていることを期待していました。
この状態からDBアクセスするためにやること
- インスタンスがないのでインスタンスを作成する必要があります。
- マネジメントコンソールの現在の動作として、 RDSコンソールからプライマリインスタンスを追加する操作を実施できないため、AWS CLI の
create-db-instance
などの API にてクラスターに対して DB インスタンスを追加します。
参考:Amazon Aurora DB クラスターの作成 - Amazon Aurora
コンソールを使用して DB クラスターを作成する場合、Amazon RDS は自動的に使用する DB クラスターのプライマリインスタンス (ライター) を作成します。AWS CLI を使用して DB クラスターを作成する場合、使用する DB クラスターのプライマリインスタンスを明示的に作成する必要があります。プライマリ インスタンスは、DB クラスターで作成される最初の DB インスタンスです。
DB クラスターのプライマリインスタンスを作成するには、
create-db-instance
AWS CLI コマンドを呼び出します。--db-cluster-identifier
オプション値として DB クラスターの名前を含めます。Linux、macOS、Unix の場合:
aws rds create-db-instance --db-instance-identifier sample-instance --db-cluster-identifier sample-cluster --engine aurora-postgresql --db-instance-class db.r4.large
Windows の場合:
aws rds create-db-instance --db-instance-identifier sample-instance --db-cluster-identifier sample-cluster --engine aurora-postgresql --db-instance-class db.r4.large
- インスタンスを作成することで、やっとDBにアクセスできる状態になります。
Aurora クラスターを RDS コンソールにて DB スナップショットから DB クラスターをリストアした場合の挙動
- AWS backupで取得したスナップショットはRDSコンソールからも参照できるので「RDS-スナップショット-バックアップサービス-対象のスナップショットを選択-スナップショットを復元」と復元する
-
インスタンスが作成された状態で新規にクラスターが立ち上がる3。
まとめ
AWS backupでバックアップの一元管理できるようになったが、リストアの仕様が各サービスのコンソールと違う恐れがあるため、AWS backup でリストアする際は要確認。