Comment la réplication en streaming de Postgres 9.2 gère-t-elle les modifications de schéma et la configuration initiale de la table?

8

Je veux configurer une base de données de sauvegarde sur le serveur physique qui se trouve juste sous mon serveur de base de données physique principal. J'utilise Postgres 9.2 et je veux utiliser la réplication synchrone en streaming (pour l'atomicité), mais je ne sais absolument pas comment des choses comme, A) la configuration initiale de la table est transférée du serveur 1 au serveur 2 (par exemple, je lance syncdbà partir de mon application Django, qui crée une série de tableaux sur le serveur 1) et B) comment les modifications de schéma continues sont effectuées du serveur 1 au serveur 2 (par exemple, j'exécute une migration Django Sud, qui envoie des ALTER TABLErequêtes, ainsi que l'ajout / suppression des index, etc.). Ces choses sont-elles gérées de manière transparente avec la réplication en streaming, ou dois-je faire quelque chose pour affecter ce changement sur les deux serveurs?

orokusaki
la source

Réponses:

14

Si vous avez l'intention d'utiliser la réplication de streaming intégrée de PostgreSQL, vous amorcez la réplique avec une sauvegarde de base - une copie au niveau du système de fichiers de la base de données d'origine. Il a donc déjà toutes les tables et les données du maître. pg_basebackupest généralement utilisé pour cela.

La réplication en streaming lit les modifications au niveau du bloc à partir des journaux d'écriture anticipée, de sorte que les bases de données sont physiquement identiques. Comme DDL est, tout comme DML, enregistré dans le WAL, DDL et DML sont tous deux répliqués de manière transparente.

Voir la documentation sur HA et la réplication dans PostgreSQL pour plus d'informations.

Craig Ringer
la source