Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Запуск нескольких экземпляров postgres на одном сервере  [new]
depresnak
Member

Откуда:
Сообщений: 27
Здравствуйте, необходимо запустить нескольких экземпляров postgres версии 11 на одном сервере, не совсем понимаю как это сделать.
В postgres я новичок, из того что прочитал в мануалах реализовать это можно с помощью кластера postgres на разных портах. Практической части с реализацией я не нашёл только теория, интересует каким образом это воплотить.

Необходимо будет создать для каждой базы данных путь к базе посредством команды
pg-setup initdb -D /usr/local/pgsql/data1 pg-setup set-server-port 5432
pg-setup initdb -D /usr/local/pgsql/data2 pg-setup set-server-port 5433
.
.
.
initdb -D /usr/local/pgsql/dataN set-server-port N

так-же в документации указано что:
"Команда initdb не будет работать, если указанный каталог данных уже существует и содержит файлы; это мера предохранения от случайной перезаписи существующей инсталляции."

В моем случае базы будут переноситься с помощью pg_basebackup и в дальнейшем будет производиться репликация используя этот сервер как slave.

Возникают следующие вопросы:
1. Правильно ли я представляю организацию запуска нескольких экземпляров postgres с помощью создания кластеров?
2. Существует ли другой метод запуска экземпляров postgres с указанием порта и пути базы данных, скажем через переменные и скрипт?
3. Каким образом осуществляется подключение к тому или иному экземпляру postgres (я так понимаю они будут объединены, но в моем случае базы называются одинаково)?
4. Можно-ли будет перенести в каталоги заданные под кластеры базы с помощью pg_basebackup?
28 янв 20, 09:15    [22067570]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 974
initdb -D path/ или pg_basebackup -D path/
потом редактируете конфиг как нравится, попутно меняете номер порта
потом pg_ctl -D path/ start

Всё что касается postgresql.

Скорей всего вы захотите завести эти кластера в инит-систему. Смотрите документацию к своей системе.
Например, в пакетах ubuntu/debian есть замечательные наборы утилит pg_ctlcluster для управления множеством инстансов postgresql, хорошо интегрированные в инит.
Для centos (емнип, pg-setup это оттуда) такого нет, init предполагает только одну базу указанной major версии. Так что дополнительные сервисы заводятся отдельно администратором.

автор
Каким образом осуществляется подключение к тому или иному экземпляру postgres (я так понимаю они будут объединены, но в моем случае базы называются одинаково)?

Не будут никак объединены. Полностью независимы. Подключаться с указанием нужного номера порта.

автор
Можно-ли будет перенести в каталоги заданные под кластеры базы с помощью pg_basebackup?

Да, разумеется.
28 янв 20, 11:10    [22067622]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
Sergej Grischenkow
Member

Откуда:
Сообщений: 73
Используйте DOCKER
28 янв 20, 12:00    [22067661]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
depresnak
Member

Откуда:
Сообщений: 27
Спасибо

Melkij
initdb -D path/ или pg_basebackup -D path/
потом редактируете конфиг как нравится, попутно меняете номер порта
потом pg_ctl -D path/ start


я правильно понимаю меняю конфиг postgresql.auto.conf указываю
data_directory =
port =
28 янв 20, 12:15    [22067667]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 974
depresnak,

зависит от вашего как администратора желания. postgresql.conf может располагаться в $PGDATA (это дефолт для сборки из исходников) и тогда data_directory не указывается. Может располагаться где-то ещё, но тогда при старте базы вы должны указать где ей искать конфиг.
28 янв 20, 13:24    [22067729]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
kolobok0
Member

Откуда:
Сообщений: 2060
Sergej Grischenkow
Используйте DOCKER


+100500
28 янв 20, 20:26    [22068076]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
depresnak
Member

Откуда:
Сообщений: 27
kolobok0, к сожалению для моих нужд нужен полноценный сервер
29 янв 20, 08:51    [22068301]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
jan2ary
Member

Откуда: Киев
Сообщений: 1783
depresnak
kolobok0, к сожалению для моих нужд нужен полноценный сервер
А чем докер не полноценный?
Унифицированный образ, под данные монтируете разные вольюмы, назначаете разные порты.
29 янв 20, 12:05    [22068480]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 974
jan2ary
под данные монтируете разные вольюмы, назначаете разные порты.

Как говорится найдите 5 отличий от простого запуска нескольких экземпляров базы.
29 янв 20, 12:17    [22068499]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
Sergej Grischenkow
Member

Откуда:
Сообщений: 73
Отличия есть... и в пользу DOCKER"а
Для тех кто не любит сторонние "поделки" - можно и LXC (контейнеры) использовать.
29 янв 20, 12:21    [22068509]     Ответить | Цитировать Сообщить модератору
 Re: Запуск нескольких экземпляров postgres на одном сервере  [new]
kolobok0
Member

Откуда:
Сообщений: 2060
depresnak,

Если бы Вы знали на чём крутятся известные в РФ магазины и как оно устроено внутри...
Высказывания о полноценности забылись бы на долго ..

удачи вам
(круглый)
29 янв 20, 20:44    [22069051]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить