Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

PostgreSQL переводим Slave в Master

Обновлено: 25.12.25

1. Первым делом необходимо проверить, что репликация одинаковая на обоих серверах

Для этого запустите на Master команду:

select * from pg_stat_replication \gx

На Slave команду:

select * from pg_stat_wal_receiver \gx
Важно

Необходимо обратить внимание на то, чтобы значения sent_lsn были равны received_lsn.

Далее остановите службы PostgreSQL:

systemctl start postgresql

Сервер Master можно выключить или изолировать от сети, чтобы никто не пытался подключаться к нему и не изменились значения в базе.

2. Настройка SLAVE сервера

Далее подключитесь к SLAVE серверу и начните готовить его к смене роли.

Необходимо, чтобы сервер остановил репликацию, для этого создадим триггер, который сообщит серверу, что он теперь Master и выйдет из режима READONLY:

nano /var/lib/postgresql/11/main/recovery.conf
#Добавьте триггер файл
trigger_file = '/tmp/to_master'

Запустите службу PostgreSQL и создадите файл-триггер:

sudo systemctl start postgresql
touch /tmp/to_master

Произведите настройку файла pg_hba.conf:

#добавьте строки
host    cddisk          cddisk          192.168.26.19/32        md5
host    replication     repluser        127.0.0.1/32            md5
host    replication     repluser        192.168.26.16/32        md5
host    replication     repluser        192.168.26.23/32        md5

Где:

  • 192.168.26.19 — cddisk сервер;
  • 192.168.26.16 — Master сервер;
  • 192.168.26.23 — Slave сервер.

Добавьте разрешение на подключение к серверу по порту 5432:

sudo firewall-cmd --zone=public --permanent --add-port=5432/tcp
sudo firewall-cmd --reload

Измените настройки конфигурационного файла postgresql.conf:

wal_level = replica
max_wal_senders = 1
max_replication_slots = 2
hot_standby = on
hot_standby_feedback = on

Снова перезапустите службу PostgreSQL:

systemctl restart postgresql

На этом подготовка смены роли Slave на Master окончена.

3. Настройка Master

Подключитесь теперь к Master серверу и настройте его на роль Slave.

Остановите службу PostgreSQL, если она еще включена:

systemctl stop postgresql

Внесите изменения в конфигурационный файл:

sudo nano /etc/postgresql/11/main/pg_hba.conf
#Убирите две записи 

host    replication     repluser        192.168.26.16/32        md5
host    replication     repluser        192.168.26.23/32        md5

Загрузите базу:

su - postgres -c "pg_basebackup --host=192.168.26.23 --username=repluser --pgdata=/var/lib/postgresql/11/main --wal-method=stream --write-recovery-conf"

Где:

  • 192.168.26.23 — новый Master.

Запустите службу PostgreSQL:

systemctl start postgresql

4. Настройка Корпоративного сервера 2024

Корпоративный сервер 2024 настроен на подключение к старому Master серверу. Необходимо внести изменения в конфигурационные файлы.

Перейдите в директорию /opt/r7-office измените адреса на новый Master в следующих файлах конфигурации:

/Api/appsettings.json
/Sso.Api/appsettings.json
/Processing/appsettings.json

Перезапустите службы:

sudo supervisorctl restart cddisk:api cddisk:processing

Далее проверить, что репликация работает можно следующим способом:

Для этого запустите на Master команду:

select * from pg_stat_replication \gx

На Slave команду:

select * from pg_stat_wal_receiver \gx