Чи наздоганяє PostgreSQL 9.1 потокова реплікація після відставання без архівації WAL?


16

Контекст:

Скажімо, що під час використання потокової реплікації / гарячої очікування на кластері Postgres 9.1, вузол очікування йде вниз. Він затримується на добу, за цей час у майстра виникає багато DML. У режимі очікування recovery.conf не міститься запис "Resto_command" (для відновлення з файлів журналу WAL), але містить рядок "basic_conninfo" (для потокової реплікації).

Питання:

Якщо я знову запускаю режим очікування після дня змін на майстер. Чи він "наздожене" (зрештою, вступить у стан, який відображає головного майстра), використовуючи лише потокову реплікацію? Або я повинен увімкнути архівування файлів WAL і дозволити йому застосовувати файли, архівовані під час відключення, щоб забезпечити валюту?

Я перевірив документ архівування WAL / потокового реплікації тут , і він говорить про те, що вам не потрібно вмикати і WAL-архівування, і потокову реплікацію, але незрозуміло, чи відбудеться підключення, не ввімкнувши архівування файлів WAL.

Спасибі!

Відповіді:


9

Так, він наздожене, використовуючи лише потокове передавання, якщо (і лише якщо) кількість сегментів WAL, сформованих з моменту останнього оновлення в режимі очікування, менша за значення wal_keep_segments в postgresql.conf. Це висвітлено в цьому розділі документації: Реплікація


2
Ця відповідь правильна, але вона висвітлює проблему. Якщо ви коли-небудь передаєте wal_keep_segments, ваша реплікація буде мертвою. Налаштування реплікації на основі файлів не є обов'язковою, якщо ви хочете, щоб система пережила тривалий відключення від головного майстра і зберегла резервну копію.
Грег Сміт

0

у вузлі очікування ви можете встановити Resto_command на recovery.conf, а потім скопіювати файли master pg_xlog (які відсутні в режимі очікування) у папку, в якій відновлено_команди. Ви можете легко знайти, які файли xlog відсутні, запустивши вузол запуску та ввівши

ps aux | grep postgres

ви побачите там, що "чекає 000000020000005200000025" або щось подібне, що вказує вам, який pg_xlog слід почати копіювати з майстра на шлях відновлення_команди в режимі очікування.

якщо увімкнути wal_archiving, він розпочнеться з архіву з моменту налаштування.


Я розумію, що за допомогою архівації на основі файлів WAL та надання режиму очікування відновлення_команда відновлення для завантаження файлів WAL я можу переконатися, що він наздоганяє. Але це не моє питання; Я хочу дізнатися, чи буде в режимі очікування назріти чи ні, якщо я використовую лише потокову реплікацію (відсутність доставки файлів WAL, лише потік реплікації, як зазначено у "basic_conninfo").
Зак Б

ні. postgres цього не робить. ви повинні скопіювати файли журналів, якщо затримка вашої реплікації є.
sftsz

0

Ні, я створив екземпляр потокової реплікації, і вона якось вийшла з синхронізації, я не зміг змусити її знову працювати, поки не зробив посібник rsyncз архівів WAL.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.