LINUX.ORG.RU
ФорумAdmin

Неблокирующая репликация в PostgreSQL 9.5

 ,


0

1

Здравствуйте, меня зовут %user_name%, и я программист...

То есть ни разу не архитектор БД, и с постгресом знаком довольно опосредованно. А задача стоит настроить репликацию довольно нагруженной базы, при том не абы какую, а для географический распределенных серверов, и чтобы не вызывало блокировок таблиц. Я, как водится, погуглил, нашел bucardo, и после попытки внедрения возникло требование про блокировку таблиц.

Проблема осложняется тем, что в базе есть пара пухлых таблиц (миллионы записей), и еще таблица логов, в которой каждый день по несколько миллионов новых записей появляется.

Сейчас гляжу на BDR, но смущает необходимость перезагрузки.

Ткните, пожалуйста, носом в толковую доку, или подскажите, куда рыть.

Заранее спасибо!

Master → slave репликация работает без сторонней херни, слейв при этом в read-only, но может быть участником цепочки, то есть иметь под собой ещё пучок слейвов. Для работы требуется включить WAL.

BDR, появившаяся в коробке только с версии 9.5, работает в обе стороны, но накладывает пучок ограничений на операции (в документации есть). Штука, в целом, весьма удобная.

Из сторонних решений есть, например, Skytools Londiste ( причём 2 версия мне нравится много больше 3-й, например — тупее и эффективней ). Оно тоже однонаправленное, но в слейв при этом можно писать и мастер не блокируется.

Рестарт мастер базы не потребуется только в третьем случае, но он более геморройный и нужен далеко не всем.

sand_circle ()

Опиши кейс, что именно тебе надо? Ты хочешь иметь копию всей базы в hot_standby? Тогда стримовая репликация искаробки тебе полностью подойдет. Если тебе нужна логическая репликация (то есть конкретные таблицы), то можно использовать londiste из skytools (как отписался товарищ выше), либо pg_logical (еще нет в контрибе и не рекомендовал бы, потому что работает с валами и можно превратить базу в кирпич, не говоря уже о wal-бомбе и прочем). Ну выбор за тобой.
И да, перезагрузки не требует londiste..ну и стримка, если у тебя конфиг правильный выставлен.

v9lij ★★★★★ ()
Ответ на: комментарий от v9lij

Спасибо за ответы!

Опиши кейс, что именно тебе надо? Ты хочешь иметь копию всей базы в hot_standby?

Так точно. Нужно иметь максимально точную копию базы, на случай падения основного сервера. Плюс самостоятельная синхронизация данных после восстановления связи. Также неплохо было бы иметь репликацию DDL команд.

не говоря уже о wal-бомбе

Крайне желательно без обойтись без WAL, так как не известно, сколько может пролежать сервер (в теории до суток, но как это будет на практике...)

BetsuNo ()
Ответ на: комментарий от BetsuNo

Ну под твои требования подошла бы стримовая репликация, но она построена на wal-ах.Могу посоветовать обдумать вариант с их архивированием и последующей накаткой стримки из этого архива. Данный архив можно держать на каком-нибудь nfs вне сервера.

v9lij ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.