Data Transmission Service (DTS) admite la migración de datos desde bases de datos PostgreSQL, como bases de datos PostgreSQL autogestionadas o instancias ApsaraDB RDS for PostgreSQL, hacia ApsaraDB for SelectDB para análisis de datos a gran escala. Este tema le guía a través del flujo de trabajo de migración completo, que incluye migración de esquema, migración de datos completa y migración de datos incremental opcional.
Requisitos previos
Antes de empezar, asegúrese de contar con:
Una instancia ApsaraDB for SelectDB de destino con más espacio de almacenamiento que la instancia RDS PostgreSQL de origen. Consulte Create an instance.
Una cuenta de base de datos privilegiada en la instancia RDS PostgreSQL de origen que sea propietaria de la base de datos que se migrará. Consulte Create an account y Create a database.
Una cuenta de base de datos en la instancia SelectDB de destino con los permisos que se indican a continuación: Usage_priv, Select_priv, Load_priv, Alter_priv, Create_priv y Drop_priv. Consulte Cluster Permission Management y Basic Permission Management.
Elija un tipo de migración
DTS admite dos estrategias de migración. Siga las recomendaciones a continuación para elegir la adecuada antes de configurar la tarea.
|
Tipo de migración |
Cuándo usarlo |
Facturación |
|
Migración de esquema + migración de datos completa |
Migración única con tiempo de inactividad aceptable. Detenga las escrituras en el origen antes de migrar. |
Gratuita |
|
Migración de esquema + migración completa + migración incremental |
Migración sin tiempo de inactividad. DTS mantiene el destino sincronizado mientras el origen continúa recibiendo escrituras. |
La migración incremental tiene costo. Consulte Billing overview. |
En caso de que seleccione la migración de datos incremental, no escriba nuevos datos en la instancia de origen durante el periodo de migración, ya que esto puede provocar inconsistencia de datos.
Límites
Revise todas las limitaciones aplicables a su escenario antes de empezar.
Requisitos de la base de datos de origen
Ancho de banda: El servidor que aloja la base de datos de origen debe contar con ancho de banda saliente suficiente. De lo contrario, la velocidad de migración de datos se ve afectada.
-
Tablas con claves principales o restricciones UNIQUE: Asegúrese de que los campos de la tabla sean únicos. De lo contrario, pueden existir datos duplicados en la base de datos de destino.
Si DTS no creó la tabla de destino que recibe los datos (es decir, no se seleccionó Schema Migration ), asegúrese de que la tabla de destino tenga la misma clave principal o restricción UNIQUE no nula que la tabla de origen. De lo contrario, pueden aparecer datos duplicados en la base de datos de destino.
Tablas sin clave principal ni restricción UNIQUE: Seleccione Schema Migration al configurar la tarea y establezca el motor de tabla en duplicate.
Nombre de la base de datos: El nombre de la base de datos no puede contener un guion (-). Por ejemplo,
dts-testdatano es compatible.Cantidad de tablas: Cuando se migra a nivel de tabla con asignación de nombres de columnas, una sola tarea admite un máximo de 1,000 tablas. Para migraciones más grandes, divida las tablas en varias tareas o migre toda la base de datos.
Operaciones DDL: No ejecute operaciones DDL en la base de datos de origen durante la migración de datos completa.
Tamaño de datos: Si una sola fila de datos de cambio incremental excede 256 MB, la instancia de migración falla y no se puede recuperar. Debe reconfigurar la instancia de migración.
-
Write-Ahead Logging (WAL):
Establezca
wal_levelenlogical.Para migración solo incremental: conserve los registros WAL durante más de 24 horas.
Para migración completa + incremental: conserve los registros WAL durante 7 días como mínimo. Puede cambiar el periodo de retención de registros a más de 24 horas después de que se complete la migración completa.
ImportanteSi la retención de registros WAL es menor que la requerida por DTS y la tarea falla por falta de registros, esto no está cubierto por el Acuerdo de Nivel de Servicio (SLA) de DTS.
Failover de slot de replicación lógica: La instancia RDS PostgreSQL debe admitir y tener habilitado el failover de slot de replicación lógica. Consulte Failover de slot de replicación lógica.
Transacciones de larga duración: Si la base de datos de origen tiene transacciones de larga duración y la tarea incluye migración incremental, los datos WAL se acumulan hasta que se confirma la transacción. Monitoree el espacio en disco del origen para evitar que se agote.
Actualizaciones de versión principal: No actualice la versión principal de la base de datos de origen mientras la instancia de migración está en ejecución. Si lo hace, la instancia falla permanentemente.
Requisitos de SelectDB de destino
Las tablas deben usar el motor Unique o Duplicate. Consulte Data Model para obtener orientación.
Si la tabla de destino usa el motor Unique, todas las claves únicas de la tabla de destino también deben existir en la tabla de origen y estar incluidas en los objetos de migración.
Los nombres de bases de datos y tablas deben comenzar con una letra. Use la función de asignación de nombres de objetos para cambiar el nombre de los objetos que no cumplan este requisito.
Los nombres de objetos que contengan caracteres chinos deben cambiarse a equivalentes ASCII mediante la asignación de nombres de objetos. De lo contrario, la tarea puede fallar.
Una instancia de migración solo puede migrar una base de datos. Para migrar varias bases de datos, configure una instancia de migración independiente para cada una.
No agregue nodos de backend (BE) a la base de datos SelectDB durante la migración. Si la tarea falla por este motivo, reinicie la instancia de migración para reanudarla.
No cree clústeres en la instancia SelectDB de destino durante la migración. Si la tarea falla por este motivo, reinicie la instancia de migración para reanudarla.
DTS valida el contenido de datos, pero no valida metadatos como Sequences. Valide estos metadatos manualmente.
Requisitos de la migración incremental
-
Ejecute el siguiente comando en cada tabla que se migrará antes de escribir datos en el origen:
ALTER TABLE schema.table REPLICA IDENTITY FULL;Reemplace
schemaytablepor el nombre real del esquema y el nombre real de la tabla. Ejecute este comando durante horas de baja actividad y no bloquee las tablas mientras lo ejecuta para evitar interbloqueos.Si omite el elemento de verificación previa relacionado, DTS ejecuta automáticamente este comando durante la inicialización de la instancia. Esto aplica cuando la instancia se ejecuta por primera vez, o cuando la granularidad del objeto de migración se establece en Schema y se crea una tabla nueva o se reconstruye una tabla existente con el comando RENAME.
-
Las operaciones SQL compatibles con la migración incremental son:
Tipo de operación
Instrucciones SQL
DML
INSERT, UPDATE, DELETE
DDL
ADD COLUMN, DROP COLUMN
DTS convierte las instrucciones UPDATE y DELETE en instrucciones INSERT para las tablas que usan el motor Duplicate.
DTS no puede migrar tablas de la extensión TimescaleDB ni tablas con herencia entre esquemas.
Al migrar tablas particionadas, incluya la tabla principal y todas las tablas secundarias en los objetos de migración. La tabla principal no almacena datos, pero excluirla provoca inconsistencia de datos.
Para escenarios de combinación de varias tablas (varias tablas de origen en una tabla de destino), todas las tablas de origen deben tener esquemas idénticos.
Casos especiales
|
Escenario |
Requisito |
|
El origen es ApsaraDB RDS for PostgreSQL |
No cambie el endpoint ni la zona de la instancia durante la migración. |
|
El origen es una instancia PostgreSQL autogestionada |
Una conmutación principal/secundario provoca el fallo de la tarea de migración de datos. Además, asegúrese de que |
|
El origen es Google Cloud Platform Cloud SQL for PostgreSQL |
Use una cuenta con permisos de |
Comportamiento interno de DTS
Durante la migración, DTS crea los siguientes objetos en la base de datos de origen. No los elimine: se quitan automáticamente cuando se libera la instancia DTS:
Tablas temporales:
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,public.aliyun_dts_instance-
Slot de replicación (prefijo:
dts_sync_): Se usa para obtener registros incrementales de los últimos 15 minutos. DTS limpia este slot cuando la migración falla o se libera la instancia.Si cambia la contraseña de la cuenta de la base de datos de origen o quita direcciones IP de DTS de la lista de permitidos durante la migración, el slot de replicación no se puede limpiar automáticamente. Limpie el slot manualmente para evitar la acumulación en disco. Si se produce un failover principal/secundario, inicie sesión en la base de datos secundaria para limpiarlo.
Cree una tarea de migración
Paso 1: Vaya a la página Data Migration
Use una de las consolas que se indican a continuación para acceder a la página Data Migration.
DTS console
Inicie sesión en DTS console
En el panel de navegación izquierdo, haga clic en Data Migration.
En la esquina superior izquierda, seleccione la región donde residirá la instancia de migración.
DMS console
Nota
Los pasos reales pueden variar según el modo y el diseño de la consola DMS. Consulte Modo simple y Personalizar el diseño y el estilo de la consola DMS.
Inicie sesión en DMS console
En la barra de navegación superior, mueva el puntero sobre Data + AI > DTS (DTS) > Data Migration.
En la lista desplegable situada a la derecha de Data Migration Tasks, seleccione la región donde residirá la instancia de migración.
Paso 2: Configure las bases de datos de origen y destino
Haga clic en Create Task para abrir la página de configuración de la tarea y configure los parámetros que se indican a continuación.
Nombre de la tarea
|
Parámetro |
Descripción |
|
Task Name |
DTS genera un nombre automáticamente. Especifique un nombre descriptivo para identificar la tarea. El nombre no tiene que ser único. |
Base de datos de origen
|
Parámetro |
Descripción |
|
Select Existing Connection |
Si la instancia de origen ya está registrada en DTS, selecciónela de la lista. DTS completa automáticamente los parámetros restantes. De lo contrario, configure los parámetros que se indican a continuación. |
|
Database Type |
Seleccione PostgreSQL. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
Seleccione la región donde reside la instancia RDS PostgreSQL de origen. |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No si las instancias de origen y destino pertenecen a la misma cuenta de Alibaba Cloud. |
|
Instance ID |
Seleccione el ID de la instancia RDS PostgreSQL de origen. |
|
Database Name |
Introduzca el nombre de la base de datos que contiene los objetos que se migrarán. |
|
Database Account |
Introduzca la cuenta de base de datos de la instancia de origen. Consulte Requisitos previos para conocer los permisos obligatorios. |
|
Database Password |
Introduzca la contraseña de la cuenta de base de datos. |
Base de datos de destino
|
Parámetro |
Descripción |
|
Select Existing Connection |
Si la instancia de destino ya está registrada en DTS, selecciónela de la lista. DTS completa automáticamente los parámetros restantes. De lo contrario, configure los parámetros que se indican a continuación. |
|
Database Type |
Seleccione SelectDB. |
|
Access Method |
Seleccione Alibaba Cloud Instance. |
|
Instance Region |
Seleccione la región donde reside la instancia SelectDB de destino. |
|
Replicate Data Across Alibaba Cloud Accounts |
Seleccione No si ambas instancias pertenecen a la misma cuenta de Alibaba Cloud. |
|
Instance ID |
Seleccione el ID de la instancia SelectDB de destino. |
|
Database Account |
Introduzca la cuenta de base de datos de la instancia de destino. Consulte Requisitos previos para conocer los permisos obligatorios. |
|
Database Password |
Introduzca la contraseña de la cuenta de base de datos. |
Paso 3: Pruebe la conectividad y configure los objetos
-
Haga clic en Test Connectivity and Proceed.
Asegúrese de que los bloques CIDR de los servidores DTS estén agregados a la configuración de seguridad de las bases de datos de origen y destino. Consulte Agregar direcciones IP de servidores DTS a una lista de permitidos .
-
En la página Configure Objects, establezca los parámetros que se indican a continuación:
Parámetro
Descripción
Migration Types
Seleccione según su estrategia de migración. Consulte Elija un tipo de migración. Para una migración sin tiempo de inactividad, seleccione Schema Migration, Full Data Migration e Incremental Data Migration. Para una migración única, seleccione Schema Migration y Full Data Migration.
Processing Mode of Conflicting Tables
Precheck and Report Errors (predeterminado): la tarea falla durante la verificación previa si existen tablas con el mismo nombre en el destino. Ignore Errors and Proceed: DTS omite la comprobación. Úselo con precaución; puede haber inconsistencia de datos si los esquemas difieren.
Capitalization of Object Names in Destination Instance
Determina cómo se escriben en mayúsculas los nombres de bases de datos, tablas y columnas en el destino. DTS default policy está seleccionada de forma predeterminada. Consulte Especificar el uso de mayúsculas de los nombres de objetos en la instancia de destino.
Source Objects
Seleccione los objetos que se migrarán a nivel de esquema o tabla y haga clic en el icono para agregarlos a Selected Objects.
Selected Objects
Haga clic derecho en un objeto para renombrarlo, establecer condiciones de filtrado o seleccionar operaciones SQL para la migración incremental. Para establecer el parámetro
bucket_count, haga clic derecho en una tabla, vaya a Parameter Settings, habilite la configuración y especifique un valor. Para quitar un objeto, haga clic en él y luego haga clic en el icono de quitar.- El parámetro
bucket_countdebe ser un entero positivo. El valor predeterminado es auto . - Si cambia el nombre de un objeto mediante la asignación de nombres de objetos, otros objetos que dependen de él pueden fallar al migrar. - Para filtrar filas, haga clic derecho en una tabla en Selected Objects y especifique condiciones WHERE. Consulte Especificar condiciones de filtrado . -
Haga clic en Next: Advanced Settings y configure los parámetros opcionales que se indican a continuación:
Parámetro
Descripción
Dedicated Cluster for Task Scheduling
De forma predeterminada, las tareas se ejecutan en el clúster compartido. Para mayor estabilidad, adquiera un clúster dedicado. Consulte Qué es un clúster dedicado de DTS.
Retry Time for Failed Connections
Cuánto tiempo reintenta DTS antes de marcar la tarea como con errores debido a problemas de conexión. Rango: 10–1,440 minutos. Predeterminado: 720 minutos. Establézcalo en 30 minutos como mínimo.
Retry Time for Other Issues
Cuánto tiempo reintenta DTS antes de fallar debido a errores de DDL o DML. Rango: 1–1,440 minutos. Predeterminado: 10 minutos. Debe ser menor que Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Limita el throughput de lectura/escritura durante la migración completa para reducir la carga de la base de datos. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration y Data migration speed for full migration (MB/s).
Enable Throttling for Incremental Data Migration
Limita el throughput durante la migración incremental. Configure RPS of Incremental Data Migration y Data migration speed for incremental migration (MB/s).
Environment Tag
Opcional. Etiquete la instancia para identificar el entorno.
Configure ETL
Seleccione Yes y configure las notificaciones de alerta para habilitar la función de extracción, transformación y carga (ETL). Consulte Configurar ETL en una tarea de migración de datos o sincronización de datos.
Monitoring and Alerting
Seleccione Yes para recibir alertas cuando la tarea falle o la latencia de migración supere un umbral. Consulte Configurar monitoreo y alertas.
-
(Opcional) Haga clic en Next: Configure Database and Table Fields para establecer Primary Key Column, Distribution Key y Engine para las tablas de destino.
- Este paso está disponible solo si seleccionó Schema Migration en Migration Types . Establezca Definition Status en All para editar todas las tablas. - La Primary Key Column puede ser una clave principal compuesta. Seleccione una o más columnas de la Primary Key Column como Distribution Key . - Para tablas sin clave principal ni restricción UNIQUE, establezca Engine en duplicate . De lo contrario, la instancia de migración puede fallar o se pueden perder datos.
Paso 4: Ejecute la verificación previa
-
Haga clic en Next: Save Task Settings and Precheck.
Para obtener una vista previa de los parámetros de API para esta configuración de tarea, mueva el puntero sobre Next: Save Task Settings and Precheck y haga clic en Preview OpenAPI parameters .
-
Espere a que se complete la verificación previa. Si algún elemento falla:
Haga clic en View Details junto a cada elemento con errores, resuelva el problema y luego haga clic en Precheck Again.
Para elementos de alerta que se pueden ignorar, haga clic en Confirm Alert Details, luego haga clic en Ignore > OK > Precheck Again.
ImportanteIgnorar elementos de alerta puede provocar inconsistencia de datos. Proceda con precaución.
Paso 5: Adquiera la instancia e inicie la migración
Espere hasta que Success Rate alcance 100% y luego haga clic en Next: Purchase Instance.
-
En la página Purchase Instance, configure la clase de instancia:
Parámetro
Descripción
Resource Group
El resource group de la instancia de migración. Predeterminado: default resource group. Consulte What is Resource Management?
Instance Class
Controla la velocidad de migración. Consulte Clases de instancias de migración de datos.
Lea y acepte Data Transmission Service (Pay-as-you-go) Service Terms, luego haga clic en Buy and Start > OK.
Compruebe el estado de la migración
Después de que se inicie la tarea, vaya a la página Data Migration para monitorear el progreso:
Solo migración completa: la tarea se detiene automáticamente al completarse. El Status cambia a Completed.
Migración completa + incremental: la fase incremental se ejecuta continuamente. El Status muestra Running. Detenga la tarea manualmente cuando esté listo para cambiar al destino.
Consideraciones de rendimiento
Durante la migración completa, ejecute la tarea cuando la carga de CPU en el origen y el destino sea inferior al 30%.
-
DTS usa sincronización por lotes para la migración incremental. De forma predeterminada, DTS escribe en cada objeto una vez como máximo cada 5 segundos, lo que genera una latencia de sincronización típica menor de 10 segundos. Para reducir la latencia, ajuste el parámetro
selectdb.reservoir.timeout.millisecondsen la consola DTS. Rango válido: 1,000–10,000 milisegundos.Reducir el intervalo por lotes aumenta la frecuencia de escritura en el destino, lo que puede incrementar la carga del destino y el tiempo de respuesta de escritura. Ajuste según la capacidad del destino.
Si la instancia de migración falla, el soporte de DTS intenta recuperarla en un plazo de 8 horas. La recuperación puede implicar reiniciar la instancia o ajustar sus parámetros. Solo se modifican los parámetros de la instancia DTS; los parámetros de la base de datos no se cambian.
Asignaciones de tipos de datos
La siguiente tabla muestra cómo se asignan los tipos de datos de PostgreSQL a los tipos de datos de SelectDB después de la migración.
| Categoría | Tipo de dato de PostgreSQL | Tipo de dato de SelectDB | Notas |
|---|---|---|---|
| Numérico | SMALLINT | SMALLINT | |
| INTEGER | INT | ||
| BIGINT | BIGINT | ||
| DECIMAL | DECIMAL | ||
| NUMERIC | DECIMAL | ||
| REAL | DOUBLE | ||
| DOUBLE | DOUBLE | ||
| SMALLSERIAL | SMALLINT | ||
| SERIAL | INT | ||
| BIGSERIAL | BIGINT | ||
| Monetario | MONEY | STRING | |
| Carácter | CHAR(n), VARCHAR(n) | VARCHAR | Se convierte a VARCHAR(4*n) para evitar la pérdida de datos. Si no se especifica una longitud, el valor predeterminado es VARCHAR(65533). Si la longitud excede 65533, se convierte a STRING. |
| TEXT | STRING | ||
| Binario | BYTEA | STRING | |
| Fecha y hora | TIMESTAMP [(P)] WITHOUT TIME ZONE | DATETIMEV2 | |
| TIMESTAMP [(P)] WITH TIME ZONE | DATETIMEV2 | ||
| DATE | DATEV2 | ||
| TIME [(P)] WITHOUT TIME ZONE | VARCHAR(50) | ||
| TIME [(P)] WITH TIME ZONE | VARCHAR(50) | ||
| INTERVAL [FIELDS] [(P)] | STRING | ||
| Booleano | BOOLEAN | BOOLEAN | |
| Geométrico | POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE | STRING | |
| Dirección de red | CIDR, INET, MACADDR, MACADDR8 | STRING | |
| Búsqueda de texto | TSVECTOR | STRING | |
| XML | XML | STRING | |
| JSON | JSON | JSON |
Columnas adicionales para el modelo Duplicate
Para las tablas de destino que usan el modelo Duplicate, DTS agrega automáticamente las siguientes columnas. Use estas columnas para identificar y quitar datos duplicados después de reintentos o reinicios.
|
Columna |
Tipo de dato |
Valor predeterminado |
Descripción |
|
|
Int |
0 |
|
|
|
Bigint |
0 |
|
|
|
Bigint |
0 |
|
Pueden aparecer datos duplicados en los siguientes casos:
Se produjo una operación de reintento en la instancia de migración.
Se reinició la instancia de migración.
Se ejecutaron dos o más operaciones DML en la misma fila después de iniciar la migración.
Para las tablas que usan el motor Duplicate, DTS convierte las instrucciones UPDATE y DELETE en instrucciones INSERT.
Pasos siguientes
Para asignar nombres de objetos entre el origen y el destino, consulte Asignar nombres de objetos.
Para gestionar conexiones de bases de datos registradas en DTS, consulte Gestionar conexiones de bases de datos.
Para modificar los parámetros de la instancia después de que se inicie la tarea, consulte Modificar parámetros de la instancia.