7
Синхронизация
Полная и инкрементальная ресинхронизация данных
35 минУрок 7 из 9
Прогресс0%
Теория
Полная ресинхронизация — процесс полного копирования данных с мастера на реплику.
Инкрементальная ресинхронизация — применение пропущенных WAL-файлов.
Ресинхронизация может занять много времени при большом расхождении данных.
Для ускорения используйте rsync или pg_basebackup с параллельным копированием.
Практика
1. Проверка расхождения
Определите размер расхождения данных:
Проверка расхождения
Команда
sudo -u postgres psql -h standby-ip -c "SELECT pg_wal_lsn_diff(pg_last_wal_receive_lsn(), (SELECT pg_last_wal_replay_lsn() FROM pg_stat_wal_receiver));"Вывод:
pg_wal_lsn_diff
-----------------
02. Полная ресинхронизация
Если расхождение слишком велико, выполните полное копирование:
Полная ресинхронизация
Команда
sudo systemctl stop postgresql && sudo -u postgres rm -rf /var/lib/postgresql/16/main/* && sudo -u postgres pg_basebackup -h new-master-ip -D /var/lib/postgresql/16/main -U replicator -Fp -Xs -P -RВывод:
24887/24887 kB (100%), 1/1 tablespace Transaction log and system record written to disk. Backup complete
Проверка
После ресинхронизации проверьте работу:
Проверка
Команда
sudo systemctl start postgresql && sudo -u postgres psql -c "SELECT pg_is_in_recovery();"Вывод:
pg_is_in_recovery -------------------- t