#postgresql #replication #database-replication
#postgresql #репликация #база данных-репликация
Вопрос:
Нужно ли мне что-либо делать с основным, если я навсегда удалю его единственную реплику? Я обеспокоен тем, что файлы WAL заполняют диск.
Я хочу удалить единственную реплику из настройки репликации с одним узлом:
P -> R
Я хочу удалить R.
Комментарии:
1. на самом деле это зависит от настроек recovery conf
R
.
Ответ №1:
Ваши опасения абсолютно верны. Реплика создает слот репликации на основном сервере, где restart_lsn
хранится. Согласно документам, restart_lsn
это:
Адрес (LSN) самого старого WAL, который все еще может потребоваться потребителю этого слота и, следовательно, не будет автоматически удален во время контрольных точек.
Если replica не продвигает LSN в этом слоте репликации, primary сохранит все сегменты WAL, начиная с этой позиции и игнорируя max_wal_size
limit .
Если вы хотите удалить реплику и включить ротацию WAL, вам также необходимо удалить слот репликации:
postgres=# SELECT * FROM pg_replication_slots;
postgres=# SELECT pg_drop_replication_slot('replication_slot_name');
На Postgres Commitfest есть исправление, которое вводит новый GUC для ограничения объема WAL, удерживаемого слотом репликации. Однако исправление является долгоживущим и все еще не зафиксировано.
Комментарии:
1. примечание: не все реплики используют слоты репликации, но это все равно хороший совет.