PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Paquets PGLogical 1.1 pour PostgreSQL 9.6beta1

Nous avons rendu les packages pglogical 1.1 disponibles pour PostgreSQL 9.6beta1 pour les distributions basées sur rpm et deb. Ils peuvent être installés à partir de notre référentiel de packages pglogical standard.

Vous vous demandez peut-être pourquoi nous publions des packages pour la version bêta de Postgres ? Eh bien, l'une des raisons est que vous pouvez utiliser pglogical pour répliquer votre base de données PostgreSQL 9.5 ou 9.4 existante sur la 9.6beta1 en temps réel et exécuter des tests dessus pour aider à éliminer les bogues restants dans la version bêta. Voici un tutoriel rapide sur la façon de procéder.

La première étape consiste à installer PostgreSQL 9.6beta1, consultez l'annonce de la version pour savoir comment procéder. La deuxième étape consiste à installer pglogical comme expliqué sur la page des instructions d'installation.

Passons maintenant à la configuration de la réplication proprement dite. C'est assez facile. Commencez par vous assurer que PostgreSQL est configuré pour autoriser la réplication logique :

wal_level = 'logical'
max_worker_processes = 10   # one per database needed on provider node
                            # one per node needed on subscriber node
max_replication_slots = 10  # one per node needed on provider node
max_wal_senders = 10        # one per node needed on provider node
shared_preload_libraries = 'pglogical'

La modification des paramètres ci-dessus nécessite le redémarrage du serveur.

Vous devez également autoriser les connexions de réplication entrantes dans pg_hba.conf (tout comme lors de la configuration de la réplication physique en continu). La ligne dans pg_hba.conf devrait ressembler à ceci :

host    replication     postgres        10.0.0.2/32            md5

Voir la page de documentation de pg_hba pour plus d'informations.

Ensuite, installez l'extension pglogical sur la base de données du fournisseur et créez-y le nœud pglogical :

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=db'
);

Faites ensuite de même sur la nouvelle base de données 9.6 :

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=db'
);

Notez que les chaînes de connexion doivent conduire à la base de données dans laquelle vous exécutez ces commandes.

De retour sur la base de données du fournisseur, ajoutez les tables que vous souhaitez répliquer au default ensemble de réplication. Un moyen simple de le faire est d'ajouter toutes les tables dans le public schéma comme celui-ci :

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

Et enfin, toujours sur la base de données des abonnés, créez un abonnement qui se connecte au fournisseur et commence à se répliquer.

SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=db',
    synchronize_structure := true
);

Ici, la chaîne de connexion doit être la même que celle utilisée lors de la création du nœud pglogical du fournisseur. La synchronize_structure := true signifie que pglogical copiera toutes les structures de table de la base de données du fournisseur vers la base de données de l'abonné (en utilisant le standard pg_dump ).

Et voilà, vous avez maintenant une réplication fonctionnelle entre votre base de données PostgreSQL 9.5 ou 9.4 existante et la nouvelle PostgreSQL 9.6beta1.

Consultez la documentation de pglogical et les pages du projet pour plus d'informations sur les fonctions utilisées dans cet article et sur la manière de faire plus qu'une simple réplication.