web-dev-qa-db-ja.com

LVM / ZFSスナップショットを作成する前にPostgresを一時停止するにはどうすればよいですか?

すべての「進行中」トランザクションを完了するようにPostgresに指示するにはどうすればよいですか。ただし、ZFSまたはLVMスナップショット(1秒未満)を取得するまで、(クライアントをキックオフせずに)新しいトランザクションの開始を遅らせます。

例えば.

  1. postgresを一時停止し、「進行中の」トランザクションが完了するのを待ちます
  2. ディスクに同期
  3. zFS/LVMスナップショットを取得します
  4. postgresを再開します
3
fadedbee

この答え dba.stackexchangeであなたが求めているもののようです。

コメントはサイドバー(ネットワーク内)に自動的にリンクされていないようです。そのため、コメントへの自動変換を防ぐために、さらにいくつかの情報を書き込む必要があります...ええ。

1
user121391

@ user121391の回答に記載されている投稿は正しいですが、要するに:

  • pause postgresqlは決してできません(開いているトランザクションを継続し、新しいトランザクションを処理しないように強制します)
  • 基になるスナップショットがアトミックである場合(ZFSスナップショットはアトミックであるように見える)、スナップショットの前に何もする必要はありません。スナップショットで新しいpostgresプロセスを実行すると、データベースはリカバリモードで起動します(前のプロセスが異常に停止しました)。
  • pg_start_backup回復プロセスが少し速くなります(チェックポイントが作成され、WALで保留中の書き込みが少なくなるため)
1
Taha Jahangir