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 postgresql

3. Проверка активности слота

На мастере проверьте, что слот теперь активен:

Проверка активности слота
Команда
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

Пройдите викторину

Для завершения урока необходимо пройти викторину