ページの先頭行へ戻る
Enterprise Postgres 9.5 運用ガイド
FUJITSU Software

10.7.1 バックアップデータを一時退避する方法

一時的にバックアップデータを別のディレクトリに移動して退避し、バックアップデータ格納先のディスク容量を確保して、バックアップを正常に取得できるようにする方法です。

容量の大きいディスクを準備するまでに時間がかかる場合は、この方法を採用してください。

バックアップデータ格納先の容量が不足すると、アーカイブログをバックアップデータ格納先に格納できなくなります。これに伴い、データ格納先またはトランザクションログ格納先にトランザクションログが溜まり続けます。

そのため対処に時間がかかると、トランザクションログの格納先が満杯になり、業務が継続できない状態に陥ることがあります。

このような状態に陥らないようにするため、バックアップデータ格納先の容量を確保して、アーカイブログを格納できるようにします。

対処には以下の2つの方法があります。

  

10.7.1.1 WebAdminを使用する場合

以下の手順でバックアップデータ格納ディスクをリカバリしてください。

  

  1. バックアップデータの一時退避

    バックアップデータを別のディレクトリに移動し、一時退避するとともにバックアップデータ格納先ディレクトリの容量を確保します。

    退避を行う理由は、万が一、復旧するまでの間にデータ格納先のデータが破損した場合でも復旧できるようにするためです。退避先のディスクがなく、データ格納先の破損の危険性がないと判断した場合は、バックアップデータを削除してください。

    下記に、バックアップデータ格納先のディレクトリ(/backup/inst1)にあるバックアップデータを/mnt/usb/backup配下に退避する場合の例を示します。

    > mkdir /mnt/usb/backup/
    > mv /backup/inst1/* /mnt/usb/backup/

      

  2. データベースクラスタのバックアップ

    データ格納先に最新のリソースをバックアップします。詳細は“3.2.1 WebAdminを使用する場合”を参照してください。

      

  3. 一時退避したバックアップデータの削除

    バックアップが正常に完了した場合、一時退避したバックアップデータは不要になるため削除します。

    下記に、/mnt/usbに一時退避したバックアップデータを削除する場合の例を示します。

    > rm -rf /mnt/usb/backup

      

10.7.1.2 サーバコマンドを使用する場合

バックアップデータ格納ディスクをリカバリする手順を説明します。

対処方法には以下の2つの方法があります。

インスタンス停止の有無による、実行する手順の違いを以下に示します。

No

手順

インスタンス停止の有無

なし

あり

1

トランザクションログ二重化の停止

2

アーカイブログ出力の停止

3

アプリケーションの停止

4

インスタンスの停止

5

バックアップデータの一時退避

6

アーカイブログ出力の再開

7

トランザクションログ二重化の再開

8

インスタンスの起動

9

バックアップの実行

10

アプリケーションの再開

11

一時退避したバックアップデータの削除

○:実施
-:実施不要

  

手順を以下に示します。

  

インスタンスを起動したままリカバリする方法

  1. トランザクションログ二重化の停止

    トランザクションログの二重化を停止します。

    postgres=# SELECT pgx_pause_wal_multiplexing();
    LOG:  multiplexing of transaction log files has been stopped
    pgx_pause_wal_multiplexing
    ----------------------------
    
    (1 row)

      

  2. アーカイブログ出力の停止

    バックアップ格納ディスクを交換するまでに時間がかかると、トランザクションログが蓄積されていきます。そして、データ格納ディスクまたはトランザクションログ格納ディスクが満杯になると、運用が継続できなくなる危険性があります。

    これを回避するために、以下の方法でアーカイブログの出力を停止させてください。

    • archive_commandパラメータの変更

      アーカイブログを出力したものとみなすよう、例えば“echo skipped archiving WAL file %f”や“/bin/true”などの、必ず正常終了するコマンドを指定します。

      echoを指定すると、サーバログにメッセージが出力されるため、調査を行う上での指標になる可能性があります。

    • 設定ファイルの再読込み

      pg_ctl reloadコマンド、またはSQL関数pg_reload_confを実行します。

    なお、運用が継続できなくなる危険性が無く、単にエラーを出力させたくない場合は、archive_commandに空文字列(")を指定して設定ファイルの再読み込みを実施してください。

      

  3. バックアップデータの一時退避

    バックアップデータを別のディレクトリに移動し、退避するとともにバックアップデータ格納先ディレクトリの容量を確保します。

    退避を行う理由は、万が一、次の手順を行うまでの間にデータ格納先のデータが破損した場合でも復旧できるようにするためです。退避先のディスクがなく、データ格納先の破損の危険性がないと判断した場合は、バックアップデータを削除してください。

    下記に、バックアップデータ格納先のディレクトリ(/backup/inst1)にあるバックアップデータを/mnt/usb/backup配下に退避する場合の例を示します。

    > mkdir /mnt/usb/backup/
    > mv /backup/inst1/* /mnt/usb/backup/

      

  4. アーカイブログ出力の再開

    archive_commandの設定を元に戻し、設定ファイルを再読込みします。

      

  5. トランザクションログ二重化の再開

    SQL関数pgx_resume_wal_multiplexingを実行します。

    SELECT pgx_resume_wal_multiplexing()

      

  6. バックアップの実行

    pgx_dmpallコマンドを使用して、データベースクラスタをバックアップします。

    pgx_dmpallコマンドには、以下を指定します。

    • -Dオプションは、データ格納先のディレクトリを指定します。-Dオプションを省略した場合、PGDATA環境変数の値が使用されます。

      > pgx_dmpall -D /database/inst1

      

  7. 一時退避したバックアップデータの削除

    バックアップが正常に完了した場合、一時退避したバックアップデータは不要になるため削除します。

    下記に、/mnt/usbに一時退避したバックアップデータを削除する場合の例を示します。

    > rm -rf /mnt/usb/backup

      

インスタンスを停止してリカバリする方法

  1. アプリケーションの停止

    データベースを利用しているアプリケーションを停止してください。

      

  2. インスタンスの停止

    インスタンスを停止します。停止方法については、“2.1.2 サーバコマンドを使用する場合”を参照してください。

    インスタンスの停止に失敗した場合は、“10.11 インスタンス停止失敗時の対処”を参照してください。

      

  3. バックアップデータの一時退避

    バックアップデータを別のディレクトリに移動し、退避するとともにバックアップデータ格納先ディレクトリの容量を確保します。

    退避を行う理由は、万が一、次の手順を行うまでの間にデータ格納先のデータが破損した場合でも復旧できるようにするためです。退避先のディスクがなく、データ格納先の破損の危険性がないと判断した場合は、バックアップデータを削除してください。

    下記に、バックアップデータ格納先のディレクトリ(/backup/inst1)にあるバックアップデータを/mnt/usb/backup配下に退避する場合の例を示します。

    > mkdir /mnt/usb/backup/
    > mv /backup/inst1/* /mnt/usb/backup/

      

  4. インスタンスの起動

    インスタンスを起動します。起動方法については、“2.1.2 サーバコマンドを使用する場合”を参照してください。

      

  5. バックアップの実行

    pgx_dmpallコマンドを使用して、データベースクラスタをバックアップします。

    pgx_dmpallコマンドには、以下を指定します。

    • -Dオプションは、データ格納先のディレクトリを指定します。-Dオプションを省略した場合、PGDATA環境変数の値が使用されます。

      > pgx_dmpall -D /database/inst1

      

  6. アプリケーションの再開

    データベースを利用しているアプリケーションを再開してください。

      

  7. 一時退避したバックアップデータの削除

    バックアップが正常に完了した場合、一時退避したバックアップデータは不要になるため削除します。

    下記に、/mnt/usbに一時退避したバックアップデータを削除する場合の例を示します。

    > rm -rf /mnt/usb/backup

      

参照

  • pgx_rcvallコマンド、およびpgx_dmpallコマンドの詳細は、“リファレンス”の“pgx_rcvall”および“pgx_dmpall”を参照してください。

  • archive_commandの詳細は、“PostgreSQL文書”の“サーバの管理”の“ログ先行書き込み(WAL)”を参照してください。

  • pgx_is_wal_multiplexing_paused、およびpgx_resume_wal_multiplexingの詳細は、“B.1 WAL二重化制御関数”を参照してください。