Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de una SQL base de datos Postgre como fuente AWS DMS
Puede migrar datos de una o varias bases de datos de SQL Postgre utilizando. AWS DMS Con una SQL base de datos de Postgre como fuente, puede migrar los datos a otra base de datos de Postgre o a una de las otras SQL bases de datos compatibles.
Para obtener información sobre las versiones de Postgre SQL que son AWS DMS compatibles como fuente, consulte. Fuentes de AWS DMS
AWS DMS admite Postgre SQL para estos tipos de bases de datos:
-
Bases de datos en las instalaciones
-
Bases de datos en una EC2 instancia de Amazon
-
Bases de datos en una instancia de Amazon RDS DB
-
Bases de datos en una instancia de base de datos basada en Amazon Aurora: edición compatible con Postgre SQL
-
Bases de datos en una instancia de base de datos basada en la edición Serverless compatible con Postgre SQL de Amazon Aurora
nota
DMSadmite Amazon Aurora Postgre SQL —Serverless V1 como fuente únicamente para carga completa. Sin embargo, puede usar Amazon Aurora Postgre SQL —Serverless V2 como fuente de carga completa, carga completa + CDC y solo tareas. CDC
Versión fuente de Postgre SQL |
AWS DMS versión a utilizar |
---|---|
9.x, 10.x, 11.x, 12.x |
Utilice cualquier AWS DMS versión disponible. |
13.x |
Utilice AWS DMS la versión 3.4.3 y superior. |
14.x |
Utilice AWS DMS la versión 3.4.7 y superior. |
15.x |
Utilice AWS DMS la versión 3.5.1 y superior. |
16.x |
Utilice AWS DMS la versión 3.5.3 y superior. |
Puede usar Secure Socket Layers (SSL) para cifrar las conexiones entre el SQL punto final de Postgre y la instancia de replicación. Para obtener más información sobre el uso SSL con un punto final de PostgreSQL, consulte. Uso de SSL con AWS Database Migration Service
Como requisito de seguridad adicional cuando se utiliza Postgre SQL como fuente, la cuenta de usuario especificada debe ser un usuario registrado en la base de datos de Postgre. SQL
Para configurar una SQL base de datos de Postgre como punto final de AWS DMS origen, haga lo siguiente:
-
Cree un SQL usuario de Postgre con los permisos adecuados para proporcionar AWS DMS acceso a su base de datos fuente de Postgre. SQL
nota
-
Si su base de datos SQL fuente de Postgre es autogestionada, consulte para obtener más información. Trabajar con bases de datos Postgre SQL autogestionadas como fuente en AWS DMS
-
Si Amazon administra su base de datos SQL fuente de PostgreRDS, consulte Trabajar con SQL bases AWS de datos Postgreg administradas como fuente DMS para obtener más información.
-
-
Cree un punto final de SQL origen de Postgre que se ajuste a la configuración de base de datos de Postgre que haya elegido. SQL
-
Cree una tarea o un conjunto de tareas para migrar las tablas.
Para crear una full-load-only tarea, no es necesaria ninguna otra configuración de punto final.
Antes de crear una tarea para la captura de datos de cambios (una CDC tarea CDC única o de carga completa), consulte Permitir CDC el uso de una base de datos Postgre autogestionada SQL como fuente AWS DMS o. Habilitar CDC con una instancia de base de AWS datos de SQL Postgre administrada con AWS DMS
Temas
- Trabajar con bases de datos Postgre SQL autogestionadas como fuente en AWS DMS
- Trabajar con SQL bases AWS de datos Postgreg administradas como fuente DMS
- Habilitar la captura de datos de cambios (CDC) mediante la replicación lógica
- Uso de puntos de CDC inicio nativos para configurar una CDC carga de una fuente de Postgre SQL
- Migración de Postgre a SQL Postgre mediante SQL AWS DMS
- Migración de Babelfish a Amazon Aurora Postgre mediante SQL AWS DMS
- Eliminar AWS DMS artefactos de una base de datos fuente de Postgre SQL
- Ajustes de configuración adicionales cuando se utiliza una base de datos de Postgre SQL como fuente DMS
- Uso de la configuración de MapBooleanAsBoolean punto final de Postgre SQL
- Configuración del punto final y atributos de conexión adicionales (ECAs) cuando utilice Postgre SQL como fuente DMS
- Limitaciones del uso de una base de datos Postgre SQL como fuente DMS
- Tipos de datos de origen para Postgre SQL
Trabajar con bases de datos Postgre SQL autogestionadas como fuente en AWS DMS
Con una base de datos Postgre autogestionada como fuente, puede migrar los datos a otra SQL base de datos de Postgre o a una de las otras SQL bases de datos de destino compatibles con ellas. AWS DMS La fuente de la base de datos puede ser una base de datos local o un motor autogestionado que se ejecute en una instancia de AmazonEC2. Puede usar una instancia de base de datos tanto para tareas de carga completa como para tareas de captura de datos () CDC de cambios.
Requisitos previos para utilizar una base de datos Postgre autogestionada SQL como fuente AWS DMS
Antes de migrar datos de una base de datos fuente de SQL Postgre autogestionada, haga lo siguiente:
-
Asegúrese de utilizar una SQL base de datos de Postgre de la versión 9.4.x o superior.
-
Para tareas de carga completa o CDC solo CDC tareas, conceda permisos de superusuario para la cuenta de usuario especificada para la base de datos de origen de Postgre. SQL La cuenta de usuario necesita permisos de superusuario para acceder a funciones específicas de replicación en el origen. Para las tareas que solo se cargan por completo, la cuenta de usuario necesita SELECT permisos en las tablas para poder migrarlas.
-
Agregue la dirección IP del servidor de AWS DMS replicación al archivo de
pg_hba.conf
configuración y habilite la replicación y las conexiones de socket. Ejemplo:# Replication Instance host all all 12.3.4.56/00 md5 # Allow replication connections from localhost, by a user with the # replication privilege. host replication dms 12.3.4.56/00 md5
El archivo de
pg_hba.conf
configuración SQL de Postgre controla la autenticación de los clientes. (HBAsignifica autenticación basada en host). El archivo se almacena tradicionalmente en el directorio de datos del clúster de bases de datos. -
Si va a configurar una base de datos como fuente de replicación lógica mediante AWS DMS Permitir CDC el uso de una base de datos Postgre autogestionada SQL como fuente AWS DMS
nota
Algunas AWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el DMS motor las vuelva a utilizar. Si utiliza el parámetro idle_in_transaction_session_timeout
en las SQL versiones 9.6 y posteriores de Postgre, puede provocar que se agote el tiempo de espera de las transacciones inactivas y se produzcan errores. No finalice las transacciones inactivas cuando utilice AWS DMS.
Permitir CDC el uso de una base de datos Postgre autogestionada SQL como fuente AWS DMS
AWS DMS admite la captura de datos de cambios (CDC) mediante la replicación lógica. Para habilitar la replicación lógica de una base de datos SQL fuente de Postgre autogestionada, defina los siguientes parámetros y valores en el postgresql.conf
archivo de configuración:
-
Configurar
wal_level = logical
. -
Defina
max_replication_slots
en un valor mayor de 1.Establezca el valor
max_replication_slots
en función del número de tareas que desea ejecutar. Por ejemplo, para ejecutar cinco tareas debe establecer un mínimo de cinco ranuras. Las ranuras se abrirán automáticamente en cuanto se inicie una tarea y permanecerán abiertas incluso cuando la tarea ya no se esté ejecutando. Asegúrese de eliminar manualmente las ranuras abiertas. Tenga en cuenta que elimina DMS automáticamente los espacios de replicación cuando se elimina la tarea, si se DMS creó el espacio. -
Defina
max_wal_senders
en un valor mayor de 1.El parámetro
max_wal_senders
establece el número de tareas simultáneas que pueden ejecutarse. -
El parámetro
wal_sender_timeout
termina la replicación de conexiones que están inactivas durante más tiempo de los milisegundos especificados. El valor predeterminado para una SQL base de datos Postgre local es de 60 000 milisegundos (60 segundos). Si se establece el valor en 0 (cero), se deshabilita el mecanismo de tiempo de espera y es una configuración válida para él. DMSSi se establece
wal_sender_timeout
en un valor distinto de cero, una DMS tarea CDC requiere un mínimo de 10000 milisegundos (10 segundos) y se produce un error si el valor es inferior a 10000. Mantenga el valor en menos de 5 minutos para evitar demoras durante la conmutación por error de una instancia de replicación en zonas de disponibilidad múltiples (Multi-AZ). DMS
Algunos parámetros son estáticos y solo se pueden configurar al iniciar el servidor. Los cambios en sus entradas en el archivo de configuración (para una base de datos autogestionada) o en el grupo de parámetros de base de datos (RDSpara una base de SQL datos de Postgre) se ignoran hasta que se reinicie el servidor. Para obtener más información, consulte la documentación de Postgre. SQL
Para obtener más información sobre la activaciónCDC, consulte. Habilitar la captura de datos de cambios (CDC) mediante la replicación lógica
Trabajar con SQL bases AWS de datos Postgreg administradas como fuente DMS
Puede utilizar una SQL instancia de base de datos AWS de Postgre gestionada como fuente para. AWS DMS Puede realizar tareas de carga completa y cambiar las tareas de captura de datos (CDC) utilizando una AWS fuente de Postgre gestionada por usted. SQL
Requisitos previos para utilizar como fuente una base de datos Postgre AWS gestionada SQL DMS
Antes de migrar datos de una base de datos fuente de SQL Postgre AWS gestionada por usted, haga lo siguiente:
-
Le recomendamos que utilice una cuenta de AWS usuario con los permisos mínimos necesarios para la SQL instancia de base de datos de Postgre como cuenta de usuario para el punto final de origen de Postgre. SQL AWS DMS No se recomienda el uso de la cuenta principal. La cuenta debe tener el rol
rds_superuser
y el rolrds_replication
. El rol derds_replication
concede permisos para administrar ranuras lógicas y para transmitir datos mediante ranuras lógicas.Asegúrese de crear varios objetos a partir de la cuenta de usuario principal para la cuenta que utilice. Para obtener información sobre la creación de estos, consulte Migración de una SQL base de datos de Amazon RDS for Postgre sin usar la cuenta de usuario maestra.
-
Si la base de datos de origen está en una nube privada virtual (VPC), elija el grupo de VPC seguridad que proporciona acceso a la instancia de base de datos en la que reside la base de datos. Esto es necesario para que la instancia de DMS replicación se conecte correctamente a la instancia de base de datos de origen. Cuando la base de datos y la instancia de DMS replicación estén en la misma VPC posición, añada el grupo de seguridad correspondiente a sus propias reglas de entrada.
nota
Algunas AWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el DMS motor las vuelva a utilizar. Si utiliza el parámetro idle_in_transaction_session_timeout
en las SQL versiones 9.6 y posteriores de Postgre, puede provocar que se agote el tiempo de espera de las transacciones inactivas y se produzcan errores. No finalice las transacciones inactivas cuando utilice AWS DMS.
Habilitar CDC con una instancia de base de AWS datos de SQL Postgre administrada con AWS DMS
AWS DMS es compatible con CDC las SQL bases de datos de Amazon RDS Postgre cuando la instancia de base de datos está configurada para utilizar la replicación lógica. En la siguiente tabla se resume la compatibilidad de la replicación lógica de cada versión de Postgre AWS administrada. SQL
No puede usar réplicas de SQL lectura de RDS Postgre para (replicación continua). CDC
Versión de Postgre SQL |
AWS DMS soporte de carga completa |
AWS DMS CDCsoporte |
---|---|---|
Aurora Postgre SQL versión 2.1 con compatibilidad con Postgre SQL 10.5 (o inferior) |
Sí |
No |
Aurora Postgre SQL versión 2.2 con compatibilidad con Postgre SQL 10.6 (o superior) |
Sí |
Sí |
RDSpara compatibilidad con Postgre SQL con Postgre 10.21 (o superior) SQL |
Sí |
Sí |
Para habilitar la replicación lógica de una instancia de base de datos de Postgre RDS SQL
-
Utilice la cuenta de usuario AWS maestra de la SQL instancia de base de datos de Postgre como cuenta de usuario para el punto final de origen de Postgre. SQL La cuenta de usuario maestra tiene las funciones necesarias que le permiten configurarse. CDC
Si utiliza una cuenta que no sea la cuenta de usuario principal, asegúrese de crear varios objetos desde la cuenta principal para la cuenta que utilice. Para obtener más información, consulte Migración de una SQL base de datos de Amazon RDS for Postgre sin usar la cuenta de usuario maestra.
-
Defina el
rds.logical_replication
parámetro del grupo de CLUSTER parámetros de base de datos en 1. Para que este parámetro estático surta efecto, es necesario reiniciar la instancia de base de datos. Como parte de la aplicación de este parámetro, AWS DMS establece los parámetroswal_level
,max_wal_senders
,max_replication_slots
ymax_connections
. Estos cambios en los parámetros pueden aumentar la generación de registros de escritura anticipada (WAL), por lo que solords.logical_replication
se configuran cuando se utilizan ranuras de replicación lógica. -
El parámetro
wal_sender_timeout
termina la replicación de conexiones que están inactivas durante más tiempo de los milisegundos especificados. El valor predeterminado para una SQL base AWS de datos Postgre administrada es de 30 000 milisegundos (30 segundos). Si se establece el valor en 0 (cero), se desactiva el mecanismo de tiempo de espera y es una configuración válida para él. DMSSi se establece
wal_sender_timeout
en un valor distinto de cero, una DMS tarea CDC requiere un mínimo de 10000 milisegundos (10 segundos) y se produce un error si el valor está entre 0 y 10000. Mantenga el valor en menos de 5 minutos para evitar demoras durante la conmutación por error de una instancia de replicación en zonas de disponibilidad múltiples (Multi-AZ). DMS -
Asegúrese de que el valor del parámetro
max_worker_processes
del grupo de parámetros del clúster de base de datos sea igual o superior a los valores totales combinados demax_logical_replication_workers
,autovacuum_max_workers
ymax_parallel_workers
. Un número elevado de procesos de trabajo en segundo plano podría afectar a las cargas de trabajo de las aplicaciones en instancias pequeñas. Por lo tanto, monitoree el rendimiento de la base de datos si establecemax_worker_processes
encima del valor predeterminado. -
Cuando utilice Aurora Postgre SQL como fuente conCDC,
synchronous_commit
establézcalo en.ON
Migración de una SQL base de datos de Amazon RDS for Postgre sin usar la cuenta de usuario maestra
En algunos casos, es posible que no utilice la cuenta de usuario maestra para la SQL instancia de base de datos de Amazon RDS Postgre que está utilizando como fuente. En estos casos, debe crear varios objetos para capturar eventos del lenguaje de definición de datos (DDL). Puede crear estos objetos en una cuenta que no sea la cuenta principal y, a continuación, crear un activador en la cuenta de usuario principal.
nota
Si establece la configuración de punto de conexión de CaptureDdls
en false
en el punto de conexión de origen, no tendrá que crear la tabla y el desencadenador siguientes en la base de datos de origen.
Utilice el siguiente procedimiento para crear estos objetos.
Para crear objetos
-
Elija el esquema donde deben crearse los objetos. El esquema predeterminado es
public
. Asegúrese de que el esquema exista y que la cuenta
pueda obtener acceso a él.OtherThanMaster
-
Inicie sesión en la SQL instancia de base de datos de Postgre con una cuenta de usuario distinta de la cuenta maestra, aquí la
cuenta.OtherThanMaster
-
Cree la tabla
awsdms_ddl_audit
mediante la ejecución del siguiente comando, sustituyendo
en el código siguiente por el nombre del esquema que se va a utilizar.objects_schema
CREATE TABLE
objects_schema
.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event ); -
Cree la función
awsdms_intercept_ddl
. Para ello, ejecute el siguiente comando y sustituya
en el código siguiente por el nombre del esquema que se va a utilizar.objects_schema
CREATE OR REPLACE FUNCTION
objects_schema
.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then SELECT current_query() into _qry; insert intoobjects_schema
.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete fromobjects_schema
.awsdms_ddl_audit; end if; END; $$; -
Cierre sesión en la cuenta
e inicie sesión con una cuenta que tenga el rolOtherThanMaster
rds_superuser
asignado. -
Cree el activador de eventos
awsdms_intercept_ddl
; para ello, ejecute el siguiente comando.CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE
objects_schema
.awsdms_intercept_ddl(); -
Asegúrese de que todos los usuarios y roles que acceden a estos eventos tengan los permisos necesariosDDL. Por ejemplo:
grant all on public.awsdms_ddl_audit to public; grant all on public.awsdms_ddl_audit_c_key_seq to public;
Cuando haya completado el procedimiento anterior, puede crear el punto de enlace de origen de AWS DMS
utilizando la cuenta
.OtherThanMaster
nota
Estos eventos se desencadenan mediante instrucciones CREATE TABLE
, ALTER
TABLE
y DROP TABLE
.
Habilitar la captura de datos de cambios (CDC) mediante la replicación lógica
Puede utilizar la función de replicación lógica nativa SQL de Postgre para permitir la captura de datos de cambios (CDC) durante la migración de la base de datos para las fuentes de SQL Postgre. Puede utilizar esta función con una instancia de base de datos de Postgre autogestionada SQL y también con una instancia de base de datos de Amazon RDS for SQL SQL Postgre. Este enfoque reduce el tiempo de inactividad y ayuda a garantizar que la base de datos de destino esté sincronizada con la base de datos de Postgre de origen. SQL
AWS DMS admite SQL tablas CDC de Postgre con claves principales. Si una tabla no tiene una clave principal, los registros de escritura anticipada (WAL) no incluyen una imagen anterior de la fila de la base de datos. En este caso, no DMS se puede actualizar la tabla. En este caso, puede utilizar opciones de configuración adicionales y utilizar la identidad de réplica de la tabla como solución alternativa. Sin embargo, este enfoque puede generar registros adicionales. Le recomendamos que utilice la identidad de réplica de la tabla como solución alternativa solo después de realizar pruebas exhaustivas. Para obtener más información, consulte Ajustes de configuración adicionales cuando se utiliza una base de datos de Postgre SQL como fuente DMS.
nota
REPLICAIDENTITYFULLes compatible con un complemento de decodificación lógica, pero no con un complemento pglogical. Para obtener más información, consulte la documentación de pglogical
Para tareas de carga completa CDC y CDC exclusivas, AWS DMS utiliza ranuras de replicación lógica para conservar WAL los registros para la replicación hasta que se decodifiquen. Cuando se reinicia (no se reanuda) durante una carga completa y una CDC tarea o CDC tarea, se vuelve a crear la ranura de replicación.
nota
Para la decodificación lógica, DMS utiliza el plugin test_decoding o pglogical. Si el complemento pglogical está disponible en una SQL base de datos Postgre fuente, DMS crea un espacio de replicación con pglogical; de lo contrario, se utiliza un complemento test_decoding. Para obtener más información sobre el complemento test_decoding, consulte la documentación de Postgre. SQL
Si el parámetro de la base de datos max_slot_wal_keep_size
está establecido en un valor que no es el predeterminado y la ranura restart_lsn
de replicación es inferior a la actual LSN en un tamaño superior a este, la DMS tarea no se realizará correctamente debido a la eliminación de los archivos necesarios. WAL
Configuración del complemento pglogical
Implementado como una SQL extensión de Postgre, el complemento pglogical es un sistema y modelo de replicación lógica para la replicación selectiva de datos. La siguiente tabla identifica las versiones fuente de la SQL base de datos Postgre que admiten el complemento pglogical.
SQLFuente de Postgre |
Admite pglogical |
---|---|
SQLPostgre 9.4 o superior autogestionado |
Sí |
Amazon RDS Postgrex SQL 9.5 o inferior |
No |
Amazon RDS Postgre SQL 9.6 o superior |
Sí |
Aurora Postgre SQL 1.x a 2.5.x |
No |
Aurora Postgre SQL 2.6.x o superior |
Sí |
Aurora Postgre SQL 3.3.x o superior |
Sí |
Antes de configurar pglogical para su uso con AWS DMS, habilite primero la replicación lógica para la captura de datos de cambios (CDC) en la base de datos de origen de Postgre. SQL
-
Para obtener información sobre cómo habilitar la replicación lógica en bases de datos fuente de CDC Postgre autogestionadas, consulte SQL Permitir CDC el uso de una base de datos Postgre autogestionada SQL como fuente AWS DMS
-
Para obtener información sobre cómo habilitar la replicación lógica para CDC bases de datos fuente de SQL Postgre no AWS administradas, consulte. Habilitar CDC con una instancia de base de AWS datos de SQL Postgre administrada con AWS DMS
Una vez habilitada la replicación lógica en la base de datos SQL fuente de Postgre, siga los siguientes pasos para configurar pglogical para su uso con. DMS
Para usar el complemento pglogical para la replicación lógica en una base de datos fuente de Postgre con SQL AWS DMS
-
Cree una extensión pglogic en su base de datos Postgre fuente: SQL
-
Establezca el parámetro correcto:
-
Para las bases de datos Postgre SQL autogestionadas, defina el parámetro de la base de datos.
shared_preload_libraries= 'pglogical'
-
Para las bases de datos Postgre en SQL Amazon RDS y Amazon Aurora Postgre SQL -Compatible Edition,
shared_preload_libraries
defina el parámetropglogical
en el mismo grupo de parámetros. RDS
-
-
Reinicie la base de datos fuente de Postgre. SQL
-
En la SQL base de datos de Postgre, ejecute el comando
create extension pglogical;
-
-
Ejecute el siguiente comando para comprobar que pglogical se ha instalado correctamente:
select * FROM pg_catalog.pg_extension
Ahora puede crear una AWS DMS tarea que realice la captura de datos de cambios para el punto final de la base de datos fuente de Postgre. SQL
nota
Si no habilitas pglogical en tu base de datos SQL fuente de Postgre, AWS DMS usa el complemento de forma predeterminada. test_decoding
Cuando pglogical está habilitado para la decodificación lógica, usa pglogical de forma predeterminada. AWS DMS Pero puede configurar el atributo de conexión adicional PluginName
para usar el complemento test_decoding
en su lugar.
Uso de puntos de CDC inicio nativos para configurar una CDC carga de una fuente de Postgre SQL
Para habilitar los puntos de CDC inicio nativos con Postgre SQL como fuente, defina el atributo de conexión slotName
adicional con el nombre de una ranura de replicación lógica existente al crear el punto final. Esta ranura de replicación lógica guarda los cambios continuos desde el momento en que se creó el punto de enlace, por lo que permite replicar desde un punto anterior.
Postgre SQL escribe los cambios de la base de datos en los WAL archivos que se descartan solo después de leer AWS DMS correctamente los cambios de la ranura de replicación lógica. El uso de ranuras de replicación lógica puede evitar que los cambios registrados se eliminen antes de que el motor de replicación los consuma.
Sin embargo, en función de la tasa de cambio y consumo, los cambios que contiene una ranura de replicación lógica pueden provocar un uso elevado del disco. Se recomienda configurar alarmas de uso de espacio en la SQL instancia de Postgre de origen cuando utilice ranuras de replicación lógica. Para obtener más información acerca de cómo establecer el atributo slotName
de conexión adicional, consulte Configuración del punto final y atributos de conexión adicionales (ECAs) cuando utilice Postgre SQL como fuente DMS.
En el siguiente procedimiento, se explica este enfoque paso a paso con más detalle.
Utilizar un punto de CDC inicio nativo para configurar una CDC carga de un punto final de origen de Postgre SQL
-
Identifique una ranura de replicación lógica que se haya empleado en una tarea de replicación anterior (una tarea principal) para utilizarla como punto de inicio. A continuación, consulte la vista
pg_replication_slots
de la base de datos de origen para asegurarse de que esta ranura no tiene ninguna conexión activa. Si tiene, resuélvalas y ciérrelas antes de continuar.En los siguientes pasos, vamos a suponer que la ranura de replicación lógica es
abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef
. -
Cree un nuevo punto de enlace de origen que incluya la siguiente configuración adicional de atributos de conexión:
slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
-
Cree una nueva tarea CDC exclusiva mediante la consola, o. AWS CLI AWS DMS API Por ejemplo, si usa el, CLI puede ejecutar el siguiente
create-replication-task
comando.aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" --replication-task-settings "file://task-pg.json"
En el comando anterior, se establecen las siguientes opciones:
-
La opción
source-endpoint-arn
se establece en el nuevo valor que creó en el paso 2. -
La opción
replication-instance-arn
se establece en el mismo valor que en la tarea principal del paso 1. -
Las opciones
table-mappings
yreplication-task-settings
se establecen en los mismos valores que en la tarea principal del paso 1. -
Se establece la opción
cdc-start-position
para iniciar un valor de posición. Para encontrar esta posición inicial, consulte la vistapg_replication_slots
de la base de datos de origen o vea los detalles de la consola de la tarea principal en el paso 1. Para obtener más información, consulte Determinar un punto de inicio de CDC nativo.
Para habilitar el modo de CDC inicio personalizado al crear una nueva tarea CDC exclusiva mediante la AWS DMS consola, haga lo siguiente:
En la sección Configuración de tareas, en el modo de CDC inicio de las transacciones de origen, selecciona Habilitar el modo de CDC inicio personalizado.
En Punto de CDC inicio personalizado para las transacciones de origen, elija Especificar un número de secuencia de registro. Especifique el número de cambio del sistema o elija Especificar un punto de control de recuperación y proporcione un punto de control de recuperación.
Cuando se ejecuta esta CDC tarea, se AWS DMS genera un error si la ranura de replicación lógica especificada no existe. También se genera un error si la tarea no se crea con una configuración válida para
cdc-start-position
. -
Si utiliza puntos de CDC inicio nativos con el complemento pglogical y desea utilizar una nueva ranura de replicación, complete los pasos de configuración que se indican a continuación antes de crear una CDC tarea.
Para utilizar una nueva ranura de replicación que no se haya creado anteriormente como parte de otra tarea DMS
-
Cree una ranura de replicación, como se muestra a continuación:
SELECT * FROM pg_create_logical_replication_slot('
replication_slot_name
', 'pglogical'); -
Una vez que la base de datos crea la ranura de replicación, obtenga y anote los valores restart_lsn y confirmed_flush_lsn de la ranura:
select * from pg_replication_slots where slot_name like 'replication_slot_name';
Tenga en cuenta que la posición de CDC inicio nativa de una CDC tarea creada después del intervalo de replicación no puede ser anterior al valor confirmed_flush_lsn.
Para obtener información sobre los valores restart_lsn y confirmed_flush_lsn, consulte pg_replication_slots
-
Cree un nodo pglogical.
SELECT pglogical.create_node(node_name := '
node_name
', dsn := 'your_dsn_name
'); -
Cree dos conjuntos de replicación mediante la función
pglogical.create_replication_set
. El primer conjunto de replicación realiza un seguimiento de las actualizaciones y eliminaciones de las tablas que tienen claves principales. El segundo conjunto de replicación rastrea solo las inserciones y tiene el mismo nombre que el primer conjunto de replicación, con el prefijo “i” agregado.SELECT pglogical.create_replication_set('
replication_slot_name
', false, true, true, false); SELECT pglogical.create_replication_set('ireplication_slot_name
', true, false, false, true); -
Agregue una tabla al conjunto de replicación.
SELECT pglogical.replication_set_add_table('
replication_slot_name
', 'schemaname.tablename', true); SELECT pglogical.replication_set_add_table('ireplication_slot_name
', 'schemaname.tablename', true); -
Establezca el siguiente atributo de conexión adicional (ECA) al crear el punto final de origen.
PluginName=PGLOGICAL;slotName=
slot_name
;
Ahora puede crear una CDC única tarea con un punto de inicio SQL nativo de Postgre utilizando la nueva ranura de replicación. Para obtener más información sobre el complemento de pglogical, consulte la documentación de pglogical 3.7
Migración de Postgre a SQL Postgre mediante SQL AWS DMS
Cuando se migra de un motor de base de datos que no sea Postgre SQL a una SQL base de datos de Postgre, casi siempre es la mejor herramienta de migración que AWS DMS se puede utilizar. Sin embargo, al migrar de una base de datos de Postgre a una SQL base de datos de Postgre, las herramientas de Postgre SQL pueden ser más eficaces. SQL
Uso de herramientas nativas de Postgre para migrar datos SQL
Le recomendamos que utilice las herramientas de migración de SQL bases de datos de Postgre, por ejemplo, en las siguientes pg_dump
condiciones:
-
Tiene una migración homogénea, en la que migra de una base de datos Postgre de origen a una SQL base de datos Postgre de destino. SQL
-
Se va a migrar una base de datos completa.
-
Las herramientas nativas le permiten migrar sus datos con un tiempo de inactividad mínimo.
La utilidad pg_dump usa el COPY comando para crear un esquema y un volcado de datos de una base de datos de Postgre. SQL El script de volcado generado por pg_dump carga los datos en una base de datos con el mismo nombre y vuelve a crear las tablas, los índices y las claves externas. Para restaurar los datos en una base de datos con un nombre diferente, use el comando pg_restore
y el parámetro -d
.
Si está migrando datos de una base de datos SQL fuente de Postgre que se ejecuta en EC2 un SQL destino de Amazon RDS for Postgre, puede utilizar el complemento pglogical.
Para obtener más información sobre la importación de una SQL base de datos de Postgre a Amazon RDS for Postgre o Amazon SQL Aurora SQL Postgre -Compatible Edition, consulte. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
Se utiliza para migrar datos de Postgre DMS a Postgre SQL SQL
AWS DMS puede migrar datos, por ejemplo, desde una SQL base de datos Postgre de origen que se encuentra en las instalaciones a una instancia de Amazon RDS for Postgre SQL o Aurora Postgre de destino. SQL Los tipos de datos básicos o básicos de SQL Postgre suelen migrar correctamente.
nota
Al replicar tablas particionadas de una SQL fuente de Postgre a una de SQL destino de Postgre, no es necesario que menciones la tabla principal como parte de los criterios de selección de la tarea. DMS Mencionar la tabla principal provoca que los datos se dupliquen en las tablas secundarias del destino, lo que podría provocar una infracción de PK. Al seleccionar solo las tablas secundarias en los criterios de selección de la asignación de tablas, la tabla principal se rellena automáticamente.
Es posible que los tipos de datos que se admiten en la base de datos de origen pero que no se admiten en la de destino no se migren correctamente. AWS DMS transmite algunos tipos de datos como cadenas si se desconoce el tipo de datos. Algunos tipos de datos, como XML yJSON, pueden migrar correctamente como archivos pequeños, pero pueden fallar si se trata de documentos de gran tamaño.
Cuando realice la migración de un tipo de datos, tenga en cuenta lo siguiente:
-
En algunos casos, el tipo de datos Postgre SQL NUMERIC (p, s) no especifica precisión ni escala. Para DMS las versiones 3.4.2 y anteriores, DMS utiliza una precisión de 28 y una escala de 6 de forma predeterminada, NUMERIC (28,6). Por ejemplo, el valor 0,611111104488373 de la fuente se convierte en 0,611111 en el destino de Postgre. SQL
-
Una tabla con un tipo de datos debe tener una clave principal. ARRAY Una tabla en la que a un tipo de ARRAY datos le falta una clave principal se suspende durante la carga completa.
La siguiente tabla muestra los tipos de SQL datos de Postgre de origen y si se pueden migrar correctamente.
Tipo de datos | Se migra correctamente | Se migra parcialmente | No se migra | Comentarios |
---|---|---|---|---|
INTEGER | X | |||
SMALLINT | X | |||
BIGINT | X | |||
NUMERIC/DECIMAL(ps, s) | X | Donde 0<p<39 y 0<s | ||
NUMERIC/DECIMAL | X | Donde p>38 o p=s=0 | ||
REAL | X | |||
DOUBLE | X | |||
SMALLSERIAL | X | |||
SERIAL | X | |||
BIGSERIAL | X | |||
MONEY | X | |||
CHAR | X | Sin precisión especificada | ||
CHAR(n) | X | |||
VARCHAR | X | Sin precisión especificada | ||
VARCHAR(n) | X | |||
TEXT | X | |||
BYTEA | X | |||
TIMESTAMP | X | Los valores infinitos positivos y negativos se truncan a “9999-12-31 23:59:59” y “4713-01-01 00:00:00 a. C.”, respectivamente. | ||
TIMESTAMP WITH TIME ZONE | X | |||
DATE | X | |||
TIME | X | |||
TIME WITH TIME ZONE | X | |||
INTERVAL | X | |||
BOOLEAN | X | |||
ENUM | X | |||
CIDR | X | |||
INET | X | |||
MACADDR | X | |||
TSVECTOR | X | |||
TSQUERY | X | |||
XML | X | |||
POINT | X | Tipo de datos GIS posespaciales | ||
LINE | X | |||
LSEG | X | |||
BOX | X | |||
PATH | X | |||
POLYGON | X | Tipo de datos GIS posespaciales | ||
CIRCLE | X | |||
JSON | X | |||
ARRAY | X | Requiere clave principal | ||
COMPOSITE | X | |||
RANGE | X | |||
LINESTRING | X | Tipo de datos GIS posespaciales | ||
MULTIPOINT | X | Tipo de datos GIS posespaciales | ||
MULTILINESTRING | X | Tipo de datos GIS posespaciales | ||
MULTIPOLYGON | X | Tipo de datos GIS posespaciales | ||
GEOMETRYCOLLECTION | X | Tipo de datos GIS posespaciales |
Migración de tipos de datos GIS posespaciales
Los datos espaciales identifican la información de geometría de un objeto o ubicación en el espacio. Las bases de datos SQL relacionales de objetos de Postgre admiten tipos de datos posespaciales. GIS
Antes de migrar los objetos de datos SQL espaciales de Postgre, asegúrese de que el complemento Post GIS esté habilitado a nivel global. De este modo, se garantiza que se AWS DMS crean las columnas de datos espaciales de origen exactas para la instancia de base de datos de destino de PostgreSQL.
Para las migraciones SQL homogéneas de Postgre SQL a Postgre, AWS DMS admite la migración de los tipos y subtipos de objetos de datos GIS geométricos y geográficos (coordenadas geodésicas) de Post, como los siguientes:
-
POINT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
MULTILINESTRING
-
MULTIPOLYGON
-
GEOMETRYCOLLECTION
Migración de Babelfish a Amazon Aurora Postgre mediante SQL AWS DMS
Puede migrar las tablas de SQL origen de Postgre de Babelfish para Aurora a cualquier punto final de destino compatible utilizando. AWS DMS
Al crear el punto final de AWS DMS origen mediante la DMS consola o los CLI comandosAPI, establece el origen en Amazon Aurora Postgre SQL y el nombre de la base de datos en. babelfish_db
En la sección Configuración del punto final, asegúrese de que DatabaseModeesté establecido en Babelfish y en el nombre de la BabelfishDatabaseNamebase de datos Babelfish T- de origen. SQL En lugar de usar el puerto Babelfish1433
, usa el TCP puerto Aurora SQL TCP Postgre. 5432
Debe crear las tablas antes de migrar los datos para asegurarse de que DMS utilizan los tipos de datos y los metadatos de las tablas correctos. Si no crea las tablas en el destino antes de ejecutar la migración, es DMS posible que cree las tablas con permisos y tipos de datos incorrectos.
Agregar reglas de transformación a la tarea de migración
Al crear una tarea de migración para una fuente de Babelfish, es necesario incluir reglas de transformación que garanticen que se DMS utilizan las tablas de destino creadas previamente.
Si configuró el modo de migración de varias bases de datos al definir su SQL clúster de Babelfish para Postgre, añada una regla de transformación que cambie el nombre del esquema por el de esquema T. SQL Por ejemplo, si el nombre del esquema en T es y el nombre de tu SQL esquema de Babelfish para Postgre esdbo
, cambia el nombre del SQL esquema para usar una regla de transformación. mydb_dbo
dbo
Para encontrar el nombre del SQL esquema de Postgre, consulte la arquitectura de Babelfish en la Guía del usuario de Amazon Aurora.
Si usa el modo de base de datos única, no necesita usar una regla de transformación para cambiar el nombre de los esquemas de base de datos. Los nombres de los SQL esquemas de Postgre tienen un one-to-one mapeo con los nombres de los esquemas de la base de datos T. SQL
El siguiente ejemplo de regla de transformación muestra cómo cambiar el nombre del esquema de mydb_dbo
nuevo a: dbo
{ "rules": [ { "rule-type": "transformation", "rule-id": "566251737", "rule-name": "566251737", "rule-target": "schema", "object-locator": { "schema-name": "mydb_dbo" }, "rule-action": "rename", "value": "dbo", "old-value": null }, { "rule-type": "selection", "rule-id": "566111704", "rule-name": "566111704", "object-locator": { "schema-name": "mydb_dbo", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }
Limitaciones del uso de un punto final de código SQL fuente de Postgre con tablas de Babelfish
Cuando se utiliza un punto final de origen de Postgre SQL con tablas de Babelfish, se aplican las siguientes limitaciones:
DMSsolo admite la migración desde las versiones 16.2/15.6 y posteriores de Babelfish y desde la versión 3.5.3 y posteriores. DMS
DMSno replica los cambios en la definición de la tabla de Babelfish en el punto final de destino. Una solución para esta limitación consiste en aplicar primero los cambios en la definición de la tabla en el destino y, a continuación, cambiar la definición de la tabla en la fuente de Babelfish.
Al crear tablas de Babelfish con el tipo de BYTEA datos, las DMS convierte al tipo de
varbinary(max)
datos al migrar a Server como destino. SQLDMSno admite el LOB modo completo para los tipos de datos binarios. En su lugar, utilice LOB el modo limitado para los tipos de datos binarios.
DMSno admite la validación de datos para Babelfish como fuente.
Para configurar las tareas del modo de preparación de la tabla de Target, utilice únicamente los modos No hacer nada o Truncar. No utilice el modo Borrar tablas en el destino. Al utilizar Drop tables on Target, es DMS posible que se creen las tablas con tipos de datos incorrectos.
Cuando utilice la replicación continua (CDCo carga completa yCDC), establezca el atributo de conexión
PluginName
adicional (ECA) enTEST_DECODING
.-
DMSno admite la replicación (CDCo carga completaCDC) de una tabla particionada para Babelfish como fuente.
Eliminar AWS DMS artefactos de una base de datos fuente de Postgre SQL
Para capturar DDL eventos, AWS DMS crea varios artefactos en la SQL base de datos de Postgre cuando se inicia una tarea de migración. Cuando se complete la tarea, es posible que quiera eliminar estos artefactos.
Para eliminar los artefactos, emita las instrucciones siguientes (en el orden en el que aparecen), donde {AmazonRDSMigration}
es el esquema en el que se crearon los artefactos. La operación de ingresar un esquema se debe realizar con su sumo cuidado. No ingrese nunca un esquema operativo, especialmente si es público.
drop event trigger awsdms_intercept_ddl;
El disparador de eventos no pertenece a un esquema específico.
drop function {AmazonRDSMigration}.awsdms_intercept_ddl() drop table {AmazonRDSMigration}.awsdms_ddl_audit drop schema {AmazonRDSMigration}
Ajustes de configuración adicionales cuando se utiliza una base de datos de Postgre SQL como fuente DMS
Puede añadir ajustes de configuración adicionales al migrar datos de una base de datos de Postgre SQL de dos maneras:
-
Puede añadir valores al atributo de conexión adicional para capturar los DDL eventos y especificar el esquema en el que se crean los artefactos de la DDL base de datos operativa. Para obtener más información, consulte Configuración del punto final y atributos de conexión adicionales (ECAs) cuando utilice Postgre SQL como fuente DMS.
-
Puede anular parámetros de cadenas de conexión. Elija esta opción para hacer cualquiera de las siguientes acciones:
-
Especifique AWS DMS los parámetros internos. Estos parámetros se necesitan en contadas ocasiones, no están a la vista en la interfaz de usuario.
-
Especifique los valores de transferencia (passthru) para el cliente de base de datos específico. AWS DMS incluye los parámetros de transferencia en la cadena de conexión transferida al cliente de base de datos.
-
-
Al utilizar el parámetro de nivel de tabla
REPLICA IDENTITY
en las SQL versiones 9.4 y posteriores de Postgre, puede controlar la información que se escribe en los registros de escritura anticipada (). WALs En concreto, lo hace para identificar las filas WALs que se actualizan o eliminan.REPLICA IDENTITY FULL
registra los valores antiguos de todas las columnas de la fila. ÚseloREPLICA IDENTITY FULL
con cuidado para cada tabla, ya queFULL
genera un número adicional WALs que puede no ser necesario. Para obtener más información, consulte ALTERTABLE- REPLICA IDENTITY
Uso de la configuración de MapBooleanAsBoolean punto final de Postgre SQL
Puede usar la configuración del SQL punto final de Postgre para mapear un booleano como booleano desde su SQL fuente de Postgre a un destino de Amazon Redshift. De forma predeterminada, un tipo se migra como varchar (5BOOLEAN). Puede especificar MapBooleanAsBoolean
que Postgre migre SQL el tipo booleano como booleano, como se muestra en el siguiente ejemplo.
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
Tenga en cuenta que debe establecer esta configuración en los puntos de conexión de origen y destino para que surta efecto.
Como My SQL no tiene ningún BOOLEAN tipo, utilice una regla de transformación en lugar de esta configuración al migrar datos a My. BOOLEAN SQL
Configuración del punto final y atributos de conexión adicionales (ECAs) cuando utilice Postgre SQL como fuente DMS
Puede usar la configuración del punto final y los atributos de conexión adicionales (ECAs) para configurar su base de datos SQL fuente de Postgre. La configuración del punto final se especifica al crear el punto final de origen mediante la AWS DMS consola o mediante el create-endpoint
comando del AWS CLI, con la --postgre-sql-settings '{"
JSON sintaxis.EndpointSetting"
:
"value"
, ...
}'
En la siguiente tabla se muestran los ajustes de punto final ECAs que puede utilizar con Postgre SQL como fuente.
Nombre de atributo | Descripción |
---|---|
|
Para capturar DDL eventos, AWS DMS crea varios artefactos en la SQL base de datos de Postgre cuando se inicia la tarea. Más adelante podrá quitar estos artefactos según se describe en Eliminar AWS DMS artefactos de una base de datos fuente de Postgre SQL. Si este valor se ha establecido en falso, no es necesario crear tablas ni desencadenadores en la base de datos de origen. Se capturan los DDL eventos transmitidos. Valor predeterminado: Valores válidos: true/false Ejemplo: |
|
Se utiliza para controlar cómo se replican las transacciones monolíticas con números de secuencia logarítmica (LSNs) duplicados. Cuando este parámetro es Valor predeterminado: Valores válidos: falso/verdadero Ejemplo: |
|
Establece el esquema en el que se crean los artefactos de la DDL base de datos operativa. Valor predeterminado: público Valores válidos: string Ejemplo: |
|
Establece el tiempo de espera de la sentencia del cliente para la SQL instancia de Postgre, en segundos. El valor de predeterminado es de 60 segundos. Ejemplo: |
|
Cuando se establece en Si la tarea está configurada en LOB modo limitado y esta opción está establecida en True, la tarea fallará en lugar de truncar los LOB datos. Valor predeterminado: false Valores válidos: booleano Ejemplo: |
|
Este atributo de conexión adicional (ECA) establece el número de filas que el cursor buscará durante la operación a plena carga. En función de los recursos disponibles en la instancia de replicación, puede ajustar el valor al alza o a la baja. Valor predeterminado: Valores válidos: Number ECAEjemplo: |
|
La función de WAL latido imita una transacción ficticia, de modo que las ranuras de replicación lógica inactivas no retienen WAL los registros antiguos, lo que provoca situaciones de almacenamiento completo en la fuente. Este latido mantiene en movimiento a Valor predeterminado: Valores válidos: true/false Ejemplo: |
|
Establece la frecuencia de los WAL latidos del corazón (en minutos). Valor predeterminado: Valores válidos: Number Ejemplo: |
|
Establece el esquema en el que se crearon los artefactos de latido. Valor predeterminado: Valores válidos: string Ejemplo: |
|
De forma predeterminada, se AWS DMS asigna JSONB aNCLOB. Puede especificar Ejemplo: |
|
De forma predeterminada, se AWS DMS asigna VARCHAR a. WSTRING Puede especificar
Ejemplo: |
|
Este parámetro trata las columnas con tipos de NUMERIC datos ilimitados como si se STRING migraran correctamente sin perder la precisión del valor numérico. Utilice este parámetro solo para la replicación desde el SQL origen de Postgre al SQL destino de Postgre o para bases de datos compatibles con Postgre. SQL Valor predeterminado: Valores válidos: Ejemplo: Es posible que el uso de este parámetro provoque una cierta degradación del rendimiento de la replicación debido a la transformación de numérico a cadena y de nuevo a numérico. Este parámetro se admite para su uso en la versión 3.4.4 y versiones posteriores DMS notaÚselo solo El uso de SQL puntos finales No lo use |
|
Especifica el complemento que se va a utilizar para crear una ranura de replicación. Valores válidos: Ejemplo: |
|
Establece el nombre de una ranura de replicación lógica creada anteriormente para una CDC carga de la instancia fuente de SQL Postgre. Cuando se usa con el parámetro de AWS DMS API Para obtener más información sobre la configuración del parámetro de solicitud Valores válidos: string Ejemplo: |
|
Este atributo de conexión adicional (ECA) define el tamaño máximo de una columna de datos definida como tipo VarChar sin un especificador de longitud máxima. El valor predeterminado es 8000 bytes. El valor máximo es 10485760 bytes. |
Limitaciones del uso de una base de datos Postgre SQL como fuente DMS
Se aplican las siguientes limitaciones al utilizar Postgre SQL como fuente para: AWS DMS
-
AWS DMS no funciona con Amazon RDS for Postgre SQL 10.4 ni con Amazon Aurora Postgre SQL 10.4 ni como origen ni como destino.
-
Las tablas de captura deben contar con una clave principal. Si una tabla no tiene una clave principal, AWS DMS DELETE ignora y registra las operaciones de esa tabla. UPDATE Como solución alternativa, consulte Habilitar la captura de datos de cambios (CDC) mediante la replicación lógica.
Nota: No recomendamos migrar sin una clave principal o un índice único; de lo contrario, se aplicarán limitaciones adicionales, como la capacidad de aplicación por lotes «NO», la LOB capacidad total, la validación de datos y la incapacidad de replicar en Redshift Target de manera eficiente.
-
AWS DMS ignora el intento de actualizar un segmento de clave principal. En estos casos, el destino identifica la actualización como una que no ha actualizado ninguna fila. Sin embargo, dado que los resultados de la actualización de una clave principal en Postgre SQL son impredecibles, no se escribe ningún registro en la tabla de excepciones.
-
AWS DMS no admite la opción Iniciar los cambios del proceso desde la ejecución de la marca de tiempo.
-
AWS DMS no replica los cambios que resultan de las operaciones de partición o subpartición (
ADD
,DROP
, o).TRUNCATE
-
La replicación de varias tablas con el mismo nombre, donde cada nombre tiene mayúsculas y minúsculas diferentes (por ejemplo, tabla1 y tabla1) puede provocar un comportamiento impredecible. TABLE1 Debido a este problema, AWS DMS no admite este tipo de replicación.
-
En la mayoría de los casos, AWS DMS admite el procesamiento de CREATE cambios y DROP DDL las instrucciones de las tablas. ALTER AWS DMS no admite este procesamiento de cambios si las tablas se encuentran en un bloque interno de funciones o procedimientos o en otras estructuras anidadas.
Por ejemplo, el siguiente cambio no se capturó.
CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$;
-
Actualmente,
boolean
los tipos de datos de una SQL fuente de Postgre se migran a un SQL servidor de destino como tipos debit
datos con valores incoherentes. Como solución alternativa, cree previamente la tabla con un tipo deVARCHAR(1)
datos para la columna (o haga que AWS DMS cree la tabla). A continuación, haga que el procesamiento descendente trate la "F" como falso y la "T" como verdadero. -
AWS DMS no admite el procesamiento de cambios de las TRUNCATE operaciones.
-
El tipo de OID LOB datos no se migra al destino.
AWS DMS admite el tipo de GIS datos Post solo para migraciones homogéneas.
-
Si tu fuente es una SQL base de datos de Postgre local o en una EC2 instancia de Amazon, asegúrate de que el complemento de salida test_decoding esté instalado en el punto final de origen. Puedes encontrar este complemento en el paquete contrib de Postgre. SQL Para obtener más información sobre el complemento test-decocoding, consulta la documentación de Postgre. SQL
-
AWS DMS no admite el procesamiento de cambios para establecer y desestablecer los valores predeterminados de las columnas (utilizando la cláusula sobre las ALTER COLUMN SET DEFAULT declaraciones). ALTER TABLE
-
AWS DMS no admite el procesamiento de cambios para establecer la nulabilidad de las columnas (mediante la NOT NULL cláusula ALTER COLUMN [SET|DROP] en ALTER TABLE las declaraciones).
-
Cuando la replicación lógica está habilitada, el número máximo de cambios guardados en la memoria por transacción es de 4 MB. Después de eso, los cambios se transfieren al disco. Como resultado,
ReplicationSlotDiskUsage
aumenta yrestart_lsn
no avanza hasta que la transacción se complete o detenga y finalice la reversión. Como se trata de una transacción larga, puede tardar mucho tiempo en restaurarse. Por lo tanto, evite las transacciones de larga duración o muchas subtransacciones cuando la replicación lógica esté habilitada. En su lugar, divida la transacción en varias transacciones más pequeñas.En SQL las versiones 13 y posteriores de Aurora Postgre, puede ajustar el
logical_decoding_work_mem
parámetro para controlar cuándo los DMS derrames cambian los datos al disco. Para obtener más información, consulte Derrame archivos en Aurora Postgre SQL. -
Una tabla con un tipo de ARRAY datos debe tener una clave principal. Una tabla en la que a un tipo de ARRAY datos le falta una clave principal se suspende durante la carga completa.
-
AWS DMS no admite la replicación de tablas particionadas. Cuando se detecta una tabla con particiones, sucede lo siguiente:
-
El punto de enlace notifica una lista de las tablas principales y secundarias.
-
AWS DMS crea la tabla en el destino como una tabla normal con las mismas propiedades que las tablas seleccionadas.
-
Si la tabla principal en la base de datos de origen tiene el mismo valor de clave principal que las tablas secundarias, se genera un error de "clave duplicada".
-
-
Para replicar tablas particionadas de una SQL fuente de Postgre a un SQL destino de Postgre, primero cree manualmente las tablas principal y secundaria en el destino. A continuación, defina una tarea independiente para replicar en estas tablas. En tal caso, establezca la configuración de la tarea en Truncar antes de cargar.
-
El tamaño del tipo de SQL
NUMERIC
datos de Postgre no es fijo. Al transferir datos que son de un tipo deNUMERIC
datos pero sin precisión ni escala, DMS utilizaNUMERIC(28,6)
(una precisión de 28 y una escala de 6) de forma predeterminada. Por ejemplo, el valor 0,611111104488373 de la fuente se convierte en 0,611111 en el destino de Postgre. SQL -
AWS DMS admite Aurora Postgre SQL Serverless V1 como fuente únicamente para tareas de carga completa. AWS DMS admite Aurora Postgre SQL Serverless V2 como fuente para tareas de carga completa, carga completa y únicamente CDC tareas. CDC
-
AWS DMS no admite la replicación de una tabla con un índice único creado con una función de fusión.
-
Cuando se utiliza el LOB modo, tanto la tabla de origen como la tabla de destino correspondiente deben tener una clave principal idéntica. Si una de las tablas no tiene una clave principal, el resultado DELETE y las operaciones de UPDATE registro serán impredecibles.
-
Cuando se utiliza la característica de carga paralela, no se admite la segmentación de tablas en función de particiones o subparticiones. Para obtener más información acerca de la carga paralela, consulte Uso de carga paralela para tablas, vistas y recopilaciones seleccionadas
-
AWS DMS no admite restricciones diferidas.
-
AWS DMS la versión 3.4.7 admite Postgre SQL 14.x como fuente con las siguientes limitaciones:
-
AWS DMS no admite el procesamiento de cambios de las confirmaciones en dos fases.
-
AWS DMS no admite la replicación lógica para transmitir transacciones en curso desde hace mucho tiempo.
-
-
AWS DMS no es compatible con CDC Amazon RDS Proxy para Postgre SQL como fuente.
-
Si se utilizan filtros de origen que no contienen una columna de clave principal, no se capturarán las operaciones
DELETE
. -
Si la base de datos de origen también es el destino de otro sistema de replicación de terceros, es posible que los DDL cambios no se migren durante el proceso. CDC Porque esa situación puede impedir que se active el desencadenador del evento
awsdms_intercept_ddl
. Para evitar la situación, modifique ese desencadenador en la base de datos de origen de la siguiente manera:alter event trigger awsdms_intercept_ddl enable always;
-
AWS DMS no admite el clúster de bases de datos RDS Multi-AZ de Amazon CDC para Postgre SQL como fuente, ya que RDS para Postgre los clústeres de bases de datos SQL Multi-AZ no admiten la replicación lógica.
Tipos de datos de origen para Postgre SQL
La siguiente tabla muestra los tipos de datos de SQL origen de Postgre que se admiten cuando se utiliza AWS DMS y la asignación predeterminada a los tipos de datos. AWS DMS
Para obtener más información sobre cómo ver el tipo de datos que se asigna en el destino, consulte la sección del punto de enlace de destino que esté utilizando.
Para obtener información adicional sobre AWS DMS los tipos de datos, consulte. Tipos de datos de AWS Database Migration Service
Tipos de datos de Postgre SQL |
DMStipos de datos |
---|---|
INTEGER |
INT4 |
SMALLINT |
INT2 |
BIGINT |
INT8 |
NUMERIC(p, s) |
Si la precisión es de 0 a 38, utiliceNUMERIC. Si la precisión es 39 o superior, utiliceSTRING. |
DECIMAL(P, S) |
Si la precisión es de 0 a 38, utiliceNUMERIC. Si la precisión es 39 o superior, utiliceSTRING. |
REAL |
REAL4 |
DOUBLE |
REAL8 |
SMALLSERIAL |
INT2 |
SERIAL |
INT4 |
BIGSERIAL |
INT8 |
MONEY |
NUMERIC(38,4) El tipo de MONEY datos está asignado FLOAT en SQL el servidor. |
CHAR |
WSTRING(1) |
CHAR(N) |
WSTRING(n) |
VARCHAR(N) |
WSTRING(n) |
TEXT |
NCLOB |
CITEXT |
NCLOB |
BYTEA |
BLOB |
TIMESTAMP |
DATETIME |
TIMESTAMP WITH TIME ZONE |
DATETIME |
DATE |
DATE |
TIME |
TIME |
TIME WITH TIME ZONE |
TIME |
INTERVAL |
STRING(128) —1YEAR, 2MONTHS, 3DAYS, 4HOURS, 5MINUTES, 6 SECONDS |
BOOLEAN |
CHAR(5) falso o verdadero |
ENUM |
STRING(64) |
CIDR |
STRING(50) |
INET |
STRING(50) |
MACADDR |
STRING(18) |
BIT(n) |
STRING(n) |
BITVARYING(n) |
STRING(n) |
UUID |
STRING |
TSVECTOR |
CLOB |
TSQUERY |
CLOB |
XML |
CLOB |
POINT |
STRING(255) «(x, y)» |
LINE |
STRING(255) «(x, y, z)» |
LSEG |
STRING(255) «(x1, y1), (x2, y2)» |
BOX |
STRING(255) «(x1, y1), (x2, y2)» |
PATH |
CLOB«(x1, y1), (xn, yn)» |
POLYGON |
CLOB«(x1, y1), (xn, yn)» |
CIRCLE |
STRING(255) «(x, y), r» |
JSON |
NCLOB |
JSONB |
NCLOB |
ARRAY |
NCLOB |
COMPOSITE |
NCLOB |
HSTORE |
NCLOB |
INT4RANGE |
STRING(255) |
INT8RANGE |
STRING(255) |
NUMRANGE |
STRING(255) |
STRRANGE |
STRING(255) |
Trabajar con tipos LOB de datos fuente para Postgre SQL
Los tamaños de las SQL columnas de Postgre afectan a la conversión de los tipos de datos de Postgre SQL LOB en tipos de datos. AWS DMS Para trabajar con esto, siga los pasos que se indican a continuación para los tipos de AWS DMS datos siguientes:
-
BLOB— Establezca el LOB tamaño límite en el valor del LOBtamaño máximo (KB) al crear la tarea.
-
CLOB— La replicación trata a cada personaje como si fuera un UTF8 personaje. Por lo tanto, encuentre la longitud del texto con más caracteres en la columna, que se muestra aquí como
max_num_chars_text
. Utilice esta longitud para especificar el valor de Limitar el LOB tamaño a. Si los datos incluyen caracteres de 4 bytes, multiplique por 2 para especificar el LOBtamaño límite del valor, que se expresa en bytes. En este caso, el LOB tamaño límite a es igual amax_num_chars_text
multiplicado por 2. -
NCLOB— La replicación trata cada carácter como un carácter de doble byte. Por lo tanto, busque la longitud del texto con más caracteres en la columna (
max_num_chars_text
) y multiplíquela por 2. Esto se hace para especificar el valor de Limitar el LOB tamaño a. En este caso, el LOB tamaño límite a es igual amax_num_chars_text
multiplicado por 2. Si los datos incluyen caracteres de 4 bytes, multiplíquelos por 2 de nuevo. En este caso, el LOB tamaño límite a es igual amax_num_chars_text
multiplicado por 4.