データベースレベルの復元を使用すると、インスタンス全体を復元することなく、ApsaraDB RDS for PostgreSQL インスタンス内の特定のデータベースを以前の状態に回復できます。誤った変更を元に戻したり、削除されたデータを回復したり、履歴スナップショットをクエリしたりする必要がある場合に使用します。
この機能はパブリックプレビュー中であり、無料でご利用いただけます。
利用シーン
-
データ損失事故:開発者が誤ってテーブルを削除したり、行を上書きしたりした場合。影響を受けたデータベースのみをインシデント発生前のポイントインタイムに復元します。
-
履歴データ分析:データベースのポイントインタイムコピーを取得して、本番インスタンスに影響を与えることなく分析を実行します。
仕組み
復元は、バックアップセットまたは完全バックアップと増分ログバックアップデータのシーケンスからデータを読み取り、選択したデータベースを元のインスタンスまたは同じリージョン内の別の既存のインスタンスに書き込みます。復元速度は約 20 Mbit/s で、データ量によって変動します。
命名規則:復元を開始する前に、システムは復元される各データベースの名前に _backup を追加して名前を変更します (例:orders は orders_backup になります)。確認前に名前を変更できます。
復元可能な範囲は、データバックアップの保持期間、ログバックアップの保持期間、および RDS インスタンスでデータベースレベルの復元機能を有効にした時点によって異なります。
前提条件
開始する前に、次のことを確認してください:
-
RDS インスタンスが次のすべての要件を満たしていること:
-
メジャーエンジンバージョン:PostgreSQL 10 から PostgreSQL 17
-
エディション:RDS Basic Edition、RDS High-availability Edition、または RDS Cluster Edition
-
ストレージタイプ:拡張 SSD (ESSD) または高性能 ESSD
-
課金タイプ:従量課金またはサブスクリプション (サーバーレスインスタンスはサポートされていません)
-
-
インスタンスが 2022 年 10 月 10 日より前に作成され、元のアーキテクチャを使用している場合は、先に進む前に サービスリンクロール (SLR) の権限付与 と マイナーエンジンバージョンの最新バージョンへの更新 を完了してください。
-
インスタンスでデータベースレベルの復元機能が有効になっていること。詳細については、「データベースレベルの復元の有効化」をご参照ください。
ヒント:インスタンスのエディション、ストレージタイプ、課金タイプを確認するには、インスタンスの [基本情報] ページに移動します。
制限事項
| 制限事項 | 詳細 |
|---|---|
| 復元先 | 元のインスタンス、または同じリージョン内で同じメジャーエンジンバージョンを持つ既存のインスタンスのみ。新しいインスタンスへの復元はサポートされていません。 |
| 復元の粒度 | データベースのみ。個別のテーブルやビューは復元できません。 |
| テーブルサイズ | 100 GB を超えるテーブルは復元できません。 |
| 予約済みデータベース名 | postgres、rdsadmin、または template で始まる名前のデータベースは復元できません。 |
データベースレベルの復元の有効化
この機能を有効にしても、実行中のワークロードには影響しません。
-
[インスタンス] ページに移動します。上部のナビゲーションバーで、インスタンスが存在するリージョンを選択します。対象のインスタンスを見つけて、その ID をクリックします。
-
左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。
-
[バックアップ戦略] タブをクリックします。
-
[データバックアップ設定] の横にある [編集] をクリックします。表示されたダイアログボックスで、[個別のデータベース/テーブルの復元] をオンにします。
-
[保存] をクリックします。
データベースの復元
-
[インスタンス] ページに移動します。上部のナビゲーションバーで、インスタンスが存在するリージョンを選択します。対象のインスタンスを見つけて、その ID をクリックします。
-
左側のナビゲーションウィンドウで、[バックアップと復元] をクリックします。表示されたページで、[個別のデータベース/テーブルの復元] をクリックします。
[個別のデータベース/テーブルの復元] ボタンが表示されない場合は、すべての前提条件が満たされていることを確認してください。
-
復元パラメーターを設定します。
データバックアップファイルとログバックアップファイルの両方の最大保持期間は 730 日です。ご利用のインスタンスで復元可能な時間範囲を確認するには、DescribeLocalAvailableRecoveryTime API オペレーションを呼び出します。
パラメーター 説明 [復元先] 宛先インスタンス:元のインスタンス、または同じリージョン内で同じメジャーエンジンバージョンを持つ別のインスタンス。 復元速度 [標準] に固定されています。 [復元方法] [バックアップセットごと]:特定のバックアップセットから復元します。[時間ごと]:ログバックアップが有効な場合にのみ利用可能です。システムは完全バックアップデータに続いて増分ログバックアップデータを再生し、ログバックアップの保持期間内の任意の時点に復元できます。例えば、データバックアップの保持期間とログバックアップの保持期間が両方とも 7 日間の場合、過去 7 日間の任意の時点に復元できます。 -
復元するデータベースを選択し、[OK] をクリックします。
-
一度に最大 50 個のデータベースを選択できます。
-
システムは、復元された各データベースの名前に
_backupを追加します (例:mydbはmydb_backupになります)。確認前に名前を変更できます。 -
宛先インスタンスに、選択したすべてのデータベースを格納するのに十分な空きストレージがあることを確認してください。
-
復元の進捗状況の表示
復元タスクを送信した後、インスタンス詳細ページの上部にある [タスクセンター] をクリックして、タスクのステータスと進捗状況を確認します。
-
インスタンス詳細ページの上部で、[タスクセンター] をクリックします。
-
タスクリストで、[タスクステータス] と [タスクの進捗] 列を確認します。
-
時間範囲 ([1 時間]、[1 日]、[7 日間]、または [30 日間]) またはタスクステータスでタスクレコードをフィルタリングします。
復元ページに進捗情報が表示されない場合は、ブラウザをリフレッシュして再度確認してください。
復元の検証
復元タスクが完了したら、宛先インスタンスの [データベース] ページに移動して、復元されたデータベースが表示されることを確認します。次のことを検証してください:
-
復元されたデータベースにアクセスでき、データが正しいように見えること。
-
復元されたデータを指す接続文字列が、正しいデータベース名 (復元中に名前を変更しなかった場合は
_backupが付いたバージョン) を使用していること。
よくある質問
コンソールに「操作に失敗しました。RDS インスタンスが準備完了状態ではありません。」と表示されます。どうすればよいですか?
復元タスクは順次実行されます。このエラーは、別の復元タスクがまだ進行中または未完了であることを意味します。現在のタスクが完了するのを待ってから、リトライしてください。
復元されたデータベースが空です。なぜですか?
選択したポイントインタイムでは、元のデータベースにデータがありませんでした。データベースにデータが含まれていたポイントインタイムを選択してください。
個別のデータベースを復元する他の方法はありますか?
BDRC を使用して、RDS インスタンスや Elastic Compute Service (ECS) インスタンス上の自己管理データベースをバックアップおよび復元したり、バックアップセットをローカルにダウンロードしたりできます。詳細については、「概要」および「データベースまたはテーブルごとのデータ復元」をご参照ください。
次のステップ
-
ApsaraDB RDS for PostgreSQL インスタンスのすべてのデータを復元する — 個別のデータベースではなく、インスタンス全体を復元します。
-
pg_restore を使用して論理バックアップファイルからデータを復元する — pg_restore を使用して、論理バックアップから特定のテーブルを復元します。
-
自己管理 PostgreSQL インスタンスにデータを復元する — CSV ファイルまたは SQL ファイルを使用して、バックアップデータを自己管理 PostgreSQL インスタンスにエクスポートします。