sql >> Base de Datos >  >> RDS >> PostgreSQL

Paquetes PGLogical 1.1 para PostgreSQL 9.6beta1

Hemos puesto a disposición paquetes pglogical 1.1 para PostgreSQL 9.6beta1 para distribuciones basadas en rpm y deb. Están disponibles para su instalación desde nuestro repositorio de paquetes pglogical estándar.

Puede preguntarse por qué lanzamos paquetes para la versión beta de Postgres. Bueno, una de las razones es que puede usar pglogical para replicar su base de datos PostgreSQL 9.5 o 9.4 existente en la 9.6beta1 en tiempo real y ejecutar pruebas para ayudar a eliminar cualquier error restante en la versión beta. Aquí hay un tutorial rápido sobre cómo hacerlo.

El primer paso es instalar PostgreSQL 9.6beta1, consulte el anuncio de lanzamiento para obtener información sobre cómo hacerlo. El segundo paso es instalar pglogical como se explica en la página de instrucciones de instalación.

Ahora, para la configuración de replicación real. Es bastante fácil. Comience asegurándose de que PostgreSQL esté configurado para permitir la replicación lógica:

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'

Cambiar la configuración anterior requiere reiniciar el servidor.

También debe permitir las conexiones de replicación entrantes en pg_hba.conf (al igual que cuando configura la replicación de transmisión física). La línea en pg_hba.conf debería verse así:

host    replication     postgres        10.0.0.2/32            md5

Consulte la página de documentación de pg_hba para obtener más información.

A continuación, instale la extensión pglogical en la base de datos del proveedor y cree allí el nodo pglogical:

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

Luego haga lo mismo en la nueva base de datos 9.6:

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

Tenga en cuenta que las cadenas de conexión deben conducir a la base de datos en la que está ejecutando estos comandos.

De vuelta en la base de datos del proveedor, agregue las tablas que desea replicar al default conjunto de replicación. Una forma simple de hacer esto es agregar todas las tablas en el public esquema como este:

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

Y finalmente, nuevamente en la base de datos de suscriptores, cree una suscripción que se conecte al proveedor y comience a replicarse.

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

Aquí, la cadena de conexión debe ser la misma que se usó al crear el nodo pglogical del proveedor. La synchronize_structure := true significa que pglogical copiará todas las estructuras de la tabla desde la base de datos del proveedor a la base de datos del suscriptor (usando pg_dump estándar ).

Y eso es todo, ahora tiene una replicación de trabajo entre su base de datos existente de PostgreSQL 9.5 o 9.4 y el nuevo PostgreSQL 9.6beta1.

Consulte la documentación de pglogical y las páginas del proyecto para obtener información adicional sobre las funciones utilizadas en esta publicación y sobre cómo hacer más que una simple replicación.