pg_start_backup
dezsoが指摘しているように、チェックポイントを実行します。これは影響を及ぼしますが、データベースはとにかくかなり定期的にチェックポイントを実行し、機能するためにそうする必要があるため、それらは明らかにあなたにとって問題ではありません。早期チェックポイントとは、蓄積されるデータが少ないことを意味します。つまり、チェックポイントからのpg_start_backup
影響が通常よりも低いことを意味します。
心配する必要があるのは、rsyncまたは同等のpg_basebackup
手順です。これからの読み取りI / Oはシーケンシャルであるため、それほど悪くはありませんが、データベースのI / Oパフォーマンスを大幅に低下させる可能性があります。また、RAMキャッシュからホットデータを押し出して、 -使用済みデータ。必要なデータが読み戻されるため、キャッシュのスラッシングが発生します。
nice
およびionice
を使用して、I / Oの影響を制限できます(ただし、キャッシュの影響は制限されません)。ただし、それにはコストがかかります。バックアップには時間がかかり、バックアップを完了しpg_stop_backup
てシステムを実行するまで-私が理解しているように-削除できないWALを蓄積し、バックアップ実行の最後にBIGチェックポイントのチェックポイント負債を蓄積し、テーブルとインデックスを蓄積していますデッド行をクリーンアップできないため、膨張します。したがって、特に非常に高いチャーンテーブルがある場合は、バックアップを永久に実行する余裕はありません。
最後に、それはあなたが安全に使用できるかどうかを言うのは難しいですpg_start_backup
し、pg_stop_backup
お使いの環境でのホットバックアップのために。ほとんどの人はできますが、ハードウェアができることの限界に近づいていて、厳しいタイミング要件があり、ストールのリスクを負う余裕がなく、非常に大きな解約テーブルと非常に大きなテーブルがある場合、面倒かもしれません。
残念ながら、それをテストして確認する必要があります。
可能であれば、CHECKPOINT
LVM、SANのツール、EBSなどを使用して、データベースが存在するボリュームのアトミックスナップショットを作成する価値があるかもしれません。これを行うことができる場合は、自由にスナップショットをコピーできます。このアプローチは、PITR /ウォームスタンバイ/ホットスタンバイのベースバックアップの作成には適していませんが、静的バックアップコピーには最適であり、システムへの影響ははるかに小さくなります。ただし、スナップショットがアトミックで、WALを含むデータベース全体が単一のボリューム上にある場合にのみ、これを行うことができます。
まだ調査していない可能性の1つは、2つのアプローチを組み合わせることです。私は、可能性があると思います(テストされておらず、おそらく間違っていて安全ではありません、私はまだ知りません):
pg_start_backup
- すべてのテーブルスペース、メインのデータディレクトリ、xlogボリュームのスナップショットをトリガーします
pg_stop_backup
- から最終アーカイブまでWALをコピーします
pg_stop_backup
- スナップショットボリュームからデータをコピーします
基本的には、各ボリュームの特定の時点を自由にコピーできるようにすることで、DBがチェックポイントを遅らせる時間を短縮することです。