3
Управление слотами
Активация, деактивация, перемещение между серверами
35 минУрок 3 из 6
Прогресс0%
Теория
Слот привязывается к реплике через параметр primary_slot_name в postgresql.conf реплики.
При подключении реплики слот становится активным (active = true).
Если реплика отключается, слот остаётся активным некоторое время (取决于 wal_sender_timeout).
Для перемещения слота между серверами нужно удалить его на старом сервере и создать на новом.
Практика
1. Настройка реплики на слот
На реплике добавьте параметр в postgresql.conf:
Настройка реплики на слот
Команда
echo "primary_slot_name = 'standby1_slot'" | sudo tee -a /etc/postgresql/16/main/postgresql.confВывод:
primary_slot_name = 'standby1_slot'
2. Перезапуск реплики
Перезапустите PostgreSQL на реплике для применения настроек:
Перезапуск реплики
Команда
sudo systemctl restart postgresql3. Проверка активности слота
На мастере проверьте, что слот теперь активен:
Проверка активности слота
Команда
sudo -u postgres psql -c "SELECT slot_name, active, active_pid FROM pg_replication_slots;"Вывод:
slot_name | active | active_pid ---------------+--------+------------ standby1_slot | t | 12345
Проверка
Убедитесь, что слот активен и привязан к процессу реплики:
Проверка
Команда
sudo -u postgres psql -c "SELECT s.slot_name, r.pid, r.application_name FROM pg_replication_slots s LEFT JOIN pg_stat_replication r ON s.active_pid = r.pid WHERE s.active = true;"Вывод:
slot_name | pid | application_name ---------------+-------+------------------ standby1_slot | 12345 | walreceiver