Configuración de la replicación lógica para el clúster de base de datos de Aurora PostgreSQL - Amazon Aurora

Configuración de la replicación lógica para el clúster de base de datos de Aurora PostgreSQL

En el siguiente procedimiento, se muestra cómo iniciar la replicación lógica entre dos clústeres de base de datos de Aurora 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.

nota

El node_name de un nodo de suscriptor no puede empezar por rds.

Para crear el nodo publicador y definir las tablas que se van a replicar

En estos pasos se asume que el clúster de base de datos de Aurora PostgreSQL tiene una instancia de escritor con 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 tablename 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.

  1. 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.

    1. Cree una tabla de ejemplo con la siguiente instrucción SQL.

      CREATE TABLE docs_lab_table (a int PRIMARY KEY);
    2. 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
    3. Compruebe que los datos existen en la tabla mediante la siguiente instrucción SQL.

      SELECT count(*) FROM docs_lab_table;
  2. Identifique este clúster de base de datos de Aurora 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)
  3. 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 el clúster de base de datos de Aurora PostgreSQL se ha configurado con la extensión pglogical. Para obtener más información, consulte Configuración de la extensión pglogical.

  1. 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
  2. En el clúster de base de datos de Aurora 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);
  3. Compruebe que esta tabla esté vacía.

    SELECT count(*) FROM docs_lab_table; count ------- 0 (1 row)
  4. Identifique este clúster de base de datos de Aurora 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)
  5. 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.