PostgreSQL v9.0では、WALアーカイブシステムが動作しています。したがって、WALは定期的にアーカイブされます(3つのWALが作成されたとき、またはWALが15分より古い場合)。
次に、PG_DATAディレクトリのバイナリパックアップ(pg_xlogサブディレクトリを除く)を追加します。そのためにpg_start_backup(),
、バイナリコピーとを実行しpg_stop_backup()
ます。
私はpg_start_backupとpg_stop_backupが何をしているかをよく理解していると思います。最初のものはチェックポイントを作成し、最後のものは最後のWALファイルがアーカイブされていることを確認します。
公式ドキュメントから、バイナリデータコピーについて次のことが必要であることがわかります。
tarやcpio(pg_dumpやpg_dumpallではない)などの便利なファイルシステムバックアップツールを使用して、バックアップを実行します。これを行っている間は、データベースの通常の操作を停止する必要も望ましくもありません。
だから私はとても困惑しています。これは、コピーの作成中にチェックポイントを実行できることを意味します。コピーコマンドはコピーの実行中にデータの変更を許可する必要があることを示す多くのドキュメントを見ましたが、適切なツールを見つけるだけで大丈夫です。しかし、私の質問は、一貫性のないファイル(チェックポイントの前のファイル、後のファイル)を含むpg_dataコンテンツを使用してpostgreSQLがどのようにリカバリを処理するかです。
トランザクションログを再生することにより、Postgresqlはこれらすべてのファイルを正しい状態にできますか?バックアップの実行中にテーブルの作成とドロップ操作が危険であることがわかりました。バキュームコマンドなどの危険な操作はありませんか?pg_backupはバキューム操作を一時停止しますか?バイナリコピープロセスの開始の最後にglobal / pg_controlファイルのコピーを作成する必要がありますか?スナップショット対応のファイルシステム(xfs-freezeなど)を使用して、復元プロセスを高速化する必要がありますか?
バックアップスクリプトのクラッシュはpg_stop_backupを自動的に起動しないので、バックアップ状態が長時間続く可能性があります(私のnagiosが誰かを呼び出してpg_stop_backup()を修正するまで)。したがって、PostgreSQLでこれら2つのコマンドの間に何か違いがある場合、それがどのような影響を与えるかを理解するために、それを知りたいと思います。
教えてください。