2014-10-15 8 views
1

Мы используем тот же сервер PostgreSQL 9.3 как для производства, так и для разработки.PostgreSQL: дублирование базы данных на том же сервере «на лету»

Таким образом, мы хотели бы получить копию существующей производственной базы данных для целей разработки. Если быть точным, все события INSERT/UPDATE/DELETE, которые приходят в производство, также должны быть помещены в его копию. Обратная репликация не требуется. Как мы можем сделать это?

PS: Пожалуйста, учтите, что полная репликация ведущего-подчиненного не подходит. На данный момент у нас нет возможности развернуть еще один сервер PostgreSQL.

UPD: pg_dump/pg_restore тоже не так, потому что это приведет к сбою всех обновлений, сделанных разработчиками в их базе данных.

+0

@a_horse_with_no_name, к сожалению, этот подход тоже не подходит, потому что разработчики могут делать некоторые обновления в своей копии. Нам нужно просто дублировать события UPDATE/INSERT, а не развертывать дампы. –

+2

В то же время вы не можете иметь «полную копию существующей производственной базы данных» и «обновления, сделанные разработчиками в своей базе данных». Нет простого способа разрешения конфликтов между обновлениями prod и dev. –

+0

BTW Вы можете проверить postgre BDR: https://wiki.postgresql.org/wiki/BDR_User_Guide Он будет доступен (не очень стабильный) в 9.4 –

ответ

1

Похоже, вы ищете систему репликации, как Slony или Bucardo

Slony использует триггеры для репликации данных, так что должно работать без особых хлопот здесь. И Bucardo использует NOTIFY, чтобы сделать почти то же самое.

Для локальной настройки я бы порекомендовал Slony, но если вы хотите предложить разработчикам локальную базу данных (например, локальную машину), я бы порекомендовал Bucardo вместо этого, поскольку он предлагает асинхронную репликацию.

+0

спасибо, я попробую этот инструмент –

Смежные вопросы