Задать вопрос
@seekinganswers

Как инициализировать файлы Postgresql?

Добрый день, уважаемым Тостерцы! Прошу Вас по возможности наставить юного падавана в *nix системах!
А теперь к дело.
На UBUNTU 16.04 был установлен Postgresql 9.6. Нужно было задать другую папку для баз. Использовал след алгоритм действий:

удалил текущий каталог кластера базы данных:

sudo rm -rf /var/lib/postgresql

- установил пароль для UNIX-пользователя postgres:

sudo passwd postgres

- создал новый каталог кластера базы данных:

sudo mkdir /media/ad/data/bd1c

- установил UNIX-пользователя postgres владельцем каталога /var/lib/pgsql:

sudo chown -R postgres:postgres media/ad/data/bd1c

- от имени UNIX-пользователя postgres инициализировал кластер базы данных с новым каталогом и новой локалью:

su postgres -c '/usr/lib/postgresql/9.6/bin/initdb -D media/ad/data/bd1c --locale=ru_RU.UTF-8'

- от имени суперпользователя в файле /etc/postgresql/9.6/main/postgresql.conf изменил значение каталога кластера базы данных на новое размещение, т.е. в приведенном примере строку
data_directory = '/var/lib/postgresql/9.4/main'
привел к виду
data_directory = '/media/ad/data/bd1c

И в после перезагрузки:
sudo service postgresql status
postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: e
   Active: active (exited) since Пт 2017-05-19 10:53:42 MSK; 58min ago
  Process: 14061 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 14061 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postgresql.service


su - postgres
psql -l
psql: не удалось подключиться к серверу: Нет такого файла или каталога
	Он действительно работает локально и принимает
	соединения через доменный сокет "/var/run/postgresql/.s.PGSQL.5432"?

И юный падаван пошел на форумы искать ответы, нашел ответ:
раскоментировать и инициализировать строку unix_socket_directory = '/var/run/postgresql/'

И тут внимание в /etc/postgresql/9.6/main/postgresql.conf она раскоментированна, а вот тут была закоментированно /media/ad/Data/bd1c/postgresql.conf и тут сразу выпал в осадок, какой из postgresql.conf главнее и как найти, кто на него ссылается. Или я совсем не правильно копаю?

Прошу наставить юного падавана на путь правильный! Заранее спасибо Вам за ответы! Хочу разобраться в процессе, что бы в дальнейшим таких ошибок не возникало или как минимум мог сразу понять, что к чему:)
  • Вопрос задан
  • 4760 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
sudo rm -rf /var/lib/postgresql

Это был home dir пользователя, а не каталог кластера. Каталог кластера в дефолтной поставке в /var/lib/postgresql/версия_pg/ещё_одна_директория_main_или_base

sudo mkdir /media/ad/data/bd1c

Допустим.

su postgres -c '/usr/lib/postgresql/9.6/bin/initdb -D media/ad/data/bd1c --locale=ru_RU.UTF-8'

Внимание на относительный путь. Я не уверен, где в итоге initdb пытался сделать базу.

привел к виду
data_directory = '/var/lib/pgsql'

? Откуда это здесь взялось?

какой из postgresql.conf главнее

Тот, который указан в аргументах запуска postgres. Явным образом через -c config_file либо находящийся в PGDATA в случае отсутствия аргумента с именем конфига.
Ответ написан
Комментировать
@Pustovut
Например в Centos 7 с последней версией Postgres:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы