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

10.7.2 容量の大きいディスクにディスク交換する方法

再び容量が不足することのないように、バックアップデータ格納先のディスクを容量の大きいディスクに交換する方法です。

ディスクを交換した後にバックアップを行い、正しいバックアップを取得します。

バックアップ操作は、以下の2つの方法で行うことができます。

注意

  • ディスク交換を実施する前に、データベースを利用しているアプリケーションを停止してください。

  

10.7.2.1 WebAdminを使用する場合

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

  

  1. ファイルの退避

    バックアップデータ格納先のディスク配下に必要なファイルが存在する場合、ファイルを退避します。

      

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

    バックアップデータを別のディレクトリに退避します。

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

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

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

      

  3. 容量の大きいディスクへの交換

    ディスクを交換します。その後、ボリュームの構成情報をリカバリします。

      

  4. バックアップの実行

    WebAdminにログインし、リカバリ操作を行います。“10.1.1 WebAdminを使用する場合”の“バックアップデータ格納ディスクに障害が発生した場合”の手順2“バックアップデータのリカバリ”および手順3“バックアップの実行”を参照してください。

      

  5. ファイルの復元

    手順1“ファイルの退避”で退避したファイルを元に戻します。

      

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

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

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

    > rm -rf /mnt/usb/backup

      

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

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

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

  

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

No

手順

インスタンス停止の有無

なし

あり

1

ファイルの退避

2

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

3

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

4

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

5

アプリケーションの停止

6

インスタンスの停止

7

容量の大きなディスクに交換

8

バックアップデータ格納先のディレクトリ作成

9

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

10

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

11

インスタンスの起動

12

バックアップの実行

13

アプリケーションの再開

14

ファイルの復元

15

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

○:実施
-:実施不要

  

手順を以下に示します。

インスタンスを起動したままリカバリする方法
  1. ファイルの退避

    バックアップデータ格納先のディスク配下に必要なファイルが存在する場合、ファイルを退避します。バックアップデータ格納先の退避は不要です。

      

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

    バックアップデータを別のディレクトリに退避します。

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

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

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

      

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

    トランザクションログの二重化が停止されているかを、次のSQL関数で確認します。

     postgres=# SELECT pgx_is_wal_multiplexing_paused();
     pgx_is_wal_multiplexing_paused
    -------------------
     t
    (1 row)

    トランザクションログの二重化が停止していない場合は、次のSQL関数で停止してください。

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

      

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

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

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

    • archive_commandパラメータの変更

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

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

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

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

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

      

  5. 容量の大きいディスクへの交換

    ディスクを交換します。その後、ボリュームの構成情報をリカバリします。

      

  6. バックアップデータ格納先のディレクトリ作成

    バックアップデータ格納先のディレクトリを作成します。

    # mkdir /backup/inst1
    # chown fsepuser:fsepuser /backup/inst1
    # chmod 700 /backup/inst1

    詳細については、“3.2.2 サーバコマンドを使用する場合”を参照してください。

      

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

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

      

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

    SQL関数pgx_resume_wal_multiplexingを実行します。

    SELECT pgx_resume_wal_multiplexing()

      

  9. バックアップの実行

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

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

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

    > pgx_dmpall -D /database/inst1

      

  10. ファイルの復元

    手順1“ファイルの退避”で退避したファイルを元に戻します。

      

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

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

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

    > rm -rf /mnt/usb/backup

      

インスタンスを停止してリカバリする方法
  1. ファイルの退避

    バックアップデータ格納先のディスク配下に必要なファイルが存在する場合、ファイルを退避します。バックアップデータ格納先の退避は不要です。

      

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

    バックアップデータを別のディレクトリに退避します。

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

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

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

      

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

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

      

  4. インスタンスの停止

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

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

      

  5. 容量の大きいディスクへの交換

    ディスクを交換します。その後、ボリュームの構成情報をリカバリします。

      

  6. バックアップデータ格納先のディレクトリ作成

    バックアップデータ格納先のディレクトリを作成します。

    # mkdir /backup/inst1
    # chown fsepuser:fsepuser /backup/inst1
    # chmod 700 /backup/inst1

    詳細については、“3.2.2 サーバコマンドを使用する場合”を参照してください。

      

  7. インスタンスの起動

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

      

  8. バックアップの実行

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

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

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

    > pgx_dmpall -D /database/inst1

      

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

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

      

  10. ファイルの復元

    手順1“ファイルの退避”で退避したファイルを元に戻します。

      

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

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

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

    > rm -rf /mnt/usb/backup

      

参照

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

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

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