PITR

PITR (Point In Time Recovery) は、データベースのスナップショット (ベースバックアップ) と、データの更新によって発生するトランザクションログをアーカイブログとして保存しておくことにより、ディスクの障害などによってデータが消失してしまった場合も、直前の状態までリカバリすることができるというオンライン・バックアップの機能です。 また、PITR では、日時を指定して任意の状態までリカバリすることもできるため、操作ミスによって誤ってデータを削除してしまった場合などもデータをリカバリすることができます。

これらの作業を行うためにはメインメニューから「PITR」を選択します。

! 注意

管理ツールのPITRを利用するには、postgresql.confのarchive_commandを手動で設定変更をしないでください。

1 全般

PITRでのバックアップの設定を行います。

  1. バックアップを取得する場合は『オンラインバックアップを有効にする』にチェックをいれます。
  2. 『バックアップを格納するディレクトリ』に任意のディレクトリを絶対パスで入力/選択します。
  3. 過去に取得したバックアップを自動的に削除したい場合は、『指定世代以前のバックアップを自動的に削除』にチェックを入れ、世代数を指定します。「0世代」だと削除されません。

    画面イメージ

  4. 『適用』ボタンをクリックします。アーカイブログがバックアップを格納するディレクトリに保存されるように、archive_commandが設定されます。

    ! 注意

    手動でarchive_commandを変更すると、管理ツールからPITRが使えなくなるなるので変更しないでください。
  5. PITRの設定を有効にするには、サービスを再起動します。
  6. サービスを再起動すると、データの更新によって発生するトランザクションログがアーカイブログとして保存されるようになります。 なお、PITR によるリカバリを行えるようにするには、あらかじめバックアップを取得しておく必要があります。 バックアップを取りたい場合は、再起動後「バックアップ」のページの『バックアップを作成』ボタンをクリックします。

2 バックアップ

バックアップの作成

「全般」で設定した設定にもとづいて、バックアップを取得します。

  1. 『バックアップを作成』ボタンをクリックします。

    画面イメージ

バックアップの削除

  1. 削除したい世代のバックアップの日時の中でいちばん新しい日時を、『指定日時以前のバックアップを削除』の欄に入力します。または、バックアップファイルを一覧から選択すると、日時が入力されます。

    画面イメージ

  2. 『削除』ボタンをクリックします。
  3. 『表示を更新』ボタンをクリックします。

強制アーカイブ化

アーカイブ化されていないトランザクションログを、強制的にアーカイブ化します。このことで、最新の状態へのリカバリが可能になります。

  1. 『トランザクションログを強制的にアーカイブ化』ボタンをクリックします。

    画面イメージ

3 リカバリ

取得したバックアップからリカバリを行います。最後にバックアップを作成した日時より前の状態には復元できません。

  1. リカバリをする時点を指定します。
    いちばん新しいバックアップを利用する場合
    1. 『最新の状態までリカバリする』を選択します。

      画面イメージ

    何世代か前のバックアップを利用する場合
    1. 『日時を指定してリカバリする』を選択します。
    2. 欄に日時を入力します。または、バックアップファイルを
      一覧から選択すると、日時が入力されます。
    3. その日時の直前までのリカバリをしたい場合は、「指定した
      日時の直前までリカバリする』にチェックをいれます。

      画面イメージ

  2. ↓

  3. 『リカバリを実行』ボタンをクリックします。リカバリを行うためにサービスが一度停止します。 現在のデータベースクラスタは自動的に退避されます。

! 注意

リカバリをするためには、サーバを停止する必要があります。
リカバリ中、現在のデータベースを自動的に退避します。 退避したものは、データベースクラスタのあるディレクトリの中に "(データベースクラスタのディレクトリ名).recovery.(タイムスタンプ)"の名前で保存されます。
退避したデータベースのデータファイルは自動的に削除されないので、 正常にリカバリができたら手動で削除してください。
リカバリを実行すると、ベースバックアップ作成後に変更した設定ファイル (postgresql.confなど)への変更は反映されません。手動でコピーする必要があります。