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

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.

Запустите службу postgesql

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