web-dev-qa-db-ja.com

PostgreSQLがLinux(Ubuntu)でクラスターを起動しないようにするにはどうすればよいですか?

クラスターが最初に作成されたときに設定されたパラメーターが正しくないため、クラスターを再構築する必要があります。特に、クラスター内のすべてのデータベースはLC_COLLATEen_GB.UTF8に設定されており、Cに変更する必要があります。

pg_dumpallを使用してクラスターをバックアップし、正しい構成パラメーターを使用して新しいクラスターを作成してから、バックアップを新しいクラスターに復元することに慣れています。

リスクを可能な限り低く抑えるために、既存のクラスターを可能な限り変更せずに、要求に応じて開始できるようにしますが、Sudo service postgresql startなどの呼び出しでは自動開始しません。これを行うのに十分なディスク容量が簡単にあります。編集:これを明確にするために、古いクラスターをインストールしたままにしておきたいのですが、開始したばかりではありません。

クラスターをそのままにしておくことができますが、新しい(正しく構成された)置換とともにクラスターが自動的に開始されないようにするにはどうすればよいですか?つまり、PostgreSQLが新しいクラスターを開始したとしても、PostgreSQLが古いクラスターを開始しないようにするにはどうすればよいですか?

5
Philip Couling

私はグーグルでもう少し時間を過ごしました、そして別の答えのための議論の結果として、スタートアップのスクリプトを読んでください。これは非常に単純であることがわかります。


古いクラスターを無効にする

各クラスターの構成ファイル(/etc/postgresql/<version>/<cluster>/)の下に、start.confというファイルがあります。これには、コメントされていない単語が1つだけ含まれています-auto。これをmanualに変更するだけで、起動スクリプトはこのクラスターを完全に無視します。

クラスターを手動で開始するには、pg_ctlcluster <version> <name>を使用できます。


古い/新しいクラスターの名前を変更する

PostgreSQLスクリプトは、すべてのクラスターのpostgresql.confファイルが/etc/postgresql/<version>/<cluster name>/postgresql.confにあることに基づいて機能します。

このディレクトリの名前を変更してクラスター名を変更できる(バージョン名を同じに保つ)ことができると考えたくなります。実際、それはほとんど簡単です。

ただし、postgresql.confは、pg_hba.confなどの他のいくつかのファイルを参照します。これらは、ディレクトリの名前を変更したときにも移動します。したがって、ディレクトリの名前を変更した後、postgresql.confでこれらの参照も更新する必要があります。

データディレクトリの名前を変更する必要はありませんが、データディレクトリ名がクラスタの名前に従っている場合は、健全性を維持するのに役立ちます。繰り返しますが、これの名前を変更する場合は、postgresql.confで更新することを忘れないでください。

11
Philip Couling