Мне нужно перестроить кластер из-за неправильных параметров, установленных при его первом создании. В частности, каждая база данных в кластере настроена на LC_COLLATE
из en_GB.UTF8
и его нужно изменить на C
.
Мне удобно выполнять резервное копирование кластера с помощью pg_dumpall
, создание нового кластера с правильными параметрами конфигурации и последующее восстановление резервной копии в новый кластер.
Чтобы максимально снизить риск, я хотел бы оставить существующий кластер как можно без изменений, чтобы его можно было запускать по запросу, но НЕ запускать автоматически при вызове, например sudo service postgresql start
. Для этого легко найти достаточно места на диске. Изменить: чтобы прояснить это, я хочу оставить старый кластер установленным, просто не запущенным.
Как я могу оставить кластер на месте, но чтобы он не запускался автоматически вместе с новой (правильно настроенной) заменой? То есть как мне запретить PostgreSQL запускать старый кластер, даже если он запускает новый?
Я потратил еще немного времени на Google и в результате аргументов в пользу другого ответа прочитал сценарии запуска. Это оказывается довольно просто:
Отключение старого кластера
В файлах конфигурации для каждого кластера (/etc/postgresql/<version>/<cluster>/
) есть файл с именем start.conf
. Он содержит только одно слово без комментариев - 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.