@lolowin32

Как при создании нового кластера postgres указать иное расположение хранения баз?

Всем доброго дня, помогите пожалуйста разобраться как настроить postgres таким образом, чтобы все базы которые будут создаваться, сохранялись в иной каталог, а не по умолчанию в /var/lib/postgresql/9.6/main/

ubuntu-srv-16.04x64
postgres 9.6 (установлен из этой репы 1c.postgrespro.ru/deb )

Заранее всех благодарю за ответы
  • Вопрос задан
  • 1354 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Для начала немного терминологии, чтобы явно говорить на одном языке.
Кластер postgresql - это один запущенный postgres.
Один кластер может содержать несколько именованных баз данных, но все они обслуживаются одним запущенным postgres.
На физической машине кластеров postgres может быть несколько.

А теперь - что вы хотите сделать?
* перенести директорию базы в другое место. Остановить базу, скопировать rsync'ом datadir куда надо, на старом месте сделать симлинк (datadir в конфиге в этом случае даже не надо править, если поправить пути в конфиге - то не обязателен симлинк)
* оставить одни БД в дефолтном месте, а некоторые другие - в другом, но под управлением одного кластера. Вам необходимо сделать tablespace и использовать его. При create database можно указать tablespace, который и будет считаться по-умолчанию для всех объектов этой базы (но переопределить его можно для каждого объекта)
* запустить отдельный кластер. В одно и то же место вы две базы просто не вставите. Соответствующий, и обычно обязательный, параметр в initdb плюс указать datadir в конфиге или строке запуска базы (зависит от того, как будет запускаться база и где лежать ещё конфиг). А для весьма приятного враппера в debian и ubuntu pg_createcluster параметр --datadir так же есть сразу

см. также Как правильно изменить месторасположение базы postgresql-9.2.18.rl7?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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