Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

バックアップの使用

Amazon RDS は、DB インスタンスの自動バックアップを作成および保存します。Amazon RDS は、DB インスタンスのストレージボリュームのスナップショットを作成し、個々のデータベースだけではなく、その DB インスタンス全体をバックアップします。

Amazon RDS は、DB インスタンスのバックアップウィンドウ中に自動的にバックアップを作成します。Amazon RDS は、指定したバックアップ保持期間に従って DB インスタンスの自動バックアップを保存します。必要に応じて、バックアップ保持期間内の任意の時点でデータベースを復旧できます。

自動バックアップは次のルールに従います。

  • 自動バックアップを行うには、DB インスタンスが ACTIVE 状態になっている必要があります。DB インスタンスが STORAGE_FULLなどの ACTIVE 以外の状態にある間は、自動バックアップは行われません。

  • コピーが同じ DB インスタンスの同じリージョンで実行されている間は、自動バックアップと自動スナップショットは発生しません。

また、DB スナップショットを手動で作成して、DB インスタンスを手動でバックアップすることもできます。DB スナップショットの作成について詳しくは、「DB スナップショットの作成」を参照してください。

DB インスタンスの最初のスナップショットには、フル DB インスタンスのデータが含まれています。同じ DB インスタンスの後続のスナップショットは差分です。つまり、直近のスナップショット以降に変更されたデータのみが保存されます。

自動および手動 DB スナップショットのコピー、および手動 DB スナップショットの共有を行うことができます。DB スナップショットのコピーに関する詳細は、「スナップショットのコピー」を参照してください。DB スナップショットの共有に関する詳細は、「DB のスナップショットの共有」を参照してください。

バックアップストレージ

各リージョンの Amazon RDS バックアップストレージは、そのリージョンの自動バックアップと手動 DB スナップショットで構成されています。バックアップストレージは、そのリージョンのすべてのインスタンスのデータベースストレージの合計と等しくなります。DB スナップショットを他のリージョンに移動すると、移動先リージョンのバックアップストレージは増加します。

バックアップストレージコストの詳細については、「Amazon RDS 料金表」を参照してください。

DB インスタンスの削除時に自動バックアップを保持することを選択した場合、自動バックアップは全保持期間にわたって保存されます。DB インスタンスの削除時に、[Retain automated backups (自動バックアップの保持)] を選択しない場合、すべての自動バックアップは DB インスタンスと一緒に削除されます。削除後は、自動バックアップを復旧することはできません。Amazon RDS によって DB インスタンスの削除前に最終的な DB スナップショットが作成されるように選択した場合、そのスナップショットを使用して DB インスタンスを復元できます。または、以前に作成した手動スナップショットを使用できます。手動スナップショットは削除されません。

バックアップウィンドウ

自動バックアップは、優先されるバックアップウィンドウ中に毎日行われます。バックアップウィンドウに割り当てられた時間より長い時間がバックアップに必要な場合、ウィンドウが終了した後もバックアップが完了するまでバックアップが継続します。DB インスタンスの週 1 回のメンテナンス時間とバックアップウィンドウは重複できません。

自動バックアップウィンドウ中、バックアッププロセスの開始時にストレージ I/O が一時中断することがあります (通常は数秒間)。マルチ AZ 配置のバックアップ中は、レイテンシーが数分間高くなることがあります。 MariaDB、MySQL、Oracle、PostgreSQL の場合、バックアップはスタンバイから取得されるため、マルチ AZ 配置のバックアップ中プライマリで I/O アクティビティは中断しません。SQL Server の場合、マルチ AZ 配置のバックアップ中 I/O アクティビティが一時中断します。

DB インスタンスの作成時に優先バックアップウィンドウを指定しない場合、Amazon RDS によって 30 分のバックアップウィンドウがデフォルトで割り当てられます。このウィンドウは、各 AWS リージョンで定められた 8 時間の時間ブロックからランダムに選択されます。次の表は、デフォルトでバックアップウィンドウが割り当てられる各リージョンの時間を示します。

サービス対象 時間ブロック
米国西部 (オレゴン) リージョン 06:00–14:00 UTC
米国西部 (北カリフォルニア) リージョン 06:00–14:00 UTC
米国東部 (オハイオ) リージョン 03:00–11:00 UTC
米国東部 (バージニア北部) リージョン 03:00–11:00 UTC
アジアパシフィック (ムンバイ) リージョン 16:30–00:30 UTC
アジアパシフィック (ソウル) リージョン 13:00–21:00 UTC
アジアパシフィック (シンガポール) リージョン 14:00–22:00 UTC
アジアパシフィック (シドニー) リージョン 12:00–20:00 UTC
アジアパシフィック (東京) リージョン 13:00–21:00 UTC
カナダ (中部) リージョン 06:29–14:29 UTC
欧州 (フランクフルト) リージョン 20:00–04:00 UTC
欧州 (アイルランド) リージョン 22:00–06:00 UTC
欧州 (ロンドン) リージョン 06:00–14:00 UTC
南米 (サンパウロ) リージョン 23:00–07:00 UTC
AWS GovCloud (米国西部) 03:00–11:00 UTC

バックアップの保存期間

DB インスタンスを作成するとき、バックアップ保持期間を設定できます。バックアップ保持期間を設定しないと、Amazon RDS API または AWS CLI を使用して DB インスタンスを作成した場合、デフォルトのバックアップ保持期間は 1 日です。コンソールを使用して DB インスタンスを作成した場合、デフォルトのバックアップ保持期間は 7 日です。DB インスタンスを作成したら、バックアップ保持期間を変更できます。バックアップ保持期間は、0 ~ 35 日間で設定できます。バックアップ保持期間を 0 に設定すると、自動バックアップが有効になります。自動バックアップには、手動スナップショットの制限 (リージョンごとに 100) は適用されません。

重要

このパラメータを 0 から 0 以外の値、0 以外の値から 0 に変更した場合、機能停止が発生します。

自動バックアップの無効化

大量のデータをロードしている間など、特定の状況では、自動バックアップを一時的に無効にすることをお勧めします。

重要

自動バックアップは、無効にするとポイントインタイムリカバリも無効になるため、無効にしないことを強くお勧めします。DB インスタンスの自動バックアップを無効にすると、そのインスタンスの既存の自動バックアップがすべて削除されます。自動バックアップを無効にしてから再度有効にした場合、自動バックアップを再度有効にした時点からしか復元できません。

この例では、バックアップ保持パラメータを 0 に設定することによって、mydbinstance という名前の DB インスタンスの自動バックアップを無効にします。

コンソール

自動バックアップをすぐに無効にするには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択し、変更する DB インスタンスを選択します。

  3. [Modify] を選択します。[Modify DB Instance] ページが表示されます。

  4. [バックアップの保存期間] で [0 days (0 日)] を選択します。

  5. [Continue] を選択します。

  6. [すぐに適用] を選択します。

  7. 確認ページで、[Modify DB Instance] を選択して変更を保存し、自動バックアップを無効にします。

AWS CLI

自動バックアップをすぐに無効にするには、modify-db-instance コマンドを使用して、バックアップ保持期間を 0 に設定し --apply-immediately を指定します。

次の例では、自動バックアップをすぐに無効にします。

Linux、OS X、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 0 \ --apply-immediately

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 0 ^ --apply-immediately

変更が有効になるタイミングを知るにはタイミングを知るには、バックアップ保持期間の値が 0 になり mydbinstance のステータスが available になるまで、DB インスタンスに対して describe-db-instances を呼び出します。

aws rds describe-db-instances --db-instance-identifier mydbinstance
RDS API

自動バックアップをすぐに無効にするには、以下のパラメータを指定して ModifyDBInstance アクションを呼び出します。

  • DBInstanceIdentifier = mydbinstance

  • BackupRetentionPeriod = 0

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=0 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

自動バックアップの有効化

DB インスタンスで自動バックアップが有効になっていない場合、いつでも有効にすることができます。バックアップ保持期間を 0 以外の正の値に設定することで自動バックアップを有効にすることができます。自動バックアップを有効にしていると、RDS インスタンスおよびデータベースがオフラインになり、即座にバックアップが作成されます。

この例では、mydbinstance という名前の DB インスタンスのバックアップ保持期間パラメータを 0 以外の値 (この場合は 3) に設定することにより、DB インスタンスの自動バックアップを有効にします。

コンソール

自動バックアップをすぐに有効にするには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択し、変更する DB インスタンスを選択します。

  3. [Modify] を選択します。[Modify DB Instance] ページが表示されます。

  4. [バックアップの保存期間] で、ゼロ以外の正の値 (3 日など) を選択します。

  5. [Continue] を選択します。

  6. [すぐに適用] を選択します。

  7. 確認ページで、[Modify DB Instance] を選択して変更を保存し、自動バックアップを有効にします。

AWS CLI

自動バックアップをすぐに有効にするには、AWS CLI の modify-db-instance コマンドを使用します。

この例では、バックアップ保持期間を 3 日に設定することで、自動バックアップを有効にします。

以下のパラメータを含めます。

  • --db-instance-identifier

  • --backup-retention-period

  • --apply-immediately または --no-apply-immediately

Linux、OS X、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 3 \ --apply-immediately

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 3 ^ --apply-immediately
RDS API

自動バックアップをすぐに有効にするには、RDS API の ModifyDBInstance オペレーションを使用します。

この例では、バックアップ保持期間を 3 日に設定することで、自動バックアップを有効にします。

以下のパラメータを含めます。

  • DBInstanceIdentifier

  • BackupRetentionPeriod

  • ApplyImmediately = true

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=3 &ApplyImmediately=true &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

自動バックアップの保持

DB インスタンスを削除すると、自動バックアップを保持できます。

保持されている自動バックアップには、DB インスタンスからのシステムスナップショットとトランザクションログが含まれます。また、割り当て済みストレージや DB インスタンスクラスなど、アクティブなインスタンスに復元するために必要な DB インスタンスプロパティも含まれます。

MySQL、MariaDB、PostgreSQL、Oracle、Microsoft SQL Server の各エンジンを実行している RDS インスタンスの自動バックアップを保持できます。

AWS マネジメントコンソール、RDS API、および AWS CLI を使用すると、保持されている自動バックアップを復元または削除できます。

保持期間

保持されている自動バックアップのシステムスナップショットやトランザクションログは、ソース DB インスタンスの期限切れと同じ方法で期限切れになります。このインスタンス用に作成された新しいスナップショットやログがないため、保持されている自動バックアップは最終的には完全に期限切れになります。実際には、ソースインスタンスを削除したときに設定されていた保持期間の設定に基づいて、最後のシステムスナップショットが実行されている間は存続します。保持されている自動バックアップは、最後のシステムスナップショットの有効期限が切れると、システムによって削除されます。

保持されている自動バックアップは、DB インスタンスを削除するのと同じ方法で削除できます。コンソールまたは RDS API オペレーション DeleteDBInstanceAutomatedBackup を使用すると、保持されている自動バックアップを削除できます。

最終スナップショットは、保持されている自動バックアップから独立しています。自動バックアップを保持しているとしても、最終スナップショットを作成しておくことを強くお勧めします。保持されている自動バックアップは最終的に期限切れになるためです。最終スナップショットに有効期限はありません。

復元

保持されている自動バックアップを表示する場合は、自動バックアップページに切り替えます。コンソールのデータベーススナップショットのページで、保持されている自動バックアップに関連付けられた個別のスナップショットを表示できます。または、保持されている自動バックアップに関連付けられた個別のスナップショットを記述できます。そのページで、スナップショットのいずれかから DB インスタンスを直接復元できます。

復元された DB インスタンスは、デフォルトのパラメータグループとオプショングループに自動的に関連付けられます。ただし、カスタムパラメータグループとオプショングループは、復元中に指定することで適用できます。

この例では、保持されている自動バックアップを使用して、DB インスタンスをポイントインタイムに復元します。まず、保持されている自動バックアップを記述して、復元する DB インスタンスを表示できるようにします。

RDS API を使用して保持されている自動バックアップを記述するには、以下のパラメータのいずれかを指定して DescribeDBInstanceAutomatedBackups アクションを呼び出します。

  • DBInstanceIdentifier

  • DbiResourceId

aws rds describe-db-instance-automated-backups --db-instance-identifier DBInstanceIdentifier OR aws rds describe-db-instance-automated-backups --dbi-resource-idDbiResourceId

次に、RDS API を使用して保持されている自動バックアップをポイントインタイムに復元するには、以下のパラメータのいずれかを指定して RestoreDBInstanceToPointInTime アクションを呼び出します。

  • SourceDbiResourceId

  • TargetDBInstanceIdentifier

aws rds restore-db-instance-to-point-in-time --source-dbi-resource-id SourceDbiResourceId --target-db-instance-identifier TargetDBInstanceIdentifier --use-latest-restorable-time

保持コスト

保持されている自動バックアップのコストは、関連付けられているシステムスナップショットの合計ストレージ容量のコストです。トランザクションログまたはインスタンスメタデータには追加料金はかかりません。バックアップのその他の料金ルールはすべて復元可能なインスタンスに適用されます。

たとえば、実行中のインスタンスの割り当て済みストレージの合計が 100 GB であるとします。また、保持されている自動バックアップに関連付けられた手動スナップショットが 50 GB、システムスナップショットが 75 GB であるとします。この場合、25 GB の追加バックアップストレージについてのみ請求されます。(50 GB + 75 GB) – 100 GB = 25 GB。

制限と推奨事項

保持されている自動バックアップには、次の制限が適用されます。

  • 1 つのリージョンで保持できる自動バックアップの最大数は 20 個です。これは、DB インスタンスの制限には含まれません。20 個の実行 DB インスタンスと追加の 20 個の保持されている自動バックアップを同時に持つことができます。

  • 保持されている自動バックアップには、パラメータグループまたはオプショングループについての情報は含まれません。

  • 削除したインスタンスは、削除時の保持期間内のポイントインタイムに復元できます。

  • 保持されている自動バックアップは、ソースインスタンスを削除した時点で存在していたシステムバックアップ、トランザクションログ、DB インスタンスのプロパティで構成されているため、変更できません。

サポートされない MySQL ストレージエンジンを使用した自動バックアップ

MySQL DB エンジン、自動バックアップは InnoDB ストレージエンジンでのみサポートされています。これらの機能を他の MySQL ストレージエンジン (MyISAM など) で使用すると、バックアップからの復元中に動作の信頼性が失われる場合があります。具体的には、MyISAM などのストレージエンジンは信頼性の高いクラッシュリカバリをサポートしていないため、クラッシュ時にテーブルが破損する可能性があります。このため、InnoDB ストレージエンジンを使用することをお勧めします。

  • 既存の MyISAM テーブルを InnoDB テーブルに変換する場合、ALTER TABLE コマンド (例: ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;) を使用できます。

  • MyISAM の使用を選択した場合、REPAIR コマンドを使用して、クラッシュ後に破損したテーブルの修復を手動で試みることができます。詳細については、MySQL ドキュメントの「REPAIR TABLE Syntax」を参照してください。ただし、MySQL ドキュメントで説明されているとおり、すべてのデータを復旧できない可能性が高くなります。

  • 復元前に MyISAM テーブルのスナップショットを作成する場合は、次のステップに従います。

    1. MyISAM テーブルに対するすべてのアクティビティを停止します (つまり、すべてのセッションを閉じます)。

      SHOW FULL PROCESSLIST コマンドから返される各プロセスの mysql.rds_kill コマンドを呼び出すことによって、すべてのセッションを閉じます。

    2. 各 MyISAM テーブルをロックしてフラッシュします。たとえば、次のコマンドは、myisam_table1 および myisam_table2 という名前の 2 つのテーブルをロックしてフラッシュします。

      mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
    3. DB インスタンスのスナップショットを作成します。スナップショットが完了したら、ロックを解除し、MyISAM テーブルでのアクティビティを再開します。次のコマンドを使用して、テーブルのロックを解除できます。

      mysql> UNLOCK TABLES;

    これらのステップでは、MyISAM によってメモリに保存されたデータがディスクに強制的にフラッシュされるため、DB スナップショットから復元する際のクリーンスタートを確実にできます。DB スナップショットの作成の詳細については、「DB スナップショットの作成」を参照してください。

サポートされない MariaDB ストレージエンジンを使用した自動バックアップ

MariaDB DB エンジンの場合、自動バックアップは InnoDB ストレージエンジン (バージョン 10.2 以降) と XtraDB ストレージエンジン (バージョン 10.0/10.1) でのみサポートされます。これらの機能を他の MariaDB ストレージエンジン (Aria など) で使用すると、バックアップからの復元中に動作の信頼性が失われる場合があります。Aria が MyISAM の代替となる耐クラッシュ性を備えたものであっても、テーブルはクラッシュ時に破損する可能性があります。このため、XtraDB ストレージエンジンを使用することをお勧めします。

  • 既存の Aria テーブルを InnoDB テーブルに変換するには、ALTER TABLE コマンドを使用できます。以下に例を示します。ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

  • 既存の Aria テーブルを XtraDB テーブルに変換するには、ALTER TABLE コマンドを使用できます。以下に例を示します。ALTER TABLE table_name ENGINE=xtradb, ALGORITHM=COPY;

  • Aria の使用を選択した場合、REPAIR TABLE コマンドを使用して、クラッシュ後に破損したテーブルの修復を手動で試みることができます。詳細については、http://mariadb.com/kb/en/mariadb/repair-table/ を参照してください。

  • 復元前に Aria テーブルのスナップショットを作成する場合は、次のステップに従います。

    1. Aria テーブルに対するすべてのアクティビティを停止します (つまり、すべてのセッションを閉じます)。

    2. 各 Aria テーブルをロックしてフラッシュします。

    3. DB インスタンスのスナップショットを作成します。スナップショットが完了したら、ロックを解除し、Aria テーブルでのアクティビティを再開します。これらのステップでは、Aria のメモリに保存されたデータがディスクに強制的にフラッシュされるため、DB スナップショットから復元する際に確実にクリーンスタートできます。