Как потоковая репликация Postgres 9.2 обрабатывает изменения схемы и первоначальную настройку таблицы?

8

Я хочу создать резервную копию базы данных на физическом сервере, который находится прямо под моим основным физическим сервером базы данных. Я использую Postgres 9.2, и я хочу использовать синхронную потоковую репликацию (для атомарности), но я совершенно не знаю, как, например, A) первоначальная настройка таблицы переносится с сервера 1 на сервер 2 (например, я запускаю syncdbиз моего приложения Django, которое создает серию таблиц на сервере 1), и B) как продолжающиеся изменения схемы переносятся с сервера 1 на сервер 2 (например, я запускаю миграцию Django South, которая отправляет ALTER TABLEзапросы, а также добавляет / удаление индексов и т. д.). Эти вещи прозрачно обрабатываются при потоковой репликации, или я должен что-то сделать, чтобы повлиять на это изменение на обоих серверах?

orokusaki
источник

Ответы:

14

Если вы намереваетесь использовать встроенную потоковую репликацию PostgreSQL, то вы заполняете реплику базовой резервной копией - копией исходной базы данных на уровне файловой системы. Так что уже есть все таблицы и данные от мастера. pg_basebackupобычно используется для этого.

Потоковая репликация считывает изменения на уровне блоков из журналов упреждающей записи, поэтому физически базы данных остаются неизменными. Поскольку DDL, как и DML, записывается в WAL, DDL и DML прозрачно реплицируются.

См. Документацию по HA и репликации в PostgreSQL для получения дополнительной информации.

Крейг Рингер
источник