web-dev-qa-db-ja.com

「servicepostgresqlstart」のpostgresqlデータベースのconfig_fileの場所を変更するにはどうすればよいですか?

使用して9.3にアップグレードしたPostgreSQL9.1データベースがありました

/usr/lib/postgresql/9.3/bin/pg_upgrade -b /usr/lib/postgresql/9.1/bin -B /usr/lib/postgresql/9.3/bin -d /var/lib/postgresql/9.1/main/ -D /var/lib/postgresql/9.3/main/ -O "-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -o "-c config_file=/etc/postgresql/9.1/main/postgresql.conf"

指示に従って ここ 、残念ながらその後、私は最後のビットを注意深く見ていなかったことに気づきました。

アップグレード後(成功しました)、データディレクトリのデフォルトの場所(この場合は/ var/lib/postgresql/9.3/main)の代わりに、アップグレードのオプションにより、すべてのPostgreSQL構成ファイルが/ etc/postgresql/9.1/main /に配置されるように構成されました。

これを変更する方法を探していましたが、これまでのところ、hba_fileident_filepostgresql.conf自体で簡単に変更できますが、config_fileは、postgresコマンドラインインターフェイスを介する場合を除いて設定できません。

postgres-o "-c config_file=/var/lib/postgresql/9.3/main"オプションとともに使用しようとしましたが、これはservice postgresql startとは別に、サービスの別のインスタンスを開始しようとしているようです。

実行中pg_ctl status -D ~/9.3/main/取得

`/usr/lib/postgresql/9.3/bin/postgres "-D" "/var/lib/postgresql/9.3/main" "-c" "config_file=/etc/postgresql/9.3/main/postgresql.conf"`

これは、-c... /etc...がサービスを開始するものすべてに渡されていることを意味します。私の限られた知識に基づいて、これはstartパラメーターを持つ/etc/init.d/postgresqlであると信じています。それを見ると、/usr/share/postgresql-common/init.d-functionsを参照しているようです。これには、上に向かって次のものが含まれています。

do_ctl_all() {
[ "$1" ] || { echo "Error: invalid command '$1'" >&2; exit 1; }
[ "$2" ] || { echo "Error: invalid version '$2'" >&2; exit 1; }
[ -d "/etc/postgresql/$2" ] || return 0
[ "$(ls /etc/postgresql/$2)" ] || return 0
[ -x "/usr/lib/postgresql/$2/bin/postmaster" ] || return 0
...

これらに関連性があるかどうかはわかりませんが。

私が尋ねているのは、config_file変数を構成したり、サービスの開始方法をカスタマイズしたりする方法があるかどうかです。

助けてくれてありがとう!理解不足でごめんなさい、もっと学ぼうとしています!

2
FLGMwt

すべての構成ファイルを/etc/postgresql/9.3/main/にコピーします。アップグレードの一部として行いたい調整を行います。次に、を使用して新しいサーバーを起動できるはずです。

Sudo pg_ctlcluster 9.3 main start

ご存知のように、PostgreSQLのDebianパッケージでは、データディレクトリやその他の構成ファイルを含む他のすべてのものがどこにあるかを把握するために、その場所にpostgresql.confを配置する必要があります。 postgresql.confがそれらに適した場所を指していることを確認してください。

次回は、pg_upgradecluster -m upgrade 9.1 mainを使用すると、これらすべてが自動的に把握されます。

1