У меня был 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
, и он все это выяснит автоматически.