Configuración de la replicación lógica para la instancia de base de datos de RDS para PostgreSQL
En el siguiente procedimiento, se muestra cómo iniciar la replicación lógica entre dos instancias de base de datos de RDS para PostgreSQL. En los pasos, se asume que tanto el origen (publicador) como el destino (suscriptor) tienen la extensión pglogical
configurada como se detalla en Configuración de la extensión pglogical.
Para crear el nodo publicador y definir las tablas que se van a replicar
En estos pasos se asume que la instancia de base de datos de RDS para PostgreSQL tiene una base de datos que tiene una o más tablas que desea replicar en otro nodo. Debe volver a crear la estructura de tablas del publicador en el suscriptor, así que primero debe obtener la estructura de la tabla si es necesario. Para ello, utilice el metacomando de psq1
\d
y, a continuación, cree la misma tabla en la instancia del suscriptor. El siguiente procedimiento crea una tabla de ejemplo en el publicador (origen) con fines de demostración.tablename
-
Utilice
psql
para conectarse a la instancia que tiene la tabla que desea usar como origen para los suscriptores.psql --host=
source-instance
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=labdb
Si no dispone de una tabla existente que desee replicar, puede crear una tabla de ejemplo de la siguiente manera.
-
Cree una tabla de ejemplo con la siguiente instrucción SQL.
CREATE TABLE docs_lab_table (a int PRIMARY KEY);
-
Rellene la tabla con los datos generados mediante la siguiente instrucción SQL.
INSERT INTO docs_lab_table VALUES (generate_series(1,5000));
INSERT 0 5000
-
Compruebe que los datos existen en la tabla mediante la siguiente instrucción SQL.
SELECT count(*) FROM docs_lab_table;
-
-
Identifique esta instancia de base de datos de RDS para PostgreSQL como nodo publicador de la siguiente manera.
SELECT pglogical.create_node( node_name := '
docs_lab_provider
', dsn := 'host=source-instance
.aws-region
.rds.amazonaws.com port=5432 dbname=labdb
');create_node ------------- 3410995529 (1 row)
-
Añada la tabla que desea replicar al conjunto de replicación predeterminado. Para obtener más información sobre los conjuntos de replicación, consulte Replication sets
(Conjuntos de replicación) en la documentación de pglogical. SELECT pglogical.replication_set_add_table('default', '
docs_lab_table
', 'true', NULL, NULL);replication_set_add_table --------------------------- t (1 row)
Se ha completado la configuración del nodo publicador. Ahora puede configurar el nodo suscriptor para recibir las actualizaciones del publicador.
Para configurar el nodo suscriptor y crear una suscripción para recibir actualizaciones
En estos pasos se asume que la instancia de base de datos de RDS para PostgreSQL se ha configurado con la extensión pglogical
. Para obtener más información, consulte Configuración de la extensión pglogical.
-
Utilice
psql
para conectarse a la instancia en la que desea recibir actualizaciones del publicador.psql --host=
target-instance
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=labdb
-
En , la instancia de base de datos de RDS para PostgreSQL del suscriptor, cree la misma tabla que existe en el publicador. En este ejemplo, la tabla es
docs_lab_table
. Puede crear la tabla tal y como se indica a continuación.CREATE TABLE docs_lab_table (a int PRIMARY KEY);
-
Compruebe que esta tabla esté vacía.
SELECT count(*) FROM docs_lab_table;
count ------- 0 (1 row)
-
Identifique esta instancia de base de datos de RDS para PostgreSQL como nodo suscriptor de la siguiente manera.
SELECT pglogical.create_node( node_name := '
docs_lab_target
', dsn := 'host=target-instance
.aws-region
.rds.amazonaws.com port=5432 sslmode=require dbname=labdb
user=postgres
password=********
');create_node ------------- 2182738256 (1 row)
-
Cree la suscripción.
SELECT pglogical.create_subscription( subscription_name := 'docs_lab_subscription', provider_dsn := 'host=
source-instance
.aws-region
.rds.amazonaws.com port=5432 sslmode=require dbname=labdb
user=postgres
password=*******
', replication_sets := ARRAY['default'], synchronize_data := true, forward_origins := '{}' );create_subscription --------------------- 1038357190 (1 row)
Al completar este paso, los datos de la tabla del publicador se crean en la tabla del suscriptor. Para comprobar que ha ocurrido esto, utilice la siguiente consulta SQL.
SELECT count(*) FROM docs_lab_table;
count ------- 5000 (1 row)
A partir de este momento, los cambios realizados en la tabla del publicador se replicarán en la tabla del suscriptor.