データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

初出:2020年2月6日、ObjectRocket.com/blog

定期的なバックアップと、それを確実に復元できる仕組みは、データベースシステム運用において最も重要な要素の一つです。Rackspace Technologyグループ企業であるObjectRocketでは、すべてのデータベース製品に対して、デフォルトで「毎日の自動バックアップ+2週間の保持期間」を提供しています。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

さらに、当社のPostgreSQL®サービスでは、Write Ahead Log(WAL)アーカイブに対応しており、保持期間内の任意の時点へデータベースを復元することが可能です。これは一般的にポイントインタイムリカバリ(PITR:Point-in-Time Recovery)と呼ばれる機能です。本記事では、このPITRが当社のサービス上でどのように動作するのかを、実際の手順とともに解説します。

手間のかからない自動バックアップ

大きな特長の一つが、完全自動化されたバックアッププロセスです。すべてのインスタンス料金に毎日のバックアップが含まれており、常に直近2週間分のバックアップが保持されます。バックアップの実行時刻やステータスは、ダッシュボードまたはユーザーインターフェース(UI)からいつでも確認できます。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

複数の復元オプション

バックアップからの復元には、以下の3つの方法をご用意しています。

  • 保存されている最新のWAL更新時点まで復元する
  • 特定のベースバックアップを指定して復元する
  • 特定の日時を指定して復元する

いずれの場合も、データは新しいPostgreSQLインスタンスへ復元されます。現時点では、復元先インスタンスのストレージ容量は、元のインスタンス以上である必要があります。当社ではこれを「データベースフォーク」と呼んでいます。理想的な運用としては、データを新規かつ独立したインスタンスに復元し、古いインスタンスと新しいインスタンスの両方を、どちらかを削除するまで稼働させておくことを推奨します。

注意: 現在、復元操作はAPI経由でのみ提供されています。APIの利用に慣れている方であれば問題ありませんが、そうでない場合はサポートチームが手順をご案内いたします。今後、UIへの復元機能の追加も予定しています。

最新時点への復元

まずはシンプルな例として、毎分タイムスタンプとシーケンス番号を記録するだけのデータベースを使ってみましょう。これにより、バックアップの位置関係がひと目でわかります。データベースを確認すると、最後のタイムスタンプは16:00:58(UTC)でした。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

このデータベースを最新の状態まで復元したい場合は、ソースとなるインスタンスのIDを指定して、新しいインスタンス作成用のAPIコールを実行するだけです。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

復元が完了したら、接続して最後のタイムスタンプを確認してみます。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

ご覧のとおり、すべてのデータが揃っており、ソースのPostgresインスタンスと完全に同期した新しいPostgresインスタンスができあがりました。この手法は、たとえば現在の本番データをもとにテスト用データベースを作成し、元データに影響を与えるリスクなく新機能を検証したい場合などに非常に便利です。

特定のバックアップへの復元

2つ目の方法は、ベースバックアップを指定して復元するやり方です。バックアップ一覧を取得すると、各バックアップには固有のIDが割り振られており、これを使って復元できます。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

上記の例では、15:36:15(UTC)に取得されたバックアップが確認できます。このバックアップの正確な時点へ復元するには、インスタンス作成コールにバックアップIDを追加するだけでOKです。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

インスタンスのロードが完了すると、15:36:15というバックアップ時刻より前のデータとタイムスタンプのみが存在していることが確認できます。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

特定の時刻への復元

最後の方法は、復元したい日時を直接指定するやり方です。ソースインスタンスのIDと復元時刻を指定して実行します。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

ここでは15:53:00への復元を試みました。復元完了後、データはその時刻までしか存在しないことがわかります。

ObjectRocketにおけるPostgreSQLのバックアップとポイントインタイムリカバリ(PITR)による復元方法

前述のスクリーンショットを見返すと、実は15:53:00にもう一件のタイムスタンプがあったことに気づくかもしれません。しかし、そのタイムスタンプは15:53:00から約0.8秒後に記録されたものであるため、今回の復元結果には含まれていません。このように、ポイントインタイムリカバリを使えば、秒単位という極めて細かい粒度で、データベースの特定の時点と状態を正確にターゲットにできます。

今後について

ここまでご紹介したバックアップおよび復元機能は、すべて今日すぐにご利用いただけます。また当社では、継続的に新機能や新能力を追加していきます。ご要望があればぜひお知らせください。

Rackspace Data Servicesの詳細については、ぜひご確認ください。

フィードバックタブからコメントやご質問をお寄せいただくことも可能です。また、Sales Chatをクリックいただければ、今すぐチャットで会話を始めることができます。

Rackspace Cloudの利用規約はこちらからご覧いただけます。

  1. Macトラックパッドのジェスチャ17選とカスタマイズ方法を徹底解説

    Macのトラックパッドは、単なるマウスの代わりではありません。実はそれ以上の可能性を秘めたデバイスです。macOSにはトラックパッド専用の設定画面が用意されており、アプリの切り替え、ファイル情報の確認、Launchpadの起動など、さまざまな操作をジェスチャだけで行えます。 これらのジェスチャをマスターすれば、少ない労力でMacを最大限に活用できるようになります。さらに、多くのジェスチャはカスタマイズ可能なので、デフォルトの操作が気に入らない場合は自分好みに変更することもできます。 Macトラックパッドのジェスチャをカスタマイズする方法 Macのトラックパッドジェスチャのカスタマイズはとても

  2. Windowsレジストリのバックアップと復元方法を徹底解説

    レジストリは、コンピューターにとって「脳」のような役割を果たす重要な存在です。Windowsのコンポーネント、サービス、アプリケーションなど、システムのほぼすべてに関わる構成情報や設定がここに格納されています。 レジストリを理解するうえで押さえておきたい基本概念は「キー」と「値」の2つです。キーはフォルダのようなオブジェクトで、レジストリエディターの画面上でも実際にフォルダと同じように表示されます。一方、値はフォルダ内のファイルのようなもので、具体的な設定内容が記録されています。 なぜレジストリのバックアップが必要なのか Windowsパソコンの設定に大きな変更を加えたい場合、多くはWindo