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 base de datos PostgreSQL comoAWS DMS fuente
Puede migrar datos desde una o varias bases de datos de PostgreSQL con AWS DMS. Con una base de datos de PostgreSQL como fuente, puede migrar los datos a otra base de datos de PostgreSQL o a una de las bases de datos compatibles. AWS DMSadmite una base de datos PostgreSQL de las versiones 9.4 y posteriores (para las versiones 9.x), 10.x, 11.x, 12.x, 13.x y 14.x como fuente para los siguientes tipos de bases de datos:
-
Bases de datos locales
-
Bases de datos en una instancia Amazon EC2
-
Bases de datos en una instancia de base de datos de Amazon RDS
-
Bases de datos en una instancia de base de datos basada en Amazon Aurora PostgreSQL-Compatible Edition
-
Bases de datos en una instancia de base de datos basada en Amazon Aurora PostgreSQL-Compatible Edition
DMS admite Amazon Aurora PostgreSQL (Serverless V1) como fuente únicamente para carga completa. Sin embargo, puede utilizar Amazon Aurora PostgreSQL—Serverless V2 como fuente para tareas de carga completa, carga completa + CDC y solo de CDC.
Versión de origen de PostgreSQL |
Versión de AWS DMS que se debe usar |
---|---|
9.x, 10.x, 11.x, 12.x |
Utilice cualquier versión disponible de AWS DMS. |
13.x |
UtiliceAWS DMS la versión 3.4.3 y versiones posteriores. |
14.x |
UtiliceAWS DMS la versión 3.4.7 o superior. |
Puede usar las capas de conexión segura (SSL) para cifrar las conexiones entre el punto de conexión de PostgreSQL y la instancia de replicación. Para obtener más información sobre el uso de SSL con un punto de enlace de PostgreSQL, consulte Uso de SSL con AWS Database Migration Service.
Como requisito de seguridad adicional cuando se utiliza PostgreSQL como fuente, la cuenta de usuario especificada debe ser un usuario registrado en la base de datos de PostgreSQL.
Para configurar una base de datos de PostgreSQL como extremo deAWS DMS origen, haga lo siguiente:
-
Cree un usuario de PostgreSQL con los permisos adecuados para proporcionarAWS DMS acceso a la base de datos fuente de PostgreSQL.
nota -
Si la base de datos fuente de PostgreSQL se administra automáticamente, consulteTrabajando con bases de datos PostgreSQL autogestionadas como fuente enAWS DMS para obtener más información.
-
Si su base de datos fuente de PostgreSQL está gestionada por Amazon RDS, consulteTrabajando con basesAWS de datos PostgreSQL administradas como fuentes de DMS para obtener más información.
-
-
Cree un punto final de origen de PostgreSQL que se ajuste a la configuración de base de datos de PostgreSQL que haya elegido.
-
Cree una tarea o un conjunto de tareas para migrar las tablas.
Para crear una full-load-only tarea, no se necesita ninguna otra configuración de punto final.
Antes de crear una tarea para cambiar la captura de datos (una tarea exclusiva de los CDC o de carga completa y de los CDC), consulteHabilitar a los CDC utilizando una base de datos PostgreSQL autogestionada comoAWS DMS fuente oHabilitar los CDC con una instanciaAWS de base de datos PostgreSQL administrada conAWS DMS.
Temas
- Trabajando con bases de datos PostgreSQL autogestionadas como fuente enAWS DMS
- Trabajando con basesAWS de datos PostgreSQL administradas como fuentes de DMS
- Habilitar la captura de datos de cambio (CDC) mediante replicación lógica
- Uso de puntos de inicio de CDC nativos para configurar una carga de CDC de una fuente de PostgreSQL
- Migración de PostgreSQL a PostgreSQL con AWS DMS
- Quitar artefactos de AWS DMS de una base de datos de origen de PostgreSQL
- Ajustes de configuración adicionales cuando se utiliza una base de datos de PostgreSQL como fuente de DMS
- Uso de la configuración de punto final de MapBooleanAsBoolean PostgreSQL
- Configuración de endpoint cuando se utiliza PostgreSQL como fuente de DMS
- Limitaciones del uso de una base de datos PostgreSQL como fuente de DMS
- Tipos de datos de origen para PostgreSQL
Trabajando con bases de datos PostgreSQL autogestionadas como fuente enAWS DMS
Con una base de datos PostgreSQL autogestionada como fuente, puede migrar los datos a otra base de datos de PostgreSQL o a una de las otras bases de datos de destino compatibles conAWS DMS. El origen de la base de datos puede ser una base de datos en las instalaciones o un motor autoadministrado que se ejecuta una instancia Amazon EC2. Puede utilizar una instancia de base de datos tanto para tareas de carga completa como para tareas de captura de datos de cambios (CDC).
Requisitos previos para utilizar una base de datos PostgreSQL autogestionada comoAWS DMS fuente
Antes de migrar datos de una base de datos fuente de PostgreSQL autogestionada, haga lo siguiente:
-
Asegúrese de utilizar una base de datos PostgreSQL de la versión 9.4.x o posterior.
-
Para tareas de carga completa más de CDC o tareas exclusivas de CDC, conceda permisos de superusuario para la cuenta de usuario especificada para la base de datos fuente de PostgreSQL. La cuenta de usuario necesita permisos de superusuario para acceder a las funciones específicas de la replicación en la fuente. Para las tareas de carga completa únicamente, la cuenta de usuario necesita los permisos SELECT en las tablas para migrarlas.
-
Agregue la dirección IP del servidor de replicación AWS DMS al archivo de configuración
pg_hba.conf
y habilite las conexiones de socket y replicación. 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 configuración de PostgreSQL
pg_hba.conf
controla la autenticación del cliente. (HBA significa autenticación basada en host). El archivo se almacena tradicionalmente en el directorio de datos del clúster de bases de datos. -
Si está configurando una base de datos como fuente para la replicación lógica,AWS DMS consulteHabilitar a los CDC utilizando una base de datos PostgreSQL autogestionada comoAWS DMS fuente
AlgunasAWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el motor de DMS las vuelva a utilizar. Al utilizar el parámetroidle_in_transaction_session_timeout
en las versiones 9.6 y posteriores de PostgreSQL, puede provocar que las transacciones inactivas se agoten y fallen. No finalice las transacciones inactivas cuando utilice AWS DMS.
Habilitar a los CDC utilizando una base de datos PostgreSQL autogestionada comoAWS DMS fuente
AWS DMSadmite la captura de datos de cambio (CDC) mediante replicación lógica. Para habilitar la replicación lógica de una base de datos fuente de PostgreSQL autogestionada, defina los siguientes parámetros y valores en el archivopostgresql.conf
de configuración:
-
Configurar
wal_level = logical
. -
Defina
max_replication_slots
en un valor mayor de 1.Defina el
max_replication_slots
valor según la cantidad de tareas que desee ejecutar. Por ejemplo, para ejecutar cinco tareas, establece un mínimo de cinco espacios. 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. -
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
wal_sender_timeout
parámetro finaliza las conexiones de replicación que permanecen inactivas durante más de la cantidad de milisegundos especificada. El valor predeterminado es 60000 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 el DMS.Cuando se establece
wal_sender_timeout
en un valor distinto de cero, el DMS requiere un mínimo de 10 000 milisegundos (10 segundos) y se produce un error si el valor es inferior a 10 000. Mantenga el valor en menos de 5 minutos para evitar demoras durante una conmutación por error Multi-AZ de una instancia de replicación de DMS.
Algunos parámetros son estáticos y solo puede configurarlos al iniciar el servidor. Cualquier cambio 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 (para una base de datos de RDS para PostgreSQL) se ignorará hasta que se reinicie el servidor. Para obtener más información, consulte la documentación de PostgreSQL
Para obtener más información acerca de cómo activar los CDC, consulteHabilitar la captura de datos de cambio (CDC) mediante replicación lógica.
Trabajando con basesAWS de datos PostgreSQL administradas como fuentes de DMS
Puede utilizar una instanciaAWS de base de datos PostgreSQL administrada como fuente paraAWS DMS. Puede realizar tareas de carga completa y cambiar las tareas de captura de datos (CDC) mediante una fuenteAWS de PostgreSQL gestionada.
Requisitos previos para utilizar una baseAWS de datos PostgreSQL administrada como fuente de DMS
Antes de migrar los datos de una baseAWS de datos fuente de PostgreSQL administrada, haga lo siguiente:
-
Utilice la cuenta de usuarioAWS maestra de la instancia de base de datos de PostgreSQL como cuenta de usuario del punto final de origen de PostgreSQL paraAWS DMS. La cuenta de usuario principal dispone de los roles necesarios que le permiten configurar la CDC. Si usa una cuenta que no sea la cuenta de usuario maestra, la cuenta debe tener el
rds_superuser
rol y elrds_replication
rol. Elrds_replication
rol otorga permisos para administrar ranuras lógicas y para transmitir datos mediante ranuras lógicas.Si no usa la cuenta de usuario maestra para la instancia de base de datos, asegúrese de crear varios objetos a partir de la cuenta de usuario maestra para la cuenta que utiliza. Para obtener más información acerca de cómo crearlos, consulteMigrar una base de datos de Amazon RDS for PostgreSQL sin usar la cuenta de usuario principal.
-
Si la base de datos de origen se encuentra en una nube privada virtual (VPC), elija el grupo de seguridad de VPC 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 replicación del DMS se conecte correctamente a la instancia de base de datos de origen. Cuando la base de datos y la instancia de replicación de DMS estén en la misma VPC, añada el grupo de seguridad correspondiente a sus propias reglas de entrada.
AlgunasAWS DMS transacciones permanecen inactivas durante algún tiempo antes de que el motor de DMS las vuelva a utilizar. Al utilizar el parámetroidle_in_transaction_session_timeout
en las versiones 9.6 y posteriores de PostgreSQL, puede provocar que las transacciones inactivas se agoten y fallen. No finalice las transacciones inactivas cuando utilice AWS DMS.
Habilitar los CDC con una instanciaAWS de base de datos PostgreSQL administrada conAWS DMS
AWS DMSadmite CDC en las bases de datos PostgreSQL de Amazon RDS cuando la instancia de base de datos está configurada para usar la replicación lógica. La siguiente tabla resume la compatibilidad de replicación lógica de cada versiónAWS de PostgreSQL administrada.
No puede usar réplicas de lectura de PostgreSQL de RDS para la CDC (replicación continua).
Versión de PostgreSQL |
AWS DMSsoporte de carga completa |
AWS DMSSoporte de los CDC |
---|---|---|
Aurora PostgreSQL versión 2.1 con compatibilidad con PostgreSQL 10.5 (o versiones anteriores) |
Sí |
No |
Aurora PostgreSQL versión 2.2 con compatibilidad con PostgreSQL 10.6 (o versiones posteriores) |
Sí |
Sí |
Compatibilidad con RDS para PostgreSQL con PostgreSQL 10.21 (o superior) |
Sí |
Sí |
Para habilitar la replicación lógica en una instancia de base de datos de RDS para PostgreSQL
-
Utilice la cuenta de usuarioAWS maestra de la instancia de base de datos de PostgreSQL como cuenta de usuario para el extremo de origen de PostgreSQL. La cuenta de usuario principal dispone de los roles necesarios que le permiten configurar la CDC.
Si usa una cuenta que no sea la cuenta de usuario maestra, asegúrese de crear varios objetos a partir de la cuenta maestra para la cuenta que usa. Para obtener más información, consulte Migrar una base de datos de Amazon RDS for PostgreSQL sin usar la cuenta de usuario principal.
-
Defina el
rds.logical_replication
parámetro de su grupo de parámetros DB CLUSTER 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 de parámetros pueden aumentar la generación de registros de escritura anticipada (WAL), así que solo debe establecerrds.logical_replication
cuando utilice ranuras de replicación lógica. -
El
wal_sender_timeout
parámetro finaliza las conexiones de replicación que permanecen inactivas durante más de la cantidad de milisegundos especificada. El valor predeterminado es 60000 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 el DMS.Cuando se establece
wal_sender_timeout
en un valor distinto de cero, el DMS requiere un mínimo de 10 000 milisegundos (10 segundos) y se produce un error si el valor está entre 0 y 10 000. Mantenga el valor en menos de 5 minutos para evitar demoras durante una conmutación por error Multi-AZ de una instancia de replicación de DMS. -
Asegúrese de que el valor del
max_worker_processes
parámetro de su grupo de parámetros de clúster de base de datos sea igual o superior a los valores combinados totales demax_logical_replication_workers
autovacuum_max_workers
, ymax_parallel_workers
. Un gran número 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, supervise el rendimiento de la base de datos si establece un valormax_worker_processes
superior al predeterminado.
Migrar una base de datos de Amazon RDS for PostgreSQL sin usar la cuenta de usuario principal
En algunos casos, es posible que no utilice la cuenta de usuario maestra de la instancia de base de datos PostgreSQL de Amazon RDS que está utilizando como fuente. En estos casos, se crean 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.
Si establece el atributo de conexión adicional captureDDLs
en N en el punto de enlace de origen, no tiene que crear la siguiente tabla 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 cuentaNoPriv
pueda obtener acceso a él. -
Inicie sesión en la instancia de base de datos de PostgreSQL con la cuenta de usuario que no sea la cuenta maestra; en este caso, la
NoPriv
cuenta. -
Cree la tabla
awsdms_ddl_audit
ejecutando el siguiente comando y sustituyendo
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') 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
NoPriv
e inicie sesión con una cuenta que tenga el rolrds_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();
Cuando haya completado el procedimiento anterior, puede crear el punto de enlace de origen de AWS DMS utilizando la cuenta NoPriv
.
Estos eventos se desencadenan medianteCREATE TABLE
ALTER
TABLE
, yDROP TABLE
declaraciones.
Asegúrese de que todos los usuarios y roles que accedan a estos eventos tengan los permisos de DDL necesarios. Por ejemplo:
grant all on public.awsdms_ddl_audit to public; grant all on public.awsdms_ddl_audit_c_key_seq to public;
Habilitar la captura de datos de cambio (CDC) mediante replicación lógica
Puede utilizar la función de replicación lógica nativa de PostgreSQL para habilitar la captura de datos de cambios (CDC) durante la migración de bases de datos para fuentes de PostgreSQL. Puede utilizar esta función con una instancia de base de datos SQL de PostgreSQL autogestionada y también con una instancia de base de datos SQL de Amazon RDS for PostgreSQL. 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 PostgreSQL de origen.
AWS DMSadmite CDC para tablas de PostgreSQL con claves principales. Si una tabla no tiene una clave principal, los registros de escritura anticipada (WAL) no incluyen la imagen anterior de la fila de la base de datos. En este caso, el DMS no puede actualizar la tabla. Aquí puede utilizar ajustes 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 tablas 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 PostgreSQL como fuente de DMS.
REPLICA IDENTITY FULL es 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 pglogical documentación
Para tareas de carga completa y exclusivas de CDC y CDC,AWS DMS utiliza ranuras de replicación lógica para conservar los registros de WAL con fines de replicación hasta que se decodifiquen los registros. Al reiniciar (no reanudar) una carga completa y una tarea de CDC o una tarea de CDC, se vuelve a crear la ranura de replicación.
Para la decodificación lógica, DMS utiliza el complemento test_decoding o pglogical. Si el complemento pglogical está disponible en una base de datos PostgreSQL de origen, DMS crea una ranura de replicación mediante pglogical; de lo contrario, se utiliza el complemento test_decoding. Para obtener más información acerca del complemento test_decoding, consulte la documentación de PostgreSQL
Si el parámetro de la base de datosmax_slot_wal_keep_size
se establece en un valor no predeterminado y elrestart_lsn
de una ranura de replicación supera en más de este tamaño al LSN actual, la tarea de DMS fallará debido a la eliminación de los archivos WAL necesarios.
Configuración del complemento pglogical
Implementado como una extensión de PostgreSQL, el complemento pglogical es un sistema de replicación lógica y un modelo para la replicación selectiva de datos. La siguiente tabla identifica las versiones de la base de datos PostgreSQL de origen que admiten el complemento pglogical.
Fuente de PostgreSQL |
Apoyos filosóficos |
---|---|
PostgreSQL 9.4 o superior autogestionado |
Sí |
Amazon RDS PostgreSQL 9.5 o versiones anteriores |
No |
Amazon RDS PostgreSQL 9.6 o versiones posteriores |
Sí |
Aurora PostgreSQL 1.x a 2.5.x |
No |
Aurora PostgreSQL 2.6.x o superior |
Sí |
Aurora PostgreSQL 3.3.x o superior |
Sí |
Antes de configurar pglogical para su uso conAWS DMS, habilite primero la replicación lógica para la captura de datos de cambio (CDC) en su base de datos de origen de PostgreSQL.
-
Para obtener información sobre cómo habilitar la replicación lógica para los CDC en bases de datos fuente de PostgreSQL autogestionadas, consulteHabilitar a los CDC utilizando una base de datos PostgreSQL autogestionada comoAWS DMS fuente
-
Para obtener información sobre cómo habilitar la replicación lógica para los CDC en bases AWSde datos fuente de PostgreSQL administradas, consulteHabilitar los CDC con una instanciaAWS de base de datos PostgreSQL administrada conAWS DMS.
Una vez habilitada la replicación lógica en la base de datos fuente de PostgreSQL, siga los siguientes pasos para configurar pglogical para su uso con DMS.
Para utilizar el complemento pglogical para la replicación lógica en una base de datos fuente de PostgreSQL conAWS DMS
-
Cree una extensión pglogica en su base de datos PostgreSQL de origen:
-
Establezca el parámetro correcto:
-
Para las bases de datos PostgreSQL autogestionadas, defina el parámetro de base de datos
shared_preload_libraries= 'pglogical'
. -
Para PostgreSQL en las bases de datos de Amazon RDS y Amazon Aurora PostgreSQL,
shared_preload_libraries
defina el parámetropglogical
en el mismo grupo de parámetros de RDS.
-
-
Reinicie la base de datos de origen de PostgreSQL.
-
En la base de datos de PostgreSQL, 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 unaAWS DMS tarea que realice la captura de datos de cambios para el extremo de la base de datos fuente de PostgreSQL.
Si no habilitas pglogical en tu base de datos fuente de PostgreSQL,AWS DMS usa eltest_decoding
complemento de forma predeterminada. Cuando pglogical está habilitado para la decodificación lógica,AWS DMS usa pglogical de forma predeterminada. Pero puede configurar el atributo de conexión adicionalPluginName
para usar eltest_decoding
complemento en su lugar.
Uso de puntos de inicio de CDC nativos para configurar una carga de CDC de una fuente de PostgreSQL
Para habilitar los puntos de inicio de CDC nativos con PostgreSQL como fuente, defina el atributo de conexiónslotName
adicional en 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.
PostgreSQL escribe los cambios de la base de datos en archivos WAL que solamente se descartan cuando AWS DMS lee 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 del espacio en la instancia de PostgreSQL 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 de endpoint cuando se utiliza PostgreSQL como fuente de DMS.
En el siguiente procedimiento, se explica este enfoque paso a paso con más detalle.
Para utilizar un punto de inicio de CDC nativo con el fin de configurar una carga de CDC de un punto de enlace de origen de PostgreSQL
-
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 es así, 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 exclusiva de los CDC mediante laAWS DMS APIAWS CLI or. Por ejemplo, con la CLI podría ejecutar el siguiente
create-replication-task
comando.Actualmente, AWS DMS no permite crear una tarea de CDC con un punto de inicio nativo a través de la consola.
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
source-endpoint-arn
opción se establece en el nuevo valor que creó en el paso 2. -
La
replication-instance-arn
opción se establece en el mismo valor que para la tarea principal del paso 1. -
Las
replication-task-settings
opcionestable-mappings
y se configuran en los mismos valores que para la tarea principal del paso 1. -
La
cdc-start-position
opción se establece en un valor de posición inicial. 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.
Cuando se ejecuta esta tarea de CDC, seAWS DMS genera un error si la ranura de replicación lógica especificada no existe. También genera un error si la tarea no se crea con una configuración válida para
cdc-start-position
. -
Si utiliza puntos de inicio de CDC 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 tarea de CDC.
Para utilizar una nueva ranura de replicación que no se haya creado anteriormente como parte de otra tarea de 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 haya creado 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 inicial nativa de los CDC para una tarea de CDC 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
pglogical.create_replication_set
función. 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 solo rastrea 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); -
Defina el atributo de conexión adicional (ECA) a continuación al crear su punto de enlace de origen.
PluginName=PGLOGICAL;slotName=
slot_name
;
Ahora puede crear una tarea exclusiva de CDC con un punto de inicio nativo de PostgreSQL utilizando la nueva ranura de replicación. Para obtener más información acerca del complemento pglogical, consulte la documentación de pglogical 3.7
Migración de PostgreSQL a PostgreSQL con AWS DMS
Cuando se migra de un motor de base de datos que no sea PostgreSQL a una base de datos de PostgreSQL, casi siempreAWS DMS es la mejor herramienta de migración que se puede utilizar. Sin embargo, cuando se migra de una base de datos de PostgreSQL a una base de datos de PostgreSQL, las herramientas de PostgreSQL pueden ser más eficaces.
Uso de herramientas nativas de PostgreSQL para migrar datos
Es recomendable usar las herramientas de migración de bases de datos de PostgreSQL, por ejemplo, sipg_dump
se dan las condiciones siguientes:
-
Se trata de una migración homogénea, en la que se migra desde una base de datos de PostgreSQL de origen a una base de datos de PostgreSQL de destino.
-
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 comando COPY para crear un esquema y un volcado de datos de una base de datos de PostgreSQL. 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, utilice elpg_restore
comando y el-d
parámetro.
Si está migrando datos de una base de datos fuente de PostgreSQL que se ejecuta en EC2 a un destino de Amazon RDS for PostgreSQL, puede utilizar el complemento pglogical.
Para obtener más información acerca de cómo importar una base de datos de PostgreSQL Amazon Aurora la Edición compatible Edition, consultehttps://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html.
Uso de DMS para migrar datos de PostgreSQL a PostgreSQL
AWS DMSpuede migrar datos, por ejemplo, de una base de datos de PostgreSQL de origen que se encuentra en las instalaciones a una instancia de Amazon RDS for PostgreSQL o Aurora PostgreSQL de destino. Los tipos de datos de PostgreSQL básicos se migran normalmente sin problemas.
Al replicar tablas particionadas de una fuente de PostgreSQL a un destino de PostgreSQL, no es necesario mencionar la tabla principal como parte de los criterios de selección de la tarea de DMS. Al mencionar la tabla principal, los datos se duplican 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 del mapeo de tablas, la tabla principal se rellena automáticamente.
Sin embargo, es posible que aquellos tipos de datos que se admitan en la base de datos de origen, pero no en el destino, no se migren correctamente. AWS DMS transmite en streaming algunos tipos de datos como cadenas si el tipo de datos es desconocido. Algunos tipos de datos, como XML y JSON, se pueden migrar correctamente como archivos pequeños, pero se puede producir un error si los documentos son grandes.
Cuando se realiza la migración de tipos de datos, tenga en cuenta lo siguiente:
-
En algunos casos, el tipo de datos NUMÉRICOS (p, s) de PostgreSQL no especifica ninguna precisión ni escala. Para las versiones 3.4.2 y anteriores del DMS, el DMS utiliza una precisión de 28 y una escala de 6 de forma predeterminada, NUMÉRICA (28,6). Por ejemplo, el valor 0.611111104488373 del origen se convierte a 0.611111 en el destino de PostgreSQL.
-
Una tabla con un tipo de datos ARRAY debe contar con una clave principal. Una tabla con un tipo de datos ARRAY a la que le falta una clave principal se suspende durante la carga completa.
En la siguiente tabla se muestran los tipos de datos de PostgreSQL de origen y se indica si pueden migrarse correctamente:
Tipo de datos | Se migra correctamente | Se migra parcialmente | No se migra | Comentarios |
---|---|---|---|---|
INTEGER | X | |||
SMALLINT | X | |||
BIGINT | X | |||
NUMERIC/DECIMAL(p,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 BC», respectivamente. | ||
TIMESTAMP(Z) | X | |||
DATE | X | |||
TIME | X | |||
TIME (z) | X | |||
INTERVAL | X | |||
BOOLEANO | X | |||
ENUM | X | |||
CIDR | X | |||
INET | X | |||
MACADDR | X | |||
TSVECTOR | X | |||
TSQUERY | X | |||
XML | X | |||
POINT | X | Tipo de datos espaciales PostGIS | ||
LINE | X | |||
LSEG | X | |||
BOX | X | |||
PATH | X | |||
POLYGON | X | Tipo de datos espaciales PostGIS | ||
CIRCLE | X | |||
JSON | X | |||
ARRAY | X | Requiere clave principal | ||
COMPOSITE | X | |||
RANGE | X | |||
LINESTRING | X | Tipo de datos espaciales PostGIS | ||
MULTIPOINT | X | Tipo de datos espaciales PostGIS | ||
MULTILINESTRING | X | Tipo de datos espaciales PostGIS | ||
MULTIPOLYGON | X | Tipo de datos espaciales PostGIS | ||
GEOMETRYCOLLECTION | X | Tipo de datos espaciales PostGIS |
Migración de tipos de datos espaciales PostGIS
Los datos espaciales identifican la información de geometría de un objeto o ubicación en el espacio. Las bases de datos relacionales de objetos de PostgreSQL admiten los tipos de datos espaciales PostGIS.
Antes de migrar objetos de datos espaciales de PostgreSQL, asegúrese de que el complemento de PostGIS esté habilitado a nivel global. Esto garantiza que se creen lasAWS DMS columnas de datos espaciales de origen exactas para la instancia de base de datos de destino de PostgreSQL.
Para las migraciones homogéneas de PostgreSQL a PostgreSQL, AWS DMS admite la migración de tipos y subtipos de objetos de datos geométricos y geográficos (coordenadas geodésicas) de PostGIS, como los siguientes:
-
POINT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
MULTILINESTRING
-
MULTIPOLYGON
-
GEOMETRYCOLLECTION
Quitar artefactos de AWS DMS de una base de datos de origen de PostgreSQL
Para capturar eventos DDL, AWS DMS crea varios artefactos en la base de datos de PostgreSQL cuando comienza una tarea de migración. Cuando se complete la tarea, es posible que quiera eliminar estos artefactos.
Para eliminar los artefactos, emita las siguientes instrucciones (en el orden en que aparecen), donde{AmazonRDSMigration}
se muestra el esquema en el que se crearon los artefactos. Eliminar un esquema debe hacerse con extrema precaución. 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 PostgreSQL como fuente de DMS
Puede añadir parámetros de configuración adicionales cuando migre datos desde una base de datos de PostgreSQL de dos maneras:
-
Puede añadir valores al atributo extra connection para capturar eventos DDL y especificar el esquema en el que se crean los artefactos de la base de datos DDL. Para obtener más información, consulte Configuración de endpoint cuando se utiliza PostgreSQL como fuente de DMS.
-
Puede anular parámetros de cadenas de conexión. Elija esta opción para realizar una de estas dos operaciones:
-
Especifique parámetros de AWS DMS internos. Estos parámetros rara vez se requieren, por lo que no se exponen en la interfaz de usuario.
-
Especificar los valores de paso (passthru) para el cliente de base de datos específico. AWS DMS contiene parámetros de paso a través en la cadena de conexión que se pasa al cliente de base de datos.
-
-
Al utilizar el parámetro de nivel de tabla
REPLICATE IDENTITY
de las versiones 9.4 y posteriores de PostgreSQL, puede controlar la información escrita en los registros de escritura anticipada (WALL). En particular, lo hace para las WALL que identifican las filas que se actualizan o eliminan.REPLICATE IDENTITY FULL
registra los valores antiguos de todas las columnas de la fila.REPLICATE IDENTITY FULL
Úselo con cuidado para cada tabla, ya queFULL
genera una cantidad adicional de WALL que podrían no ser necesarias. Para obtener más información, consulte ALTER TABLE-REPLICA IDENTITY.
Uso de la configuración de punto final de MapBooleanAsBoolean PostgreSQL
Puede usar la configuración de endpoint de PostgreSQL para asignar un booleano como un booleano desde su fuente de PostgreSQL a un destino de Amazon Redshift. De forma predeterminada, un tipo BOOLEANO se migra como varchar (5). Puede especificarMapBooleanAsBoolean
que PostgreSQL migre el tipo booleano como booleano, como se muestra en el siguiente ejemplo.
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
Configuración de endpoint cuando se utiliza PostgreSQL como fuente de DMS
Puede usar la configuración de endpoint para configurar la base de datos fuente de PostgreSQL de forma similar a usar atributos de conexión adicionales. La configuración se especifica al crear el extremo de origen mediante laAWS DMS consola o mediante elcreate-endpoint
comando de AWS CLI, con la sintaxis--postgre-sql-settings '{"
JSON.EndpointSetting"
:
"value"
, ...
}'
La siguiente tabla muestra la configuración de punto final que puede usar con PostgreSQL como fuente.
Nombre de atributo | Descripción |
---|---|
|
Para capturar eventos DDL, AWS DMS crea varios artefactos en la base de datos de PostgreSQL al iniciar la tarea. Más adelante podrá quitar estos artefactos según se describe en Quitar artefactos de AWS DMS de una base de datos de origen de PostgreSQL. Si este valor se ha establecido en N, no es necesario crear tablas ni disparadores en la base de datos de origen. Se capturan los eventos DDL transmitidos. Valor predeterminado: Y Valores válidos: Y/N Ejemplo: |
|
Establece el esquema en el que se crearon los artefactos de la base de datos DDL operativa. Valor predeterminado: público Valores válidos: String Ejemplo: |
|
Cuando se establece en Si una tarea está establecida en el modo LOB limitado y esta opción está establecida en true, la tarea genera un error en vez de truncar los datos de LOB. Valor predeterminado: false Valores válidos: booleano Ejemplo: |
|
Establece el tiempo de espera de las instrucciones del cliente para la instancia de PostgreSQL, en segundos. El valor de predeterminado es de 60 segundos. Ejemplo: |
|
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 carga de CDC de la instancia de origen de PostgreSQL. Cuando se utiliza con el parámetro de solicitud Para obtener más información sobre la configuración del parámetro de solicitud Valores válidos: String Ejemplo: |
|
La función WAL Heartbeat imita una transacción ficticia, de modo que las ranuras de replicación lógica inactivas no se mantengan en el origen. Este latido mantiene en movimiento a Valor predeterminado: Valores válidos: true/false Ejemplo: |
|
Establece la frecuencia del latido de WAL (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: |
|
Se usa para controlar cómo se replican las transacciones monolíticas con números de secuencia de registro (LSN) duplicados. Cuando este parámetro es Valor predeterminado: Valores válidos: falso/verdadero Ejemplo: |
|
Este parámetro trata las columnas con tipos de datos NUMÉRICOS ilimitados como STRING para poder migrar correctamente sin perder la precisión del valor numérico. Utilice este parámetro solo para la replicación desde el origen de PostgreSQL al destino de PostgreSQL o para bases de datos compatibles con PostgreSQL. Valor predeterminado: Valores válidos: Ejemplo: El uso de este parámetro puede provocar 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. La versión 3.4.4 y superior de DMS admite el uso de este parámetro Úselo solo
No lo utilice |
|
Este atributo de conexión adicional (ECA) establece el número de filas que obtendrá el cursor durante la operación de carga completa. En función de los recursos disponibles en la instancia de replicación, puede ajustar el valor hacia arriba o hacia abajo. Valor predeterminado: Valores válidos: Number Ejemplo de ECA: |
Limitaciones del uso de una base de datos PostgreSQL como fuente de DMS
Al utilizar PostgreSQL como origen para AWS DMS se aplican las siguientes restricciones:
-
AWS DMSno funciona con Amazon RDS for PostgreSQL 10.4 ni Amazon Aurora PostgreSQL 10.4 ni como origen ni como destino.
-
Las tablas de captura deben contar con una clave principal. Si una tabla no dispone de clave principal, AWS DMS omite las operaciones de registro DELETE y UPDATE para dicha tabla. 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 Batch «NO», la capacidad de LOB completa, la validación de datos y la incapacidad de replicar al objetivo de Redshift de manera eficiente.
-
AWS DMS omite un 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 actualizar una clave primaria en PostgreSQL son imprevisibles, no se escriben registros en la tabla de excepciones.
-
AWS DMS no admite la opción de ejecución Start Process Changes from Timestamp (Iniciar procesamiento de cambios a partir de una hora de inicio).
-
AWS DMSno replica los cambios que resultan de las operaciones de partición o subpartición (
ADD
DROP
, oTRUNCATE
). -
La replicación de varias tablas que tengan el mismo nombre donde cada nombre está escrito con un uso de las mayúsculas y minúsculas diferente (por ejemplo, tabla1, TABLA1 y Tabla1) puede provocar un comportamiento imprevisible. Debido a este problema, AWS DMS no admite este tipo de replicación.
-
En la mayoría de los casos AWS DMS admite cambiar el procesamiento de las instrucciones DDL de CREATE, ALTER y DROP para las tablas. AWS DMS no admite este cambio si las tablas se conserven en un bloque de contenido de una función o procedimiento internos o en otros constructos anidados.
Por ejemplo, no se captura el siguiente cambio.
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 fuente de PostgreSQL se migran a un destino de SQL Server como tipos debit
datos con valores inconsistentes. Como solución alternativa, cree previamente la tabla con un tipo deVARCHAR(1)
datos para la columna (o pida aAWS DMS que 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 cambiar el procesamiento de las operaciones TRUNCATE.
-
El tipo de datos de LOB OID no se migra al destino.
AWS DMSadmite el tipo de datos PostGIS solo para migraciones homogéneas.
-
Si su fuente es una base de datos de PostgreSQL local o en una instancia de Amazon EC2, asegúrese de que el complemento de salida test_decoding esté instalado en el extremo de origen. Puede encontrar este complemento en el paquete de contrib de PostgreSQL. Para obtener más información acerca del complemento test-decoding consulte la documentación de PostgreSQL
. -
AWS DMS no admite cambiar el procesamiento para establecer o anular valores predeterminados de columnas (con la cláusula ALTER COLUMN SET DEFAULT en instrucciones ALTER TABLE).
-
AWS DMS no admite cambiar el procesamiento para establecer la nulabilidad de columnas (con la cláusula ALTER COLUMN [SET|DROP] NOT NULL en instrucciones ALTER TABLE).
-
Cuando la replicación lógica está habilitada, la cantidad máxima 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 se detenga y finalice la reversión. Dado que se trata de una transacción larga, puede tardar mucho tiempo en revisarse. Por lo tanto, evite las transacciones de larga ejecución cuando la replicación lógica esté habilitada. En su lugar, divide la transacción en varias transacciones más pequeñas. -
Una tabla con un tipo de datos ARRAY debe contar con una clave principal. Una tabla con un tipo de datos ARRAY a la que le falta una clave principal se suspende durante la carga completa.
-
AWS DMS no admite la replicación de las tablas con particiones. 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 fuente de PostgreSQL a un destino de PostgreSQL, primero cree manualmente las tablas principal y secundaria en el destino. A continuación, defina una tarea independiente para replicarla en esas tablas. En tal caso, defina la configuración de la tarea en Truncar antes de cargarla.
-
El tipo de datos
NUMERIC
de PostgreSQL no tiene un tamaño fijo. Cuando se transfieren datos que tienen el tipo de datosNUMERIC
pero sin precisión ni escala, DMS utilizaNUMERIC(28,6)
(con una precisión de 28 y una escala de 6) de forma predeterminada. Por ejemplo, el valor 0,611111104488373 del origen se convierte a 0,611111 en el destino de PostgreSQL. -
AWS DMSadmite Aurora PostgreSQL Serverless V1 como fuente únicamente para tareas de carga completa. AWS DMSadmite Aurora PostgreSQL Serverless V2 como fuente para tareas de carga completa, carga completa y CDC y solo de CDC.
-
AWS DMSno admite la replicación de una tabla con un índice único creado con una función de fusión.
-
Cuando se utiliza el modo LOB, 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 de las operaciones de eliminación y actualización de registros será impredecible.
-
Cuando se utiliza la función Carga en paralelo, no se admite la segmentación de tablas según particiones o subparticiones. Para obtener más información acerca de Parallel Load, consulte.Uso de la carga parallel para las tablas, vistas y colecciones seleccionadas
-
AWS DMSno admite restricciones diferidas.
-
AWS DMSla versión 3.4.7 admite PostgreSQL 14.x como fuente con las siguientes limitaciones:
-
AWS DMSno admite el procesamiento de cambios de las confirmaciones en dos fases.
-
AWS DMSno admite la replicación lógica para transmitir transacciones en curso de larga duración.
-
-
AWS DMSno admite CDC para Amazon RDS Proxy para PostgreSQL como fuente.
-
Al utilizar filtros de origen que no contengan una columna de clave principal, no se capturarán
DELETE
las operaciones. -
Si la base de datos de origen también es el destino de otro sistema de replicación de terceros, es posible que los cambios de DDL no se migren durante la CDC. Porque esa situación puede impedir que se active el desencadenador del
awsdms_intercept_ddl
evento. Para evitar esta situación, modifique ese disparador en la base de datos de origen de la siguiente manera:alter event trigger awsdms_intercept_ddl enable always;
Tipos de datos de origen para PostgreSQL
En la siguiente tabla se muestran los tipos de datos de origen de PostgreSQL compatibles cuando se utiliza AWS DMS y el mapeo predeterminado de los tipos de datos de 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 más información sobre los tipos de datos de AWS DMS, consulte Tipos de datos para elAWS Database Migration Service.
Tipos de datos de PostgreSQL |
Tipos de datos de DMS |
---|---|
INTEGER |
INT4 |
SMALLINT |
INT2 |
BIGINT |
INT8 |
NUMERIC (p,s) |
Si la precisión es de 0 a 38, utilice NUMERIC. Si la precisión es 39 o superior, utilice STRING. |
DECIMAL(P,S) |
Si la precisión es de 0 a 38, utilice NUMERIC. Si la precisión es 39 o superior, utilice STRING. |
REAL |
REAL4 |
DOUBLE |
REAL8 |
SMALLSERIAL |
INT2 |
SERIAL |
INT4 |
BIGSERIAL |
INT8 |
MONEY |
NUMERIC(38,4) El tipo de datos MONEY se asigna a FLOAT en SQL Server. |
CHAR |
WSTRING (1) |
CHAR(N) |
WSTRING (n) |
VARCHAR(N) |
WSTRING (n) |
TEXT |
NCLOB |
BYTEA |
BLOB |
TIMESTAMP |
DATETIME |
TIMESTAMP (z) |
DATETIME |
TIMESTAMP WITH TIME ZONE |
DATETIME |
DATE |
DATE |
TIME |
TIME |
TIME (z) |
TIME |
INTERVAL |
STRING (128) —1 AÑO, 2 MESES, 3 DÍAS, 4 HORAS, 5 MINUTOS, 6 SEGUNDOS |
BOOLEANO |
CHAR (5) false o true |
ENUM |
STRING (64) |
CIDR |
STRING (50) |
INET |
STRING (50) |
MACADDR |
STRING (18) |
BIT (n) |
STRING (n) |
BIT VARYING (n) |
STRING (n) |
UUID (Identificador único universal) |
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) |
Trabajando con tipos de datos fuente LOB para PostgreSQL
Los tamaños de columna de PostgreSQL afectan a la conversión de tipos de datos LOB de PostgreSQL a tipos de datos de AWS DMS. Para trabajar con esto, siga los pasos que se indican a continuación para los tipos de AWS DMS datos siguientes:
-
BLOB: establece el tamaño límite del LOB en el valor del tamaño de LOB máximo (KB) al crear la tarea.
-
CLOB: la replicación trata cada carácter como un carácter UTF8. Por lo tanto, busque la longitud del texto de caracteres más largo de la columna, que se muestra aquí como
max_num_chars_text
. Utilice esta longitud para especificar el valor de Limitar el tamaño del LOB a. Si los datos incluyen caracteres de 4 bytes, multiplique por 2 para especificar el valor Limit LOB size to (Limitar tamaño de LOB a), que está en bytes. En este caso, Limit LOB size to (Limitar tamaño de LOB 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 de caracteres más largo de la columna (
max_num_chars_text
) y multiplíquelo por 2. Esto se hace para especificar el valor de Limitar el tamaño del LOB a. En este caso, Limit LOB size to (Limitar tamaño de LOB 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, Limit LOB size to (Limitar tamaño de LOB a) es igual amax_num_chars_text
multiplicado por 4.