Назад | Перейти на главную страницу

Как мне изменить расположение config_file базы данных postgresql для «запуска службы postgresql»?

У меня был PostgreSQL 9.1 db, который я только что обновил до 9.3, используя

/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_file и ident_file можно легко изменить в postgresql.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... передается тому, что запускает службу. Основываясь на моих ограниченных знаниях, я считаю, что это /etc/init.d/postgresql с start параметр. Глядя на это, кажется, что это ссылка /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 переменная или настроить способ запуска службы.

Спасибо за любую помощь! Извините за непонимание, я пытаюсь узнать больше!

Скопируйте все свои файлы конфигурации в /etc/postgresql/9.3/main/. Внесите любые изменения, которые вы хотите внести в рамках обновления. Затем вы сможете запустить новый сервер, используя

sudo pg_ctlcluster 9.3 main start

Как вы уже поняли, для пакета Debian PostgreSQL требуется postgresql.conf должен быть расположен в этом месте, потому что он начинает там, чтобы выяснить, где находится все остальное, включая каталог данных и другие файлы конфигурации. Убедитесь, что ваш postgresql.conf указывает на нужные места для них.

В следующий раз используйте pg_upgradecluster -m upgrade 9.1 main, и он все это выяснит автоматически.