CREAR SUSCRIPCIÓN: definir una nueva suscripción

Sinopsis

CREATE SUBSCRIPTION subscription_name
    CONNECTION 'conninfo'
    PUBLICATION publication_name [, ...]
    [ WITH ( subscription_parameter [= value] [, ... ] ) ]

Descripción

CREATE SUBSCRIPTION agrega una nueva suscripción para la base de datos actual. El nombre de la suscripción debe ser distinto del nombre de cualquier suscripción existente en la base de datos.

La suscripción representa una conexión de replicación con el editor. Como tal, este comando no solo agrega definiciones en los catálogos locales, sino que también crea una ranura de replicación en el editor.

Se iniciará un trabajador de replicación lógica para replicar los datos de la nueva suscripción en la confirmación de la transacción donde se ejecuta este comando.

Información adicional sobre las suscripciones y la replicación lógica en su conjunto está disponible en la Sección 30.2 y Capítulo 30.

Parámetros

subscription_name

El nombre de la nueva suscripción.

CONNECTION 'conninfo'

La conexión string al editor. Para obtener más detalles, consulte Sección 33.1.1.

PUBLICATION publication_name

Nombres de las publicaciones de la editorial a la que suscribirse.

WITH ( subscription_parameter [= value] [, ... ] )

Esta cláusula especifica parámetros opcionales para una suscripción. Se admiten los siguientes parámetros:

copy_data (boolean)

Especifica si los datos existentes en las publicaciones a las que se suscribe deben copiarse una vez que comience la replicación. El valor predeterminado es true.

create_slot (boolean)

Especifica si el comando debe crear la ranura de replicación en el editor. El valor predeterminado es true.

enabled (boolean)

Especifica si la suscripción debe replicarse de forma activa o si solo debe configurarse pero aún no iniciarse. El valor predeterminado es true.

slot_name (string)

Nombre de la ranura de replicación que se utilizará. El comportamiento predeterminado es utilizar el nombre de la suscripción para el nombre de la ranura.

Cuando slot_name se establece en NONE, no habrá espacio de replicación asociado con la suscripción. Esto se puede utilizar si la ranura de replicación se creará posteriormente manualmente. Dichas suscripciones también deben tener tanto enabled y create_slot ajustado a false.

synchronous_commit (enum)

El valor de este parámetro anula la configuración synchronous_commit. El valor predeterminado es off.

Es seguro de usar off para la replicación lógica: si el suscriptor pierde transacciones debido a la falta de sincronización, los datos se enviarán nuevamente desde el editor.

Una configuración diferente puede ser apropiada cuando se realiza una replicación lógica sincrónica. Los trabajadores de replicación lógica informan las posiciones de las escrituras y los vaciados al publicador y, cuando se usa la replicación sincrónica, el publicador esperará el vaciado real. Esto significa que la configuración synchronous_commit para el suscriptor a off cuando la suscripción se utiliza para la replicación sincrónica puede aumentar la latencia para COMMIT en el editor. En este escenario, puede ser ventajoso establecer synchronous_commit para local o mas alto.

connect (boolean)

Especifica si el CREATE SUBSCRIPTION debe conectarse con el editor en absoluto. Estableciendo esto en false cambiará los valores predeterminados de enabled, create_slot y copy_data para false.

No esta permitido combinar connect ajustado a false y enabled, create_slot, o copy_data ajustado a true.

Dado que no se establece ninguna conexión cuando esta opción está configurada en false, las tablas no están suscritas y, por lo tanto, después de habilitar la suscripción, no se replicará nada. Se requiere para ejecutar ALTER SUBSCRIPTION ... REFRESH PUBLICATION para que las mesas se suscriban.

Notas

Consulte la Sección 30.7 para obtener detalles sobre cómo configurar el control de acceso entre la suscripción y la instancia de publicación.

Al crear una ranura de replicación (el comportamiento predeterminado), CREATE SUBSCRIPTION no se puede ejecutar dentro de un bloque de transacciones.

La creación de una suscripción que se conecta al mismo clúster de base de datos (por ejemplo, para replicar entre bases de datos en el mismo clúster o para replicar dentro de la misma base de datos) solo tendrá éxito si la ranura de replicación no se crea como parte del mismo comando. De lo contrario, el CREATE SUBSCRIPTION la llamada se colgará. Para que esto funcione, cree la ranura de replicación por separado (usando la función pg_create_logical_replication_slot con el nombre del complemento pgoutput) y cree la suscripción usando el parámetro create_slot = false. Esta es una restricción de implementación que podría levantarse en una versión futura.

Ejemplos de

Cree una suscripción a un servidor remoto que replica tablas en las publicaciones. mypublication y insert_only y comienza a replicarse inmediatamente en la confirmación:

CREATE SUBSCRIPTION mysub
         CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'
        PUBLICATION mypublication, insert_only;

Cree una suscripción a un servidor remoto que replica tablas en el insert_only publicación y no comienza a replicarse hasta que se habilita en un momento posterior.

CREATE SUBSCRIPTION mysub
         CONNECTION 'host=192.168.1.50 port=5432 user=foo dbname=foodb'
        PUBLICATION insert_only
               WITH (enabled = false);

Compatibilidad

CREATE SUBSCRIPTION es una extensión de PostgreSQL.

Ver también

MODIFICAR LA SUSCRIPCIÓN, BAJAR LA SUSCRIPCIÓN, CREAR PUBLICACIÓN, ALTERAR LA PUBLICACIÓN

Anterior Hasta próximo
CREAR ESTADÍSTICAS Hogar CREAR MESA