postgresqlオンラインバックアップとリカバリ(一)
1936 ワード
WAL(write ahead log)
walログにはclusterの下のすべてのデータベースの変更が記録されています.デフォルトはディレクトリpg_xlogではsegment fileと呼ばれ、デフォルト16 Mである.データベースがクラッシュすると、データベースレベルのバックアップをリカバリし、walを「再生」するだけで、データベースを最新のコンシステンシ状態に戻すことができます.ORACLEのオンラインログとして理解できるが、主な役割はデータベースがクラッシュしたときのリカバリである.アーカイブがオープンしていない場合、pgはデータベースのクラッシュリカバリのためにいくつかのログのみを維持する.このsegment fileがチェックポイントの時間までにpgに再利用される可能性がある.
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
[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".
[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