Utilice Data Transmission Service (DTS) para migrar datos de un clúster de PolarDB for PostgreSQL a una instancia de AnalyticDB for PostgreSQL. DTS admite la migración de esquemas, la migración completa de datos y la migración incremental de datos, lo que le ofrece la flexibilidad para ejecutar una migración por lotes única o una migración continua con tiempo de inactividad mínimo.
Elegir una estrategia de migración
Seleccione la estrategia de migración que se ajuste a su escenario antes de configurar la tarea.
|
Estrategia |
Funcionamiento |
Cuándo utilizarla |
|
Migración de esquemas + migración completa de datos |
Copia la estructura de las tablas y todos los datos existentes una sola vez, y luego se detiene |
Migración sin conexión con una ventana de mantenimiento que permita pausar las escrituras en el origen |
|
Migración de esquemas + migración completa de datos + migración incremental de datos |
Copia los datos existentes y luego replica los cambios de forma continua |
Migración en línea con tiempo de inactividad mínimo |
Si selecciona únicamente la migración completa de datos (sin migración incremental), no escriba nuevos datos en la instancia de origen durante la migración. De lo contrario, se producirá una inconsistencia de datos entre las bases de datos de origen y destino.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Una instancia de destino de AnalyticDB for PostgreSQL con más espacio en disco que la instancia de origen de PolarDB for PostgreSQL. Consulte Create an instance.
El parámetro
wal_leveldel clúster de origen de PolarDB for PostgreSQL establecido enlogical. Consulte Set cluster parameters.Una base de datos creada en la instancia de destino de AnalyticDB for PostgreSQL para recibir los datos migrados. Consulte CREATE DATABASE.
Facturación
|
Tipo de migración |
Tarifa de configuración de enlace |
Tarifa de transferencia de datos |
|
Migración de esquemas y migración completa de datos |
Gratuita |
Gratuita |
|
Migración incremental de datos |
Se aplica un cargo. Consulte Billing overview. |
— |
Permisos de cuentas de base de datos
|
Base de datos |
Permisos obligatorios |
Cómo otorgarlos |
|
Clúster de origen de PolarDB for PostgreSQL |
Cuenta con privilegios elevados |
|
|
Instancia de destino de AnalyticDB for PostgreSQL |
Permisos de lectura y escritura en la base de datos de destino, o permiso RDS_SUPERUSER |
Operaciones SQL compatibles para la migración incremental
Operaciones DML
|
Operación |
Comportamiento en el destino |
|
INSERT |
Se replica tal cual |
|
UPDATE |
Se convierte en REPLACE INTO. Si se actualiza la clave primaria, se convierte en DELETE + INSERT. |
|
DELETE |
Se replica tal cual |
Operaciones DDL
La migración DDL solo está disponible en tareas creadas después del 1 de octubre de 2020.
Para las tareas creadas antes del 12 de mayo de 2023, cree un trigger y una función en la base de datos de origen para capturar la información DDL antes de configurar la tarea. Consulte Uso de triggers y funciones para implementar la migración DDL incremental en bases de datos PostgreSQL.
Operaciones DDL compatibles (requiere una cuenta con privilegios elevados en la base de datos de origen):
CREATE TABLE y DROP TABLE
ALTER TABLE, incluyendo: RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK y ALTER COLUMN DROP DEFAULT
TRUNCATE TABLE (la versión de PostgreSQL de origen debe ser 11 o posterior)
CREATE INDEX ON TABLE
Escenarios DDL no compatibles:
Palabras clave adicionales como CASCADE o RESTRICT en sentencias DDL
Sentencias DDL en sesiones donde se ejecuta
SET session_replication_role = replicaSentencias DDL ejecutadas mediante la llamada a una FUNCTION u otros métodos
Lotes que contienen tanto sentencias DML como DDL (las DDL no se migran)
Sentencias DDL para objetos no incluidos en el alcance de la migración
Los datos de tipo bit no son compatibles durante la migración incremental de datos.
Limitaciones
Revise las siguientes limitaciones antes de configurar la tarea de migración.
Limitaciones de la base de datos de origen
Las tablas que se van a migrar deben tener una clave primaria o un índice único no nulo.
Si la base de datos de origen tiene transacciones de larga duración y la tarea incluye migración incremental, el registro de escritura anticipada (WAL) generado antes de que se confirmen dichas transacciones puede acumularse y agotar el espacio en disco de la base de datos de origen.
-
El clúster de PolarDB for PostgreSQL debe admitir y tener habilitada la función Conmutación por error de ranura de replicación lógica.
ImportanteSi el clúster de origen no admite la conmutación por error de ranura de replicación lógica (por ejemplo, si el Motor de base de datos es PostgreSQL 14), una conmutación por error de alta disponibilidad (HA) en el origen puede provocar que la tarea de migración falle y no se pueda recuperar.
No realice operaciones DDL que modifiquen la estructura de la base de datos o de las tablas durante la migración de esquemas o la migración completa de datos. De lo contrario, la tarea de migración fallará.
Un solo dato que supere los 256 MB tras un cambio incremental provocará que la tarea de migración falle y no se pueda recuperar. En este caso, vuelva a configurar la tarea de migración.
Limitaciones de alcance
Una sola tarea de migración migra únicamente una base de datos. Configure una tarea independiente para cada base de datos adicional.
DTS no admite: tablas de extensión de TimescaleDB, tablas con herencia entre esquemas ni tablas con índices únicos basados en expresiones.
Los esquemas creados al instalar complementos no se pueden migrar y no aparecen en la consola durante la configuración de la tarea.
DTS no migra los siguientes tipos de objetos: DATATYPE, SEQUENCE, INDEX, PROCEDURE, FUNCTION, VIEW, OPERATOR, DEFAULT_CONSTRAINT, UK, PK, RULE, DOMAIN, AGGREGATE, EXTENSION, FK y TRIGGER.
Las tablas de destino no admiten tablas AO (optimizadas para anexión).
En el caso de tablas particionadas, incluya tanto la tabla principal como todas sus tablas secundarias como objetos de migración. En PostgreSQL, la tabla principal no almacena datos directamente; todos los datos residen en las tablas secundarias. Omitir las tablas secundarias provoca inconsistencia en los datos.
Limitaciones de consistencia de datos
Durante la migración de esquemas, DTS migra las claves foráneas del origen al destino.
Durante la migración completa e incremental de datos, DTS deshabilita temporalmente las comprobaciones de restricciones y las operaciones en cascada de claves foráneas a nivel de sesión. Si se producen operaciones de actualización o eliminación en cascada en el origen mientras se ejecuta la tarea, puede ocurrir una inconsistencia de datos.
La migración completa de datos utiliza operaciones INSERT simultáneas, lo que causa fragmentación de tablas en el destino. Como resultado, el espacio de la tabla de destino será mayor que el del origen tras la migración completa.
Si una tabla tiene clave primaria, la columna de clave primaria en el destino debe coincidir con la del origen. Si una tabla no tiene clave primaria, la columna de clave primaria en el destino debe coincidir con la clave de distribución.
La clave única (incluida la columna de clave primaria) de la tabla de destino debe contener todas las columnas de la clave de distribución.
Si los esquemas de las tablas de origen y destino son inconsistentes, o si utiliza asignación de columnas para una migración de tabla no completa, se perderán los datos de las columnas que solo existen en el origen.
DTS valida el contenido de los datos, pero no valida metadatos como las secuencias. Valide los metadatos por separado después de la migración.
Requisitos para la migración incremental
Antes de escribir datos en la base de datos de origen para la migración incremental, ejecute el siguiente comando en cada tabla que se vaya a migrar:
ALTER TABLE schema.table REPLICA IDENTITY FULL;
Reemplace schema y table con el nombre real del esquema y de la tabla. Ejecute este comando fuera de las horas pico y evite operaciones de bloqueo de tablas durante su ejecución.
Ejecute este comando en los siguientes escenarios:
Cuando la tarea de migración se ejecuta por primera vez.
Cuando el objeto de migración es un esquema y se crea una nueva tabla en dicho esquema, o cuando se reconstruye una tabla existente mediante RENAME.
Si omite el elemento de precomprobación relacionado, DTS ejecuta automáticamente este comando durante la inicialización de la instancia.
Manejo de secuencias posteriores a la migración
Después de cambiar su negocio a la instancia de destino, las secuencias no comenzarán automáticamente desde el valor máximo de las secuencias correspondientes en el origen. Antes del cambio, consulte los valores máximos de las secuencias en la base de datos de origen y establézcalos como valores iniciales en el destino.
Ejecute el siguiente comando en la base de datos de origen para obtener todos los valores de las secuencias:
do language plpgsql $$
declare
nsp name;
rel name;
val int8;
begin
for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
loop
execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
raise notice '%',
format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
end loop;
end;
$$;
La salida contiene sentencias SET para todas las secuencias de la base de datos de origen. Ejecute únicamente las sentencias relevantes para su migración en la base de datos de destino.
Gestión de ranuras de replicación
Durante la migración incremental, DTS crea una ranura de replicación con el prefijo dts_sync_ en la base de datos de origen para replicar los registros incrementales de los últimos 15 minutos. Cuando una tarea de migración falla o se libera la instancia, DTS intenta limpiar la ranura de replicación automáticamente.
Se requiere una limpieza manual en los siguientes casos:
Cambió la contraseña de la cuenta de la base de datos de origen durante la migración.
Eliminó la dirección IP de DTS de la lista blanca de direcciones IP de la base de datos de origen durante la migración.
Se produjo una conmutación por error en la base de datos de origen; inicie sesión en la base de datos secundaria para limpiar la ranura manualmente.
Si la ranura de replicación no se limpia, acumulará y consumirá espacio en disco continuamente, lo que puede dejar la base de datos de origen no disponible.
Tablas temporales
DTS crea las siguientes tablas temporales en la base de datos de origen para obtener sentencias DDL, información sobre la estructura incremental de tablas y datos de latido. No elimine estas tablas durante la migración, ya que se borran automáticamente después de liberar la instancia de DTS.
public.dts_pg_class, public.dts_pg_attribute, public.dts_pg_type, public.dts_pg_enum, public.dts_postgres_heartbeat, public.dts_ddl_command, public.dts_args_session y public.aliyun_dts_instance
Configurar una tarea de migración
Paso 1: Abrir la lista de tareas de migración
Abra la lista de tareas de migración mediante uno de los siguientes métodos.
Desde la consola de DTS:
Inicie sesión en la consola de DTS.
En el panel de navegación izquierdo, haga clic en Data Migration.
En la esquina superior izquierda, seleccione la región donde se encuentra la instancia de migración.
Desde la consola de DMS:
Los pasos reales pueden variar según el modo y el diseño de su consola de DMS. Consulte Consola en modo simple y Personalizar el diseño y estilo de la consola de DMS .
Inicie sesión en la consola de DMS.
En la barra de menú superior, elija Data + AI > Data Transmission (DTS) > Data Migration.
A la derecha de Data Migration Tasks, seleccione la región donde se encuentra la instancia de migración.
Paso 2: Configurar las bases de datos de origen y destino
Configure los siguientes ajustes en la página de conexión de las bases de datos de origen y destino.
| Categoría | Parámetro | Valor o descripción |
|---|---|---|
| — | Task Name | DTS genera un nombre automáticamente. Introduzca un nombre descriptivo para facilitar su identificación. El nombre no necesita ser único. |
| Source Database | Select Existing Connection | Seleccione una instancia de base de datos ya registrada en el sistema de la lista desplegable para rellenar automáticamente los campos de conexión. Si la instancia no está registrada, rellene los campos manualmente. En la consola de DMS, este campo se denomina Select a DMS database instance. |
| Database Type | PolarDB for PostgreSQL | |
| Access Method | Alibaba Cloud Instance | |
| Instance Region | Región donde reside el clúster de origen de PolarDB for PostgreSQL | |
| Replicate Data Across Alibaba Cloud Accounts | No (migración dentro de la misma cuenta) | |
| Instance ID | ID del clúster de origen de PolarDB for PostgreSQL | |
| Database Name | Nombre de la base de datos que contiene los objetos a migrar | |
| Database Account | Cuenta del clúster de origen de PolarDB for PostgreSQL. Consulte Database account permissions. | |
| Database Password | Contraseña de la cuenta de la base de datos | |
| Destination Database | Select Existing Connection | Seleccione una instancia de base de datos registrada o rellene los campos manualmente. En la consola de DMS, este campo se denomina Select a DMS database instance. |
| Database Type | AnalyticDB for PostgreSQL | |
| Access Method | Alibaba Cloud Instance | |
| Instance Region | Región donde reside la instancia de destino de AnalyticDB for PostgreSQL | |
| Instance ID | ID de la instancia de destino de AnalyticDB for PostgreSQL | |
| Database Name | Nombre de la base de datos en la instancia de destino que recibirá los datos migrados | |
| Database Account | Cuenta de la instancia de destino de AnalyticDB for PostgreSQL. Consulte Database account permissions. | |
| Database Password | Contraseña de la cuenta de la base de datos |
Después de completar la configuración, haga clic en Test Connectivity and Proceed en la parte inferior de la página.
Asegúrese de que los rangos de direcciones IP del servicio DTS estén agregados a la configuración de seguridad (lista blanca) tanto de la base de datos de origen como de la de destino. Consulte Agregar direcciones IP de servidores DTS a una lista blanca .
Paso 3: Configurar objetos de migración
En la página Configure Objects, establezca los siguientes parámetros.
|
Parámetro |
Descripción |
|
Migration Types |
Seleccione los tipos de migración adecuados para su escenario. Consulte Elegir una estrategia de migración. Si no selecciona Schema Migration, asegúrese de que el destino ya cuente con la base de datos y las tablas objetivo. |
|
DDL and DML Operations to Be Synchronized |
Seleccione las operaciones SQL para la migración incremental a nivel de instancia. Para configurarlas a nivel de tabla, haga clic derecho sobre un objeto de migración en el cuadro Selected Objects y seleccione las operaciones en el cuadro de diálogo. Consulte Supported SQL operations for incremental migration. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: Comprueba si existen tablas con el mismo nombre en el destino. Reporta un error y detiene la tarea si encuentra un conflicto. Para resolver conflictos de nombres sin eliminar la tabla de destino, utilice la asignación de nombres de objetos. Ignore Errors and Proceed: Omite la comprobación de conflictos. Durante la migración completa, se conservan los registros existentes en el destino. Durante la migración incremental, los registros del origen sobrescriben los del destino. Si los esquemas de las tablas son inconsistentes, la migración puede fallar o resultar en datos parciales. Utilícelo con precaución. |
|
Storage Engine Type |
Motor de almacenamiento para las tablas de destino. Predeterminado: Beam. Disponible solo cuando la versión del kernel de AnalyticDB for PostgreSQL de destino es v7.0.6.6 o posterior y se ha seleccionado Schema Migration. |
|
Capitalization of Object Names in Destination Instance |
Política de distinción entre mayúsculas y minúsculas para los nombres de objetos migrados (bases de datos, tablas, columnas). Predeterminado: DTS default policy. Consulte Distinción entre mayúsculas y minúsculas de nombres de objetos en la base de datos de destino. |
|
Source Objects |
Haga clic en los objetos a migrar en el cuadro Source Objects y luego en la flecha derecha para moverlos al cuadro Selected Objects. Los objetos de migración se seleccionan a nivel de tabla. |
|
Selected Objects |
Para cambiar el nombre de un solo objeto en el destino, haga clic derecho sobre él en el cuadro Selected Objects. Consulte Asignación individual de columnas de tabla. Para cambiar el nombre de varios objetos a la vez, haga clic en Batch Edit en la esquina superior derecha. Consulte Asignar varios nombres de objetos a la vez. Para filtrar filas con una cláusula WHERE, haga clic derecho en la tabla y establezca la condición. Consulte Set a filter condition. |
El uso de la asignación de nombres de objetos puede provocar que la migración falle para otros objetos que dependan del objeto renombrado.
Paso 4: Configurar ajustes avanzados
Haga clic en Next: Advanced Settings para configurar los siguientes parámetros.
| Parámetro | Descripción |
|---|---|
| Dedicated Cluster for Task Scheduling | De forma predeterminada, DTS programa las tareas en un clúster compartido. Para obtener un rendimiento más estable, adquiera un clúster dedicado para ejecutar tareas de migración. |
| Retry Time for Failed Connections | Tiempo durante el cual DTS reintenta la conexión si la base de datos de origen o destino resulta inaccesible después de iniciar la tarea. Valor predeterminado: 720 minutos. Rango: 10–1440 minutos. Establézcalo en más de 30 minutos. Si DTS se reconecta dentro del periodo de reintento, la tarea se reanudará automáticamente; de lo contrario, la tarea fallará. Nota
Para varias instancias de DTS que comparten el mismo origen o destino, el tiempo de reintento lo determina la tarea creada más recientemente. Se aplican cargos durante el periodo de reintento. |
| Retry Time for Other Issues | Tiempo durante el cual DTS reintenta la operación si ocurre un error distinto a problemas de conectividad (como una excepción DDL o DML). Valor predeterminado: 10 minutos. Rango: 1–1440 minutos. Establézcalo en más de 10 minutos. Debe ser menor que Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limite la carga de lectura/escritura en el origen y el destino durante la migración completa estableciendo Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s). Disponible solo cuando se selecciona Full Data Migration. La limitación también se puede ajustar después de iniciar la tarea. |
| Enable Throttling for Incremental Data Migration | Limite la carga durante la migración incremental estableciendo RPS of Incremental Data Migration y Data migration speed for incremental migration (MB/s). Disponible solo cuando se selecciona Incremental Data Migration. La limitación también se puede ajustar después de iniciar la tarea. |
| Environment Tag | Etiquete la instancia con una etiqueta de entorno para su identificación. Opcional. |
| Configure ETL | Habilite el procesamiento de extracción, transformación y carga (ETL). Seleccione Yes para introducir sentencias de procesamiento de datos en el editor de código. Consulte Configurar ETL en una tarea de migración o sincronización de datos. Seleccione No para omitirlo. Consulte ¿Qué es ETL? |
| Monitoring and Alerting | Seleccione Yes para configurar un umbral de alerta y los destinatarios de notificaciones. DTS envía alertas si una migración falla o si la latencia supera el umbral. Seleccione No para omitirlo. |
Paso 5: Configurar la validación de datos
Haga clic en Next: Data Validation para configurar una tarea de validación de datos. Consulte Configurar validación de datos.
Paso 6: Configurar campos de tablas de destino (opcional)
Haga clic en Next: Configure Database and Table Fields para establecer el Type, la Primary Key Column y la Distribution Key para las tablas de destino en AnalyticDB for PostgreSQL.
Este paso solo está disponible cuando se selecciona Schema Migration. Establezca Definition Status en All para ver y editar todas las tablas.
Primary Key Column: Seleccione una o más columnas. Varias columnas forman una clave primaria compuesta.
Distribution Key: Seleccione una o más columnas de la Primary Key Column. Consulte Manage data tables y Define table distribution.
Paso 7: Guardar la configuración y ejecutar una precomprobación
Haga clic en Next: Save Task Settings and Precheck.
Para obtener una vista previa de los parámetros de API de esta configuración, pase el cursor sobre el botón Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .
Antes de que comience la tarea de migración, DTS realiza una precomprobación. La tarea solo se inicia después de superar dicha precomprobación.
Si la precomprobación falla, haga clic en View Details junto al elemento fallido, solucione el problema y haga clic en Precheck Again.
Si aparece una advertencia:
Para advertencias que no se pueden ignorar, solucione el problema subyacente y vuelva a ejecutar la precomprobación.
Para advertencias que se pueden ignorar, haga clic en Confirm Alert Details > Ignore > OK > Precheck Again para continuar. Ignorar advertencias puede causar inconsistencia en los datos.
Paso 8: Adquirir la instancia
Cuando la Success Rate alcance el 100 %, haga clic en Next: Purchase Instance.
-
En la página Purchase, configure los siguientes parámetros.
Parámetro
Descripción
Resource Group Settings
Resource group para la instancia. Predeterminado: resource group predeterminado. Consulte ¿Qué es Resource Management?
Instance Class
Especificación del enlace de migración que determina la velocidad de migración. Consulte Especificaciones de enlaces de migración de datos.
Lea y seleccione Data Transmission Service (Pay-as-you-go) Service Terms.
Haga clic en Buy and Start y luego en OK en el cuadro de diálogo de confirmación.
Verificar el estado de la migración
Después de iniciar la tarea, supervise su progreso en la página de lista de Data Migration Tasks.
Solo migración completa: La tarea se detiene automáticamente cuando finaliza la migración completa. El Status cambia a Completed.
Incluye migración incremental: La tarea continúa ejecutándose después de la migración completa. El Status muestra Running durante la migración incremental.
Antes de cambiar su negocio a la instancia de destino:
Compruebe que los datos sean consistentes entre el origen y el destino.
Valide manualmente las secuencias y otros metadatos, ya que DTS no valida metadatos.
Finalice o libere la tarea de DTS, o utilice el comando
REVOKEpara revocar los permisos de escritura de DTS en el destino. Esto evita que la recuperación automática de DTS (que se ejecuta hasta por 7 días) sobrescriba los datos de destino.
Si la tarea falla, el soporte técnico de DTS intentará recuperarla en un plazo de 8 horas. Durante la recuperación, la tarea podría reiniciarse o ajustarse sus parámetros. Solo se modifican los parámetros de la tarea de DTS; los parámetros de la base de datos permanecen sin cambios. Consulte Modify instance parameters .
Pasos siguientes
Asignación de nombres de objetos — Cambiar el nombre de objetos durante la migración
Habilitar limitación para la migración de datos — Ajustar la velocidad de migración después de iniciar la tarea
Configurar validación de datos — Verificar la consistencia de datos entre origen y destino
Billing overview — Comprender los precios de DTS