web-dev-qa-db-ja.com

メンテナンスの実行中にpostgres DBへの接続をロックまたは無効にするにはどうすればよいですか?

MySQLでこの問題が発生することはありませんが、PostgreSQLは、なんらかのメンテナンスを行う際には常に苦痛です。

そのため、新しいデータを切り詰めてPostgreSQLサーバー上のデータベースにロードしようとしていますが、通常はアクティブな接続があり、これにより問題が発生します。削除して作成する必要がある特定のデータベースが1つあり、現在アクティブなデータベースではそれを削除できません。

これらはすべて、実行する必要があるスクリプトで設定されます。

私の問題は、アクティブな接続が私を殺し、スクリプトを機能させないことです。この問題を克服する方法の助けが必要です。

接続をDBにロックするか、接続をブロックしますか?どうすればよいですか?私はMySQLを使用しているため、PostgreSQLにはあまり詳しくありません。

1
uberrebu

ロールの接続制限を設定できます。

ALTER ROLE x SET CONNECTION LIMIT 0;

またはデータベースの場合:

ALTER DATABASE db SET CONNECTION LIMIT 0;

メンテナンス作業が完了したら、接続を無制限にするには、-1などの以前の値に制限をリセットします。

1
Roman Tkachuk