オンラインバックアップ

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

これらの作業を行うためにはメインメニューから「オンラインバックアップ」を選択します。

! 注意

管理ツールのオンラインバックアップを利用するには、postgresql.confのarchive_command、archive_modeを手動で設定変更をしないでください。

ホットスタンバイを構築して運用している場合には、オンラインバックアップの設定を変更しないでください (管理ツールからの操作を含む)。

1 全般

オンラインバックアップでのバックアップの設定を行います。

  1. 『アーカイブモードを有効にする』にチェックをいれます。
  2. 『ベースバックアップとアーカイブログの格納ディレクトリ』に任意のディレクトリを絶対パスで入力します。『選択』ボタンから選択することもできます。
  3. 『指定世代以前のバックアップを自動的に削除』にチェックを入れ、世代数を指定すると、新たにベースバックアップを取得するタイミングで、古いベースバックアップとアーカイブログを自動的に削除するようになります。

    画面イメージ

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

    ! 注意

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

2 ベースバックアップ

ベースバックアップの作成

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

  1. 『ベースバックアップを作成』ボタンをクリックします。この操作はサービスが開始されている状態でおこないます。データ容量と同時実行されているアクセス量に応じて完了するまで時間がかかります。

    画面イメージ

データベースクラスタ全体の tar + gzip アーカイブが『全般』ページで指定した格納ディレクトリに保存されます。このとき、データベースクラスタのディレクトリ内に格納ディレクトリがある場合には、それを除外して保存されます。


コマンドラインからベースバックアップの作成

ベースバックアップの取得をGUI上の操作でなく、コマンドラインから行うことができます。以下のように powergres-mgr を「--basebackup」というオプションとパラメータ文字列を与えて起動すると、GUIから『ベースバックアップを作成』ボタンをクリックしたのと同じ動作だけをして、終了します。パラメータ文字列には、サービス名と管理者ユーザ名、パスワードを指定します。

Windowsの場合

c:\>powergres-mgr.exe --basebackup "service=powergres9
 user=postgres password=xxxxx"
(実際は一行)

Linuxの場合

$ powergres-mgr --basebackup "service=powergres9
 user=postgres password=xxxxx"
(実際は一行)

このコマンドは『ベースバックアップ設定を保存』ボタンを押して、シェルスクリプトまたはバッチファイルとして生成し、保存することができます。保存したファイルは、スケジュールバックアップに使用することができます。


ベースバックアップの削除

古いベースバックアップファイルとアーカイブログを手動で削除することができます。日付を指定して、それより古いファイルを削除することができます。

  1. 残したいベースバックアップファイルの中で最も古いものの作成日時を『指定日時以前のバックアップを削除』の欄に入力します。一覧から選択すると自動的に欄に日付が記入されます。

    画面イメージ

  2. 『削除』ボタンをクリックします。確認のダイアログで『OK』ボタンを押します。指定した日付よりも古いファイルが削除されます。作成日時がちょうど一致するものは削除されません。
  3. 『表示を更新』ボタンをクリックすると、表示が最新状態に更新されます。

なお『全般』ページで『指定世代以前のバックアップを自動的に削除』を指定している場合には、新しくベースバックアップを取るたびに、最も古い世代のベースバックアップとアーカイブログが自動で削除されます。


強制アーカイブ化

アーカイブ化されていないトランザクションログを、強制的にアーカイブ化します。 リカバリを行う前にこの操作を行うことで直近の状態にも戻れるようになります。

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

    画面イメージ


3 リカバリ

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

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

      画面イメージ

    指定時刻までリカバリする場合
    1. 『日時を指定してリカバリする』を選択します。
    2. 欄に日時を入力します。または、ベースバックアップファイルを前ページの一覧から選択すると、日時が入力されます。
    3. その日時の直前までのリカバリをしたい場合は「指定した日時の直前までリカバリする』にチェックをいれます。僅かな差ですが指定時刻ちょうどの分が含まれなくなります。

      画面イメージ

  2. ↓

  3. 『リカバリを実行』ボタンをクリックします。サービス稼動中の場合には、リカバリを行うためにサービスが一度停止します。現在のデータベースクラスタが存在している場合には自動的に退避されます。
    リカバリが成功すると、サービス稼動状態になります。

! 注意

リカバリをするためには、サーバを停止する必要があります。
リカバリ中、現在のデータベースを自動的に退避します。 退避したものは、データベースクラスタのあるディレクトリの中に "(データベースクラスタのディレクトリ名).recovery.(タイムスタンプ)"の名前で保存されます。退避したデータベースのデータファイルは自動的に削除されないので、正常にリカバリができたら手動で削除してください。

リカバリを実行すると、ベースバックアップ作成後に変更した設定ファイル (postgresql.confなど)への変更は反映されません。変更点を再設定するか手動で設定ファイルをコピーする必要があります。

リカバリ完了後に運用を継続する場合、速やかにベースバックアップをとり直すことをお勧めします。