• Post category:Настройки
  • Запись изменена:17.07.2025

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

 

Была ли полезна статья?
Позвольте нам стать лучше