postgresqlオンラインバックアップとリカバリ(一)


WAL(write ahead log)


walログにはclusterの下のすべてのデータベースの変更が記録されています.デフォルトはディレクトリpg_xlogではsegment fileと呼ばれ、デフォルト16 Mである.データベースがクラッシュすると、データベースレベルのバックアップをリカバリし、walを「再生」するだけで、データベースを最新のコンシステンシ状態に戻すことができます.ORACLEのオンラインログとして理解できるが、主な役割はデータベースがクラッシュしたときのリカバリである.アーカイブがオープンしていない場合、pgはデータベースのクラッシュリカバリのためにいくつかのログのみを維持する.このsegment fileがチェックポイントの時間までにpgに再利用される可能性がある.
WALの主な役割は次のとおりです.
  • 日常的なオンラインバックアップリカバリ使用.データベースを閉じる必要はなく、clusterおよび関連するwalファイル全体をバックアップします.clusterファイルのバックアップが一致しなくても、「再生」walによってデータベースを一貫した状態に保つことができます.
  • の非常に大きなデータベースでは、常にフルバックアップを行うことはできませんが、walログをバックアップし続けるとリカバリできます.これは大きなデータベースにとって非常に有用である.
  • は、「再生」walをある時点に再生することによって、データベースをある過去に戻すことができ、データベースの誤操作に役立つ.
  • は、walを同じバックアップファイルを使用する別のデータベースサーバに継続する、別のデータベースサーバに「再生」を継続させ、ホットスペアを作成することができる.

  • バックアップ・リカバリの必要性のために、アーカイブを開く必要があります.walログをバックアップし続けます.

    アーカイブモードの設定(WAL Archiving)


    サービスパラメータの変更
    [postgres@fnddb data]$ mkdir $PGDATA/../pg_archive
    [postgres@fnddb data]$ vi $PGDATA/postgresql.conf
    ......
    wal_level = archive
    archive_mode = on 
    archive_command = 'test ! -f /var/lib/pgsql/pg_archive/%f && cp %p /var/lib/pgsql/pg_archive/%f' 
    ......
    :wq
    [postgres@fnddb data]$ pg_ctl restart
    waiting for server to shut down.... done
    server stopped
    server starting
    [postgres@fnddb data]$ LOG:  redirecting log output to logging collector process
    HINT:  Future log output will appear in directory "pg_log".
    

    archive_commandパラメータが呼び出すのはコマンドでもスクリプトでもよい.柔軟性が高い.walログの切り替えのたびにこのコマンドが実行されます.コマンドの返却に失敗すると、アーカイブに失敗したと判断するpgは、成功するまで定期的に繰り返し実行される.
    正しくアーカイブされているかどうかを確認し、手動ログ切り替えを行います.
    [postgres@fnddb data]$ psql
    psql (9.4.1)
    Type "help" for help.
    
    postgres=# select pg_switch_xlog();
     pg_switch_xlog 
    ----------------
     0/1B7CCB0
    (1 row)
    
    postgres=# \q
    [postgres@fnddb data]$ ls ../pg_archive/
    000000010000000000000001
    

    未完待機・・・
    //END