PostgreSQL 9.4 バックアップ(ファイル直接:オンラインバックアップ:PITR)
最後にPostgreSQLを停止ぜずにファイルを直接バックアップする方式をやります。■オンラインバックアップ
事前準備
このバックアップを行うには設定ファイル(postgresql.conf)を変更します。postgresql.confはdataフォルダ直下にあります。dataフォルダの場所は前回を参照して下さい。
設定例
archive_mode = on
archive_command = 'copy "%p" "C:\\work\\ps\\archivelog\\%f"'
wal_level = archive
archive_mode ・・・ アーカイブログを出力するようになります。onを指定して下さい。 archive_command ・・・ アーカイブログを出力するコマンドを記述します。パスの区切りは\\(\が2個)にする必要があります。
wal_level ・・・ アーカイブログに出力する内容を指定します。archiveまたはhot_standbyを指定して下さい。
PostgreSQLはクラッシュ時に自動的にリカバリするためにデータファイルに書き込む前にログに変更内容を書き込んでいます。
(この仕組をWALというそうです)
このログファイルはそのままの設定では消されてしまうため、postgresql.confの設定変更を行い、消されてる前に別フォルダに
コピーするようにしました。
ベースバックアップ
これからdataフォルダのバックアップを取るのですが、そのまえにコマンドを実行します。
SELECT pg_start_backup(now()::text);
コマンドに渡す引数はなんでも良いのですが、日時にしました。 次にdataフォルダのコピーを取ります(PostgreSQLは起動したままで良いです)。・・・ ※1
この時、pg_xlogフォルダとpostmsater.pidファイルは必要ないので削除してしまって良いです。
コピーが終わったら、またコマンドを実行します。
SELECT pg_stop_backup();
ログファイルバックアップ
事前準備でarchive_commandコマンドで指定したフォルダにログファイルが出力されるようになります。これを取っておいて下さい。・・・ ※2上記の設定例では C:\work\ps\archivelog になります。
■リストア
事前準備
① PostgeSQLが起動している場合は停止させます。② dataフォルダが残っている場合、dataフォルダを移動(またはフォルダ名変更)させて下さい。・・・※3
③ dataフォルダのコピー(※1)よりdataフォルダを復元します。
④ ※2をテープなど別媒体に保存している場合、アクセスできる場所に戻してください。
⑤ ※3からpg_xlogが取得できる場合は、pg_xlogの中身を復元したdataファルダのpg_xlogフォルダにコピーします。
⑥ postgresql.confと同じフォルダにrecovery.confというテキストファイルを作成し、以下のようなコマンドを入力して保存します。
restore_command = 'copy "C:\\work\\ps\\archivelog\\%f" "%p"'
そのままの設定では、リストアできるところまでリストアしようとします。 指定日時まで戻したい場合は、recovery.confに日時を追加します。
recovery_target_time = '2015-11-12 00:00:00'
リストア実行
PostgreSQLを起動すると自動的にリストアされます。ページのトップへ戻る