クラスターが最初に作成されたときに設定されたパラメーターが正しくないため、クラスターを再構築する必要があります。特に、クラスター内のすべてのデータベースはLC_COLLATE
のen_GB.UTF8
に設定されており、C
に変更する必要があります。
pg_dumpall
を使用してクラスターをバックアップし、正しい構成パラメーターを使用して新しいクラスターを作成してから、バックアップを新しいクラスターに復元することに慣れています。
リスクを可能な限り低く抑えるために、既存のクラスターを可能な限り変更せずに、要求に応じて開始できるようにしますが、Sudo service postgresql start
などの呼び出しでは自動開始しません。これを行うのに十分なディスク容量が簡単にあります。編集:これを明確にするために、古いクラスターをインストールしたままにしておきたいのですが、開始したばかりではありません。
クラスターをそのままにしておくことができますが、新しい(正しく構成された)置換とともにクラスターが自動的に開始されないようにするにはどうすればよいですか?つまり、PostgreSQLが新しいクラスターを開始したとしても、PostgreSQLが古いクラスターを開始しないようにするにはどうすればよいですか?
私はグーグルでもう少し時間を過ごしました、そして別の答えのための議論の結果として、スタートアップのスクリプトを読んでください。これは非常に単純であることがわかります。
古いクラスターを無効にする
各クラスターの構成ファイル(/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で更新することを忘れないでください。