Amazon RDS: 既存のインスタンスにスナップショットを復元できない?代替方法とは?
Amazon RDS でスナップショットを既存のインスタンスに復元する方法
Amazon RDS では、スナップショットを使用して既存のDBインスタンスを復元することはできません。スナップショットから復元する場合は、新しいDBインスタンスを作成する必要があります。
手順
新しいDBインスタンスを作成する
RDSコンソール、AWS CLI、またはAPIを使用して、新しいDBインスタンスを作成します。スナップショットから復元するデータと同じエンジン、バージョン、およびパラメータグループを選択する必要があります。
スナップショットから新しいDBインスタンスを復元する
RDSコンソール、AWS CLI、またはAPIを使用して、スナップショットから新しいDBインスタンスを復元します。
補足
- 共有暗号化スナップショットから復元することはできません。まず、スナップショットのコピーを作成してから、そのコピーから復元する必要があります。
- ポイントインタイムリカバリを使用して、特定の時点のスナップショットから復元することができます。
- マルチAZ DBインスタンスを復元するには、スナップショットが作成されたリージョンと同じリージョンに新しいDBインスタンスを作成する必要があります。
- この回答は、Amazon RDS for MySQL、Amazon RDS for PostgreSQL、およびAmazon RDS for MariaDBに適用されます。
- Aurora MySQLおよびAurora PostgreSQLでは、スナップショットを既存のDBクラスターに復元することができます。詳細については、Auroraドキュメントを参照してください。
プログラミングによる復元
以下のコードスニペットは、AWS CLIを使用してスナップショットから新しいDBインスタンスを復元する方法を示しています。
aws rds restore-db-instance-from-snapshot \
--db-instance-identifier new-db-instance-identifier \
--snapshot-identifier my-snapshot-identifier
このコマンドは、my-snapshot-identifier
というスナップショットからnew-db-instance-identifier
という新しいDBインスタンスを作成します。
aws rds restore-db-instance-from-snapshot \
--db-instance-identifier new-db-instance-identifier \
--snapshot-identifier my-snapshot-identifier \
--db-instance-class db.m5.large \
--availability-zone us-east-1a
このコマンドは、以下の設定でmy-snapshot-identifier
というスナップショットからnew-db-instance-identifier
という新しいDBインスタンスを作成します。
- インスタンスクラス:
db.m5.large
- 可用性ゾーン:
us-east-1a
説明
--db-instance-identifier
: 新しいDBインスタンスの識別子--snapshot-identifier
: 復元するスナップショットの識別子--db-instance-class
: 新しいDBインスタンスのインスタンスクラス--availability-zone
: 新しいDBインスタンスの可用性ゾーン
オプション
以下のオプションを使用して、復元プロセスをさらにカスタマイズできます。
--db-name
: 新しいDBインスタンスのデータベース名--engine
: 新しいDBインスタンスのエンジンバージョン--character-set-name
: 新しいDBインスタンスの文字セット--storage-type
: 新しいDBインスタンスのストレージタイプ--vpc-security-group-ids
: 新しいDBインスタンスに適用するVPCセキュリティグループのID--subnet-id
: 新しいDBインスタンスのサブネットID
注意事項
- このコードスニペットは例示のみを目的としており、本番環境で使用されるように設計されていません。本番環境でRDSを使用する場合は、AWSドキュメントを参照して、適切な構成と手順に従ってください。
- スナップショットから復元する前に、スナップショットが作成されたリージョンとエンジンバージョンと互換性のある新しいDBインスタンスを作成する必要があります。
- 共有暗号化スナップショットから復元することはできません。まず、スナップショットのコピーを作成してから、そのコピーから復元する必要があります。
新しいDBインスタンスを作成し、スナップショットから復元する
これが最も一般的で推奨される方法です。手順は以下の通りです。
- 新しいDBインスタンスを作成する。スナップショットから復元するデータと同じエンジン、バージョン、およびパラメータグループを選択する必要があります。
- スナップショットから新しいDBインスタンスを復元する。
この方法の利点は、以下の通りです。
- 既存のインスタンスに影響を与えずに復元できます。
- ポイントインタイムリカバリを使用して、特定の時点のスナップショットから復元することができます。
- 新しいDBインスタンスを作成する必要があるため、時間がかかります。
- 新しいDBインスタンスに対してストレージコストが発生します。
Auroraであれば、スナップショットを既存のDBクラスターに復元する
Aurora MySQLおよびAurora PostgreSQLでは、スナップショットを既存のDBクラスターに復元することができます。手順は以下の通りです。
- Auroraクライアントまたはコンソールを使用して、スナップショットからDBクラスターを復元する。
- 既存のDBクラスターに復元できるため、ダウンタイムが少なくなります。
- Aurora MySQLおよびAurora PostgreSQLのみで利用可能です。
- ポイントインタイムリカバリはサポートされていません。
- AWS Backupを使用してスナップショットを復元する。これは、より新しい方法で、さまざまなAWSサービスのバックアップと復元を単一のツールで管理できます。
- RDSのスナップショットをS3にエクスポートし、そこから別のデータベースエンジンにインポートする。これは、より高度なユーザー向けのオプションです。
どの方法を選択するべきですか?
最適な方法は、ニーズによって異なります。以下の点を考慮する必要があります。
- 使用しているデータベースエンジン(MySQL、PostgreSQL、MariaDBなど)
- 必要とする復元レベル(最新のスナップショットからの完全復元、特定の時点への復元など)
- 許容されるダウンタイム量
- ストレージコスト
mysql amazon-web-services amazon-rds