Encuentre soluciones a los problemas comunes de Data Transmission Service (DTS) por categoría o busque códigos de error específicos en Common errors.
Categorías de problemas
Los problemas comunes se dividen en las siguientes categorías:
-
Para obtener más información sobre la comprobación previa, consulte Elementos de comprobación previa y métodos para corregir errores.
Problemas de facturación
¿Cómo se factura DTS?
DTS admite los modelos de facturación subscription y pay-as-you-go. Billing overview.
¿Cómo consulto las facturas de DTS?
Para consultar las facturas de DTS, vea View bills.
¿Se cobran las instancias pausadas?
Las instancias de migración de datos pausadas no generan cargos.
Durante la suspensión de una instancia de sincronización de datos, los cargos continúan aplicándose sin importar si la base de datos de origen o de destino está accesible. Esto ocurre porque, en ese periodo, DTS solo pausa la escritura de datos en la base de datos de destino. Sin embargo, sigue consumiendo recursos como CPU y memoria para mantener conexiones persistentes con la base de datos y extraer registros de la base de datos de origen. De esta forma, la instancia se reanuda rápidamente después de reiniciarse.
¿Por qué la sincronización de datos es más costosa que la migración de datos?
La sincronización de datos admite funciones más avanzadas, como modificar objetos de sincronización en línea y la sincronización bidireccional entre bases de datos MySQL. Además, utiliza transmisión por red interna para reducir la latencia.
¿Qué consecuencias tienen los pagos vencidos?
Consulte Expiration or overdue payments.
¿Cómo libero una tarea de subscription antes de tiempo?
Cambie primero el método de facturación a pay-as-you-go y luego libere la tarea. Switch between billing methods.
¿Puedo cambiar el método de facturación de una tarea de subscription a pay-as-you-go?
¿Puedo cambiar el método de facturación de una tarea de pay-as-you-go a subscription?
Sí, es posible hacerlo para tareas de sincronización de datos o de seguimiento de cambios. Switch between billing methods.
Las tareas de migración de datos solo admiten el método de facturación pay-as-you-go.
¿Por qué mi tarea de DTS comenzó a generar cargos de repente?
Es posible que haya expirado el periodo de prueba gratuita de la instancia. DTS ofrece pruebas gratuitas para tareas cuyo destino es un motor de base de datos desarrollado por Alibaba Cloud. Una vez que expira la prueba, se aplica la facturación estándar.
¿Por qué me siguen cobrando por una tarea que ya liberé?
Las facturas de DTS con modelo pay-as-you-go se generan diariamente. Se le cobra el día en que libera la tarea, ya que utilizó el servicio de DTS durante esa jornada.
¿Cómo funciona la facturación pay-as-you-go?
Una tarea pay-as-you-go solo genera cargos mientras se ejecuta. Este periodo incluye el tiempo en que una tarea de Incremental Data Synchronization está pausada, pero no incluye el tiempo en que una tarea de Incremental Data Migration está pausada. Billing method.
¿DTS cobra por el tráfico?
Algunas tareas de DTS generan cargos por tráfico de red pública y de datos, sin importar las regiones de las bases de datos de origen y de destino. Una tarea de migración genera cargos de tráfico de red pública si el Access Method de la base de datos de destino está configurado como Public IP Address. Una tarea de validación completa en modo Full field validation by row sampling genera cargos de tráfico de datos según la cantidad de datos validados. Billable items.
Problemas de rendimiento y especificaciones
¿Cuáles son las diferencias entre los tipos de instancia?
Consulte Data migration link specifications y Data synchronization link specifications.
¿Puedo aumentar el tipo de instancia?
¿Puedo reducir el tipo de instancia?
Actualmente, solo se pueden reducir las instancias de sincronización de datos. Downgrade the specifications of a data synchronization instance.
¿Puedo reducir el tipo de instancia de una tarea de DTS?
Puede reducir las especificaciones del enlace en las tareas de DTS que cumplan los requisitos. Downgrade the link specifications of an instance.
¿Puedo reducir una tarea de DTS a una especificación inferior a media?
No es compatible.
¿Cuánto tiempo toma sincronizar o migrar datos?
No es posible estimar con precisión el tiempo que requiere una tarea de DTS. El rendimiento depende de muchos factores, como la carga en las instancias de DTS y en las bases de datos de origen y destino, el volumen de datos, la existencia de tareas incrementales y las condiciones de la red. Si tiene requisitos de rendimiento elevados, seleccione un tipo de instancia con un límite de rendimiento mayor. Consulte Data migration link specifications y Data synchronization link specifications.
¿Cómo consulto la información de rendimiento de una tarea de migración o sincronización de datos?
Consulte View the status and performance of an incremental migration link o View the status and performance of a synchronization link.
¿Por qué no encuentro una instancia específica de DTS en la consola?
Posible causa: la instancia de DTS indicada es una instancia de subscription que expiró y se liberó.
El resource group seleccionado es incorrecto. Se recomienda seleccionar All Resources.
La región seleccionada es incorrecta. Asegúrese de haber seleccionado la región donde reside la instancia de destino.
El tipo de tarea seleccionado para la instancia es incorrecto. Compruebe que la página actual de la lista de tareas coincida con el tipo de tarea de la instancia de destino. Por ejemplo, las instancias de sincronización solo se muestran en la lista Data Synchronization Tasks.
La instancia se liberó debido a una expiración o a un pago vencido. Cuando una instancia de DTS expira o presenta un pago vencido, la tarea se detiene. Si no se realiza el pago en un plazo de siete días, el sistema libera y elimina la instancia. Expiration or overdue payments.
Problemas de comprobación previa
¿Por qué el elemento de comprobación de la directiva de desalojo de Redis genera una alerta?
Si la directiva de desalojo de datos (maxmemory-policy) de la base de datos de destino está configurada con un valor distinto de noeviction, los datos de destino podrían volverse inconsistentes respecto a los de origen. Introduction to Redis data eviction policies.
¿Qué hago si falla un elemento de comprobación previa relacionado con los registros binarios durante la migración incremental de datos?
Compruebe si los registros binarios de la base de datos de origen funcionan correctamente. Source database binary logging check.
Problemas de conexión a la base de datos
¿Qué hago si falla la conexión con la base de datos de origen?
Compruebe si la información y la configuración de la base de datos de origen son correctas. Source database connectivity check.
¿Qué hago si falla la conexión con la base de datos de destino?
Compruebe si la información y la configuración de la base de datos de destino son correctas. Destination database connectivity check.
¿Qué hago si la instancia de origen o de destino está en una región no compatible con DTS y quiero realizar una migración y sincronización de datos?
Para una tarea de migración de datos, solicite un endpoint público para la instancia de base de datos, como una instancia RDS MySQL, y use el tipo de conexión Public IP Address. Esto requiere seleccionar una región compatible con DTS para la instancia y agregar los bloques CIDR de los servidores de DTS de esa región a la lista de permitidos de la instancia. Add the CIDR blocks of DTS servers to the IP whitelist.
DTS no admite la sincronización de datos en estas regiones porque no es compatible con el tipo de conexión Public IP Address para instancias de base de datos.
¿Cuánto tarda DTS en detectar un cambio de nombre de dominio en una instancia de origen o de destino?
DTS detecta el cambio de vinculación del nombre de dominio en menos de 10 minutos y cambia automáticamente la tarea de DTS a la nueva dirección IP vinculada al nombre de dominio. Durante este cambio, asegúrese de que la relación de replicación de registros binarios entre las instancias antigua y nueva se mantenga por más de 10 minutos.
Problemas de sincronización de datos
¿Con qué instancias de base de datos es compatible DTS para la sincronización?
DTS admite la sincronización entre diversas fuentes de datos, incluidas bases de datos RDBMS, NoSQL y OLAP. Overview of data synchronization solutions.
¿Cuál es la diferencia entre la migración y la sincronización de datos?
A continuación se comparan la migración y la sincronización de datos.
Una instancia de base de datos se clasifica como autogestionada si su Access Method no está configurado como Alibaba Cloud Instance al configurar una instancia de DTS. Las bases de datos autogestionadas incluyen instancias de bases de datos de nubes de terceros, bases de datos desplegadas en servidores locales y bases de datos desplegadas en instancias ECS.
Elemento | Migración de datos | Sincronización de datos |
Escenarios | Se usa principalmente para la migración a la nube, como migrar bases de datos locales, bases de datos autogestionadas en instancias ECS o bases de datos de nubes de terceros hacia bases de datos de Alibaba Cloud. | Se usa principalmente para la sincronización de datos en tiempo real entre dos fuentes de datos. Es adecuada para escenarios como redundancia geográfica activa, recuperación ante desastres de datos, sincronización de datos transfronteriza, descarga de consultas e informes, inteligencia empresarial (BI) en la nube y almacenamiento de datos en tiempo real. |
Bases de datos compatibles | Overview of data migration solutions. Nota Para algunas bases de datos que no son compatibles con la sincronización de datos, puede usar la migración de datos para lograr dicha sincronización. Algunos ejemplos son las bases de datos MongoDB de nodo único y las bases de datos OceanBase (modo MySQL). | |
Ubicaciones de despliegue de bases de datos compatibles (tipos de conexión) |
|
Nota La sincronización de datos se basa en la transmisión por red interna, lo que garantiza una menor latencia de red. |
Diferencias de funciones |
|
|
Método de facturación | Solo admite pay-as-you-go. | Admite pay-as-you-go y subscription. |
¿Es un servicio de pago? | Sí, pero los cargos solo se generan para instancias de migración que incluyen tareas de migración incremental. | Sí. Las instancias de sincronización incluyen tareas de sincronización incremental de forma predeterminada y siempre generan cargos. |
Regla de facturación | Solo se le cobra cuando la migración incremental de datos se está ejecutando. No se generan cargos cuando la migración incremental de datos está pausada. La migración de esquemas ni la migración completa de datos generan cargos. |
|
¿Cómo funciona la sincronización de datos?
¿Cómo se calcula la latencia de sincronización?
La latencia de sincronización es la diferencia de tiempo, en milisegundos, entre la marca de tiempo de los últimos datos sincronizados en la base de datos de destino y la marca de tiempo actual de la base de datos de origen.
Una latencia normal se encuentra por debajo de los 1000 milisegundos.
¿Puedo modificar los objetos de sincronización de una tarea de sincronización de datos?
Sí. Add a synchronization object y Remove a synchronization object.
¿Puedo agregar una tabla nueva a una tarea de sincronización de datos?
¿Cómo modifico los objetos de sincronización, como tablas y campos, de una tarea de sincronización en ejecución?
Puede modificar los objetos de sincronización una vez que finaliza la sincronización completa y comienza la sincronización incremental. Add a synchronization object y Remove a synchronization object.
Si pauso una tarea de sincronización y la reinicio después de un tiempo, ¿esto provoca inconsistencia en los datos?
Si la base de datos de origen cambia mientras la tarea de sincronización está pausada, podría producirse una inconsistencia de datos entre las bases de datos de origen y de destino. Después de reiniciar la tarea de sincronización y de que los datos incrementales se sincronicen en la base de datos de destino, los datos de destino vuelven a ser consistentes con los de origen.
Si elimino datos de la base de datos de origen de una tarea de sincronización incremental, ¿se eliminan los datos sincronizados en la base de datos de destino?
Si las operaciones DML que se van a sincronizar en la tarea de sincronización incremental no incluyen delete, los datos de la base de datos de destino no se eliminan. De lo contrario, los datos sincronizados en la base de datos de destino sí se eliminan.
¿Se sobrescriben los datos de la instancia Redis de destino durante la sincronización entre instancias Redis?
Sí, los datos con la misma clave se sobrescriben. DTS comprueba el destino durante la fase de comprobación previa. Si el destino no está vacío, se reporta un error.
¿Una tarea de sincronización puede filtrar algunos campos o datos?
Sí. Puede usar la función de asignación para filtrar columnas y especificar condiciones SQL WHERE para filtrar datos. Synchronize or migrate some columns y Filter data using SQL conditions.
¿Se puede convertir una tarea de sincronización en una tarea de migración?
No. Las tareas de distintos tipos no se pueden convertir entre sí.
¿Puedo sincronizar solo los datos sin sincronizar el esquema?
Sí. Cuando configure la tarea de sincronización, no seleccione Schema Synchronization.
¿Cuáles son las posibles causas de inconsistencia de datos entre el origen y el destino de una instancia de sincronización de datos?
Posibles causas:
No borró los datos del destino al configurar la tarea, por lo que el destino contiene datos históricos.
Seleccionó únicamente la sincronización incremental y no la sincronización completa al configurar la tarea.
Seleccionó únicamente la sincronización completa y no la sincronización incremental al configurar la tarea, y los datos de origen cambiaron después de que finalizara la tarea.
Se escribieron datos en el destino desde fuentes distintas a la tarea de DTS.
Las escrituras incrementales presentan un retraso y no todos los datos incrementales se han escrito en el destino.
¿Puedo cambiar el nombre de la base de datos de origen en la base de datos de destino para una tarea de sincronización de datos?
Sí. Set the name of a synchronization object in the destination instance.
¿Se admite la sincronización en tiempo real de operaciones DML o DDL?
Sí. La sincronización de datos relacionales admite operaciones DML (INSERT, UPDATE y DELETE) y DDL (CREATE, DROP, ALTER, RENAME y TRUNCATE).
Las operaciones DML o DDL compatibles varían según el escenario. Seleccione un enlace que satisfaga sus necesidades empresariales en Overview of data synchronization solutions y compruebe las operaciones DML o DDL admitidas en el documento de configuración específico de dicho enlace.
¿Se puede usar una instancia de solo lectura como instancia de origen para una tarea de sincronización?
De forma predeterminada, las tareas de sincronización incluyen la sincronización incremental de datos. Esto da lugar a los dos escenarios siguientes:
Si la instancia es de solo lectura y registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.7 u 8.0, se puede usar como instancia de origen.
Si la instancia es de solo lectura y no registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.6, no se puede usar como instancia de origen.
¿DTS admite la sincronización de datos para bases de datos y tablas fragmentadas?
Sí. Por ejemplo, puede combinar varias tablas fragmentadas al sincronizarlas desde MySQL y PolarDB for MySQL hacia AnalyticDB for MySQL.
¿Por qué el volumen de datos de la instancia de destino es menor que el de la instancia de origen después de finalizar una tarea de sincronización?
Si se filtraron datos durante la sincronización o si existen muchos fragmentos de tablas en la instancia de origen, el volumen de datos de la instancia de destino podría ser menor que el de la instancia de origen al finalizar la sincronización.
¿Una tarea de sincronización de datos entre cuentas admite la sincronización bidireccional?
Sí, pero actualmente solo las tareas de sincronización bidireccional entre instancias de ApsaraDB RDS for MySQL, entre clústeres de PolarDB for MySQL, entre instancias de Tair (Enterprise Edition), entre instancias de ApsaraDB for MongoDB (ReplicaSet) o entre instancias de ApsaraDB for MongoDB (clúster fragmentado) admiten la sincronización bidireccional entre cuentas.
¿La sincronización inversa de una instancia de sincronización bidireccional admite la sincronización DDL?
No. Solo la tarea de sincronización directa (desde la base de datos de origen hacia la de destino) admite la sincronización DDL. La tarea de sincronización inversa (desde la base de datos de destino hacia la de origen) no admite la sincronización DDL y filtra automáticamente las operaciones DDL.
To synchronize the DDL operations for the current reverse synchronization task, you can reverse the direction of the two-way synchronization instance si su negocio lo permite.
¿Necesito configurar manualmente una tarea de sincronización inversa?
Sí. Espere a que la tarea de sincronización directa finalice la inicialización (hasta que el Status sea Running). Luego, ubique la tarea de sincronización inversa y haga clic en Configure Task.
We recommend that you configure the reverse synchronization task after the forward synchronization task has no latency ( la latencia es de 0 milisegundos ).
¿DTS admite tareas de sincronización bidireccional transfronterizas?
No.
¿Por qué un registro agregado a una base de datos no se agrega a la otra en una tarea de sincronización bidireccional?
Este problema puede ocurrir porque no se configuró una tarea inversa.
¿Por qué la tarea de sincronización incremental nunca alcanza el 100 %?
Una tarea de sincronización incremental sincroniza continuamente los cambios del origen al destino en tiempo real y no finaliza por sí sola. Esto significa que no existe un estado de finalización al 100 %. Si ya no necesita la sincronización en tiempo real, puede finalizar la tarea en la consola de DTS.
¿Por qué una tarea de sincronización incremental no logra sincronizar datos?
Si una instancia de DTS se configura únicamente para sincronización incremental, DTS sincroniza solo los datos incrementales generados después de que inicie la tarea. Esto significa que los datos generados antes del inicio de la tarea no se sincronizan con la base de datos de destino. Para garantizar la consistencia de los datos, se recomienda seleccionar Incremental Data Synchronization, Schema Synchronization y Full Data Synchronization al configurar la tarea.
¿Sincronizar datos completos desde una base de datos RDS afecta el rendimiento de la instancia RDS de origen?
Sí, afecta el rendimiento de consulta de la base de datos de origen. Puede usar uno de los tres métodos siguientes para reducir el impacto de la tarea de DTS en la base de datos de origen:
Aumente las especificaciones de la instancia de la base de datos de origen.
Pause la tarea de DTS y reiníciela cuando la carga de la base de datos de origen sea baja.
Reduzca la velocidad de la tarea de DTS. Adjust the full migration rate.
¿Por qué una instancia de sincronización con origen PolarDB-X 1.0 no muestra la latencia?
La información de latencia no se muestra para las instancias con origen PolarDB-X 1.0. Esto se debe a que la instancia se ejecuta como una tarea distribuida, y las métricas que supervisa DTS solo existen en las subtareas. Para consultar la información de latencia, haga clic en el ID de la instancia y vaya a la sección Subtask Details en la página Task Management.
¿Por qué una tarea de combinación de múltiples tablas reporta el error DTS-071001?
Este error puede ocurrir porque ejecutó operaciones DDL en línea en la base de datos de origen mientras se ejecutaba la tarea de combinación de múltiples tablas. Dichas operaciones modificaron el esquema de la tabla de la base de datos de origen, pero usted no aplicó los cambios correspondientes en la base de datos de destino.
¿Qué hago si falla la adición a la lista de permitidos al configurar una tarea en la consola anterior?
Puede usar la nueva consola para configurar la tarea.
¿Qué debo hacer si una tarea de sincronización de datos falla porque se ejecutó una operación DDL en la base de datos de origen durante el proceso?
Ejecute manualmente la operación DDL en la base de datos de destino según la operación que se haya ejecutado en la base de datos de origen. Después, reinicie la tarea. Durante la sincronización de datos, no utilice herramientas como pt-online-schema-change para ejecutar operaciones DDL en línea sobre los objetos de sincronización de la base de datos de origen; de lo contrario, la sincronización fallará. Si en la base de datos de destino solo se escriben datos de DTS, puede usar Data Management (DMS) para ejecutar las operaciones DDL en línea o modificar los objetos de sincronización para quitar las tablas afectadas. Remove a synchronization object.
¿Qué debo hacer si una tarea de sincronización de datos falla porque se ejecutó una operación DDL en la base de datos de destino durante el proceso?
Si durante la sincronización incremental se elimina una base de datos o una tabla en la base de datos de destino y esto provoca un comportamiento anómalo en la tarea, aplique una de las siguientes dos soluciones para restaurarla:
Método 1: Vuelva a configurar la tarea y no seleccione como objeto de sincronización la base de datos o la tabla que provocó el error.
Método 2: Modifique los objetos de sincronización para quitar la base de datos o la tabla que provocó el error. Remove a synchronization object.
¿Se puede restaurar una tarea de sincronización después de liberarla? ¿Volver a configurar la tarea garantiza la coherencia de los datos?
Una tarea de sincronización no se puede restaurar después de liberarla. Si vuelve a configurar la tarea sin seleccionar Full Data Synchronization, los datos agregados entre la liberación de la tarea original y el inicio de la nueva no se sincronizarán con la base de datos de destino, por lo que no se podrá garantizar la coherencia de los datos. Si la precisión de los datos es crítica para su negocio, elimine los datos de la base de datos de destino, vuelva a configurar la tarea de sincronización y seleccione tanto Schema Synchronization como Full Data Synchronization en Task Stages. La opción Incremental Data Synchronization está seleccionada de forma predeterminada.
¿Qué debo hacer si una tarea de sincronización completa de DTS no muestra avances durante mucho tiempo?
Si la tabla que se va a sincronizar no tiene clave primaria, la sincronización completa será muy lenta. Se recomienda agregar una clave primaria a la tabla en la base de datos de origen antes de iniciar la sincronización.
Al sincronizar datos entre tablas con el mismo nombre, ¿puedo configurar que los datos de la tabla de origen se transfieran solo si no existen en la tabla de destino?
Sí. Cuando configure la tarea, establezca Processing Mode of Conflicting Tables en Ignore Errors and Proceed. Si los esquemas de las tablas son coherentes y un registro de la base de datos de origen tiene un valor de clave primaria que ya existe en la base de datos de destino, ese registro no se sincronizará durante la sincronización completa.
¿Cómo configuro una tarea de sincronización entre cuentas?
Primero, conozca la información de scenarios for cross-account tasks. Luego, use la cuenta de Alibaba Cloud a la que pertenece la instancia de base de datos para configure RAM authorization for a cross-Alibaba Cloud account task. Por último, configure the cross-Alibaba Cloud account task.
¿Qué debo hacer si no puedo seleccionar una instancia de DMS LogicDB?
Asegúrese de que la región de la instancia sea correcta. Si aun así no puede seleccionar la instancia, es posible que solo exista una. En ese caso, continúe con la configuración de los demás parámetros.
¿Una tarea de sincronización con origen SQL Server admite la sincronización de funciones?
No. Si la granularidad del objeto de sincronización se establece en tabla, otros objetos como vistas, desencadenadores y procedimientos almacenados no se sincronizarán con la base de datos de destino.
¿Qué debo hacer si una tarea de sincronización de datos reporta un error?
Consulte Common errors para encontrar una solución basada en el mensaje de error.
¿Cómo habilito la fusión de puntos críticos en una tarea de sincronización?
Consulte Modify parameter values para cambiar el valor de trans.hot.merge.enable a true.
¿Cómo ejecuto la sincronización cuando la base de datos de origen tiene desencadenadores?
Cuando el objeto de sincronización es toda la base de datos y un desencadenador actualiza una tabla dentro de ella, puede producirse una inconsistencia de datos. Configure a synchronization or migration job when the source database has triggers.
¿DTS admite la sincronización de la base de datos sys y de las bases de datos del sistema?
No.
¿DTS admite la sincronización de las bases de datos admin y local de MongoDB?
No. DTS no admite usar las bases de datos admin y local de MongoDB como origen ni como destino.
¿Cuándo se puede configurar la tarea inversa de una tarea de sincronización bidireccional?
La tarea inversa de una sincronización bidireccional solo se puede configurar después de que la tarea incremental directa no presente latencia.
Cuando PolarDB-X 1.0 es el origen, ¿la instancia de PolarDB-X 1.0 de origen de una tarea de sincronización admite el escalado de nodos?
No. Si la instancia de PolarDB-X 1.0 de origen pasa por un escalado de nodos, debe volver a configurar la tarea.
¿Se puede garantizar que los datos sincronizados hacia Kafka mediante DTS sean únicos?
No. Como los datos escritos en Kafka se anexan, pueden existir datos duplicados cuando se reinicia la tarea de DTS o cuando esta extrae registros repetidamente del origen. DTS garantiza la idempotencia de los datos, lo que significa que estos se ordenan y el valor más reciente de los datos duplicados se coloca al final.
¿DTS admite la sincronización de datos desde RDS for MySQL hacia AnalyticDB for MySQL?
Sí. Synchronize data from RDS for MySQL to AnalyticDB for MySQL 3.0.
¿Por qué una tarea de sincronización entre instancias de Redis no muestra la sincronización completa?
La sincronización entre instancias de Redis incluye tanto la sincronización completa como la incremental de datos. Estos dos métodos se muestran de manera conjunta como Incremental Data Synchronization.
¿Se puede omitir la sincronización completa?
Sí. Después de omitir la sincronización completa, la sincronización incremental continuará, aunque podrían producirse errores. Se recomienda no omitir la sincronización completa.
¿Puedo programar la sincronización automática?
No. Actualmente, DTS no admite programar el inicio de las tareas de sincronización de datos.
¿Se sincroniza la fragmentación de tablas durante el proceso?
No.
¿Qué debo tener en cuenta al sincronizar de MySQL 8.0 a MySQL 5.6?
Cree una base de datos en MySQL 5.6 antes de iniciar la sincronización. Se recomienda que las versiones de las bases de datos de origen y de destino coincidan, o bien sincronizar de una versión menor a una mayor para garantizar la compatibilidad. Si sincroniza de una versión mayor a una menor, podrían presentarse problemas de compatibilidad en la base de datos.
¿Las cuentas de la base de datos de origen se pueden sincronizar con la base de datos de destino?
Actualmente, solo las tareas de sincronización entre instancias de ApsaraDB RDS for MySQL admiten la sincronización de cuentas. El resto de las tareas no lo permite.
¿Puedo configurar una tarea de sincronización bidireccional entre cuentas?
Sí, pero actualmente solo las tareas de sincronización bidireccional entre instancias de ApsaraDB RDS for MySQL, entre clústeres de PolarDB for MySQL, entre instancias de Tair (Enterprise Edition), entre instancias de ApsaraDB for MongoDB (ReplicaSet) o entre instancias de ApsaraDB for MongoDB (sharded cluster) admiten la sincronización bidireccional entre cuentas.
Para las tareas que no incluyen el elemento de configuración Replicate Data Across Alibaba Cloud Accounts, utilice CEN para configurar la sincronización bidireccional entre cuentas. Access database resources across Alibaba Cloud accounts or regions.
¿Cómo configuro los parámetros cuando Message Queue for Apache Kafka es el destino?
Configure los parámetros según sus necesidades. Configure parameters for a Message Queue for Apache Kafka instance.
¿Cómo resuelvo el error ERR invalid DB index al usar DTS para sincronizar o migrar datos de Redis?
Causa: El error ERR invalid DB index ocurre cuando la base de datos de destino ejecuta la operación SELECT DB. Esto suele deberse a que la cantidad de databases en la base de datos de destino es insuficiente. Si la base de datos de destino usa un proxy, compruebe si este puede aumentar el límite de databases.
Solución: Modifique la configuración de databases de la base de datos de destino. Aumente el número para que coincida con el de la base de datos de origen y luego reinicie la tarea de DTS. Ejecute el siguiente comando para consultar la configuración de databases de la base de datos de destino:
CONFIG GET databases;
¿Cómo resuelvo el error IDENTIFIER CLUSTERED al sincronizar o migrar datos de SQL Server a AnalyticDB for PostgreSQL?
Causa: Al sincronizar o migrar datos de SQL Server a AnalyticDB for PostgreSQL, la tarea falla porque el comando CREATE CLUSTERED INDEX no es compatible.
Solución: Una vez que confirme que no hay otros comandos DDL durante el periodo de latencia, modify the instance parameter sink.ignore.failed.ddl a true para filtrar todas las ejecuciones DDL. Cuando avance el desplazamiento de la sincronización o migración incremental, cambie sink.ignore.failed.ddl nuevamente a false.
En una tarea de sincronización o migración de Redis, ¿tiene algún efecto práctico ampliar el tiempo de expiración de una clave en la base de datos de destino?
Para evitar que las claves expiren durante la sincronización completa de datos, puede ampliar el tiempo de expiración de las claves en la base de datos de destino. En las tareas de DTS que involucran sincronización o migración incremental, si una clave de la base de datos de origen expira y se elimina, la clave correspondiente en la base de datos de destino también se libera.
Después de establecer un tiempo de expiración ampliado para una clave en la base de datos de destino, si la clave de la base de datos de origen expira, ¿la clave de destino se liberará de inmediato?
Una clave en la base de datos de destino no necesariamente se libera de inmediato al expirar. Solo se libera inmediatamente cuando la clave correspondiente en la base de datos de origen expira y se borra.
Por ejemplo, si una clave en la base de datos de origen está configurada para expirar en 5 segundos, pero su tiempo de expiración en la base de datos de destino es de 30 segundos, la clave de destino se eliminará cuando expire la clave de origen. Al expirar la clave en la base de datos de origen, el sistema agrega una operación de eliminación al archivo Append-Only File (AOF). Esta solicitud se sincroniza con la base de datos de destino y se ejecuta.
¿Cómo resuelvo el error column_name[xxx], the length of input string is too long than vec schema al usar DTS para sincronizar datos hacia SelectDB?
Mensaje de error detallado:
Reason: The input string for column_name[xxx] is longer than the length specified in the vector schema. First 32 bytes of the input string: [01a954b4-xxx-xxx-xxx-95b675b9]. Schema length: 2147483643. Limit length: 1048576. Actual length: 7241898. Source line: [].Causa: El tamaño de los datos incrementales en el campo xxx de origen supera el límite de longitud del campo correspondiente en el destino.
Solución: Si el campo es de tipo
STRING, aumente el parámetro string_type_length_soft_limit_bytes en la consola de SelectDB. El valor debe ser mayor que laactual length(7241898).
¿Cómo resuelvo el error column(xxx) values is null while columns is not nullable. al usar DTS para sincronizar datos hacia SelectDB?
Mensaje de error detallado:
Reason: column(xxx) values is null while columns is not nullable. src line [ xxx ];-
Causa: El campo xxx en el destino es
NOT NULL, pero se están escribiendo valoresNULL.NotaEscenario común: el formato de fecha de origen contiene datos no válidos, como
0000-0000-0000, lo que provoca que DTS los convierta automáticamente en un valorNULLy active el error. -
Solución:
- Change the field type in the destination to allow NULL values.
Modifique el objeto de sincronización: quite la tabla problemática, corrija los datos de origen y luego elimine la tabla en el destino. Después, vuelva a modificar el objeto de sincronización para agregar la tabla nuevamente y ejecute de nuevo la sincronización completa e incremental.
¿Cómo corrijo una asignación de nombres de tabla de destino configurada incorrectamente?
En la página de configuración de la tarea de DTS, expanda la base de datos de destino en la sección Selected Objects, busque la tabla con la asignación incorrecta y haga clic en el botón Edit situado a la derecha. En el cuadro de diálogo que aparece, cambie el nombre de la tabla de destino al nombre correcto y guarde el cambio.
¿Cómo relleno los datos históricos después de agregar una columna nueva?
DTS no rellena automáticamente los datos históricos de las columnas recién agregadas. Esta regla aplica a todos los tipos de bases de datos de destino, no solo a SelectDB. Para rellenar los datos históricos, siga estos pasos:
Agregue manualmente el nuevo campo a la tabla de destino.
En la consola de DTS, modifique los objetos de sincronización para quitar la tabla de la lista de sincronización.
Ejecute
TRUNCATEpara borrar los datos de la tabla de destino y garantizar la coherencia de los datos.Vuelva a agregar la tabla a los objetos de sincronización. Esto activa la sincronización completa e incremental de datos para migrar los datos históricos al destino.
Problemas de migración de datos
¿Los datos de la base de datos de origen seguirán existiendo después de ejecutar una tarea de migración de datos?
DTS ejecuta la migración y sincronización de datos copiándolos de una base de datos de origen a una de destino, sin afectar el origen.
¿Qué instancias de base de datos admite DTS para la migración?
DTS admite la migración entre diversas fuentes de datos, incluidas bases de datos RDBMS, NoSQL y OLAP. Overview of data migration solutions
¿Cómo funciona la migración de datos?
¿Puedo modificar los objetos de migración de una tarea de migración de datos?
No.
¿Puedo agregar una tabla nueva a una tarea de migración de datos?
No.
¿Cómo modifico los objetos de migración, como tablas y campos, de una tarea de migración en ejecución?
Las tareas de migración no admiten la modificación de los objetos de migración.
Si pauso una tarea de migración y la reinicio después de un tiempo, ¿esto causará inconsistencia de datos?
Si la base de datos de origen cambia mientras la tarea de migración está pausada, podría producirse una inconsistencia de datos entre las bases de datos de origen y de destino. Después de reiniciar la tarea de migración y de que los datos incrementales se migren a la base de datos de destino, los datos de destino serán coherentes con los de origen.
¿Se puede convertir una tarea de migración en una tarea de sincronización?
No. Las tareas de distintos tipos no se pueden convertir entre sí.
¿Puedo migrar solo los datos sin migrar el esquema?
Sí. Cuando configure la tarea de migración, no seleccione Schema Migration.
¿Cuáles son las posibles causas de inconsistencia de datos entre el origen y el destino de una instancia de migración de datos?
Posibles causas:
No borró los datos del destino al configurar la tarea, por lo que el destino contiene datos históricos.
Al configurar la tarea, seleccionó únicamente la migración incremental y no la completa.
Al configurar la tarea, seleccionó únicamente la migración completa y no la incremental, y los datos de origen cambiaron después de finalizar la tarea.
Se escribieron datos en el destino desde fuentes distintas a la tarea de DTS.
Las escrituras incrementales tienen un retraso y no todos los datos incrementales se han escrito en el destino.
¿Puedo cambiar el nombre de la base de datos de origen en la base de datos de destino para una tarea de migración de datos?
¿Se admite la migración de datos dentro de la misma instancia?
Sí. Data synchronization or migration between different database names.
¿Se admite la migración en tiempo real de operaciones DML o DDL?
Sí. Las operaciones DML compatibles para datos entre bases de datos relacionales son INSERT, UPDATE y DELETE. Las operaciones DDL compatibles son CREATE, DROP, ALTER, RENAME y TRUNCATE.
Las operaciones DML o DDL compatibles varían según el escenario. Seleccione un enlace que se ajuste a sus necesidades de negocio en Overview of data migration solutions y consulte las operaciones DML o DDL compatibles en el documento de configuración específico de dicho enlace.
¿Se puede usar una instancia de solo lectura como instancia de origen para una tarea de migración?
Si una tarea de migración no requiere migración de datos incrementales, puede usar una instancia de solo lectura como instancia de origen. Si la tarea requiere migración de datos incrementales, existen dos escenarios:
Si la instancia es de solo lectura y registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.7 o 8.0, se puede usar como instancia de origen.
Si la instancia es de solo lectura y no registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.6, no se puede usar como instancia de origen.
¿DTS admite la migración de datos para bases de datos y tablas fragmentadas?
Sí. Por ejemplo, puede migrar bases de datos y tablas fragmentadas de MySQL y PolarDB for MySQL hacia AnalyticDB for MySQL para fusionar varias tablas.
¿Una tarea de migración puede filtrar algunos campos o datos?
Sí. Puede usar la función de asignación para filtrar columnas y especificar condiciones SQL WHERE para filtrar datos. Synchronize or migrate some columns y Filter data to be migrated.
¿Por qué el volumen de datos de la instancia de destino es menor que el de la instancia de origen después de completar una tarea de migración?
Si se filtraron datos durante la migración o si la instancia de origen tiene muchos fragmentos de tabla, el volumen de datos de la instancia de destino podría ser menor que el de la instancia de origen al finalizar la migración.
¿Por qué el valor de "Completed" es mayor que el total en una tarea de migración?
El total que se muestra es un valor estimado. Cuando la tarea de migración finaliza, el total se ajusta al valor exacto.
¿Cuál es el propósito de la tabla increment_trx que se agrega a la base de datos de destino durante la migración de datos?
La tabla increment_trx es una tabla de desplazamiento que la migración incremental de DTS crea en la instancia de destino. Se utiliza principalmente para registrar el desplazamiento de la migración incremental y resolver el problema de reanudación desde un punto de interrupción tras un reinicio anómalo de la tarea. No la elimine durante el proceso de migración; de lo contrario, la migración fallará.
¿Una tarea de migración de datos admite la reanudación desde un punto de interrupción durante la fase de migración completa?
Sí. Si pausa una tarea durante la fase de migración completa y luego la reinicia, la tarea continuará desde donde se detuvo, sin empezar de nuevo.
¿Cómo migro una instancia externa a Alibaba Cloud?
¿Cómo migro una base de datos Oracle local a PolarDB?
¿Se puede pausar una tarea de migración de datos que no ha completado la fase de migración completa?
Sí.
¿Cómo migro algunos datos de RDS for MySQL a una base de datos MySQL autogestionada?
Cuando configure la tarea de migración, seleccione los objetos que desea migrar en la sección Source Objects o fíltrelos en la sección Selected Objects según sus necesidades. Las operaciones de migración entre bases de datos MySQL son similares. Migrate data from a self-managed MySQL database to an ApsaraDB RDS for MySQL instance.
¿Cómo migro instancias de RDS bajo la misma cuenta de Alibaba Cloud?
DTS admite la migración y sincronización entre instancias de RDS. Consulte los documentos de configuración correspondientes en Overview of data migration solutions.
¿Qué debo hacer si se activa una alerta de IOPS para la base de datos de origen después de iniciar una tarea de migración y cómo garantizo la estabilidad del negocio de la base de datos de origen?
Si la carga de la instancia de la base de datos de origen es alta mientras se ejecuta una tarea de DTS, utilice uno de los siguientes tres métodos para reducir el impacto de la tarea de DTS sobre la base de datos de origen:
Actualice las especificaciones de la instancia de la base de datos de origen.
Pause la tarea de DTS y reiníciela cuando la carga de la base de datos de origen sea baja.
Reduzca la velocidad de la tarea de DTS. Adjust the full migration rate.
¿Por qué una tarea de migración de datos no puede seleccionar una base de datos llamada "test"?
La migración de datos de DTS no admite la migración de bases de datos del sistema. Debe seleccionar una base de datos creada para el negocio para la migración.
¿Por qué una instancia de migración con origen PolarDB-X 1.0 no muestra la latencia?
La información de latencia no se muestra para las instancias con origen PolarDB-X 1.0. Esto se debe a que la instancia se ejecuta como una tarea distribuida y las métricas supervisadas por DTS solo existen en las subtareas. Para consultar la información de latencia, haga clic en el ID de la instancia y vaya a la sección Subtask Details en la página Task Management.
¿Por qué DTS no puede migrar una base de datos de MongoDB?
Esto puede deberse a que la base de datos que se intenta migrar es "local" o "admin". DTS no admite usar las bases de datos admin y local de MongoDB como origen ni como destino.
¿Por qué una tarea de fusión de varias tablas reporta el error DTS-071001?
Este error puede ocurrir porque se ejecutaron operaciones DDL en línea en la base de datos de origen mientras la tarea de fusión de varias tablas estaba en ejecución. Dichas operaciones modificaron el esquema de la tabla de la base de datos de origen, pero no se aplicaron los cambios correspondientes en la base de datos de destino.
¿Qué debo hacer si falla la adición de una lista de permitidos al configurar una tarea en la consola anterior?
Utilice la nueva consola para configurar la tarea.
¿Qué debo hacer si una tarea de migración de datos falla porque se ejecutó una operación DDL en la base de datos de origen durante el proceso?
Ejecute manualmente la operación DDL en el destino según el contenido DDL que se haya ejecutado en la base de datos de origen y luego reinicie la tarea. Durante la migración de datos, no utilice herramientas como pt-online-schema-change para ejecutar operaciones DDL en línea sobre los objetos de migración de la base de datos de origen; de lo contrario, la migración fallará. Si en la base de datos de destino solo se escriben datos de DTS, puede usar Data Management (DMS) para ejecutar las operaciones DDL en línea.
¿Qué debo hacer si una tarea de migración de datos falla porque se ejecutó una operación DDL en la base de datos de destino durante el proceso?
Si durante la migración incremental se elimina una base de datos o una tabla en la base de datos de destino y esto provoca un comportamiento anómalo en la tarea, vuelva a configurar la tarea sin seleccionar como objeto de migración la base de datos o la tabla que provocó el error.
¿Se puede restaurar una tarea de migración después de liberarla? ¿Volver a configurar la tarea garantiza la coherencia de los datos?
Una tarea de migración no se puede restaurar después de liberarla. Si vuelve a configurar la tarea sin seleccionar Full Data Migration, los datos agregados después de liberar la tarea no se migrarán a la base de datos de destino, por lo que no se podrá garantizar la coherencia de los datos. Si se requiere una alta precisión de los datos, elimine los datos de la base de datos de destino, vuelva a configurar la tarea de migración y seleccione Schema Migration, Incremental Data Migration y Full Data Migration en Task Stages.
¿Qué debo hacer si una tarea de migración completa de DTS no muestra avances durante mucho tiempo?
Si la tabla que se va a migrar no tiene clave primaria, la migración completa será muy lenta. Se recomienda agregar una clave primaria a la tabla en la base de datos de origen antes de iniciar la migración.
Al migrar datos entre tablas con el mismo nombre, ¿puedo configurar que los datos de la tabla de origen se transfieran solo si no existen en la tabla de destino?
Sí. Cuando configure la tarea, establezca Processing Mode of Conflicting Tables en Ignore Errors and Proceed. Si los esquemas de las tablas son coherentes, los registros de origen cuyas claves primarias ya existan en la base de datos de destino no se migrarán durante la migración completa.
¿Cómo configuro una tarea de migración entre cuentas?
Primero, conozca la información de scenarios for cross-account tasks. Luego, use la cuenta de Alibaba Cloud a la que pertenece la instancia de base de datos para configure RAM authorization for a cross-Alibaba Cloud account task. Por último, configure the cross-Alibaba Cloud account task.
¿Cómo se conecta una tarea de migración de datos a una base de datos local?
Establezca el Access Method de la base de datos local en Public IP Address para configurar la tarea de migración. Migrate data from a self-managed MySQL database to an ApsaraDB RDS for MySQL instance.
¿Qué debo hacer si una migración de datos falla con el error DTS-31008?
Según el mensaje de error, haga clic en View Cause o consulte Common errors.
¿Qué debo hacer si la red se desconecta al conectarme a una base de datos autogestionada mediante una línea dedicada?
Compruebe si la lista de permitidos de direcciones IP relacionada con DTS está configurada correctamente para la línea dedicada. Para conocer la lista de direcciones IP que deben agregarse a la lista de permitidos, consulte Add the IP address ranges of DTS servers to the IP address whitelist of a self-managed database.
¿Una tarea de migración con origen SQL Server admite la migración de funciones?
No. Si la granularidad del objeto de migración se establece en tabla, otros objetos como vistas, desencadenadores y procedimientos almacenados no se migrarán a la base de datos de destino.
¿Qué debo hacer si una migración completa de DTS es lenta?
La migración de datos puede tardar cierto tiempo en completarse. Consulte el progreso de la migración en el módulo Full Data Migration de los detalles de la tarea, dentro de la página Task Management.
¿Qué debo hacer si la migración de esquemas reporta un error?
Haga clic en el ID de la instancia para ir a la página de detalles de la tarea. Consulte el mensaje de error en el módulo de migración de esquemas de la página Task Management y resuelva el error en consecuencia. Para ver las soluciones a los errores comunes, consulte Common errors.
¿La migración de esquemas y la migración completa son gratuitas?
Sí, son gratuitas. Billing Items.
¿Se sobrescribirán los datos zset del destino durante una tarea de migración de datos entre instancias de Redis?
Sí, el zset del destino se sobrescribirá. Si en el destino ya existe una clave idéntica a la del origen, DTS primero eliminará el zset de la clave correspondiente en el destino y luego aplicará zadd a cada objeto de la colección zset de origen hacia el destino.
¿Qué impacto tiene la migración completa en la base de datos de origen?
El proceso de migración completa de DTS consiste primero en segmentar los datos y luego leer y escribir los datos dentro de esos segmentos. En la base de datos de origen, los IOPS aumentarán durante el proceso de segmentación de datos. Mientras se leen los datos dentro de los segmentos, los IOPS, CachePool y el ancho de banda de salida de la base de datos de origen se verán afectados en cierta medida. Según la experiencia práctica de DTS, estos impactos son insignificantes.
Cuando PolarDB-X 1.0 es el origen, ¿la instancia de PolarDB-X 1.0 de origen de una tarea de migración admite el escalado de nodos?
No. Si la instancia de PolarDB-X 1.0 de origen pasa por un escalado de nodos, debe volver a configurar la tarea.
¿Se puede garantizar que los datos migrados a Kafka mediante DTS sean únicos?
No. Los datos escritos en Kafka se agregan de forma continua. Por lo tanto, pueden existir datos duplicados cuando la tarea de DTS se reinicia o cuando extrae registros del origen de manera repetida. DTS garantiza la idempotencia de los datos; es decir, los organiza en orden y coloca el valor más reciente de los datos duplicados al final.
Si primero configuro una tarea de migración completa y luego una de migración incremental, ¿se producirá inconsistencia en los datos?
Sí, puede ocurrir inconsistencia. Cuando se configura por separado una tarea de migración incremental, esta comienza a migrar los datos únicamente después de iniciarla. Los datos incrementales generados en la instancia de origen antes de que comience la tarea no se sincronizan con la instancia de destino. Para ejecutar una migración sin tiempo de inactividad, seleccione la migración de esquemas, la migración completa de datos y la migración incremental de datos como tipos de migración al configurar la tarea.
¿Debo seleccionar la migración de esquemas al configurar una tarea de migración incremental?
La migración de esquemas consiste en trasladar las definiciones de los objetos de migración a la instancia de destino antes de que comience la migración de datos. Por ejemplo, migrar la definición de la tabla A a la instancia de destino. Para ejecutar una migración incremental, seleccione la migración de esquemas, la migración completa de datos y la migración incremental de datos. De este modo, se garantiza la consistencia de los datos.
¿Por qué el espacio de almacenamiento que utiliza RDS es mayor que el de la base de datos de origen durante la migración desde una base de datos autogestionada hacia RDS?
DTS ejecuta una migración lógica. Esto significa que encapsula los datos por migrar en sentencias SQL y los traslada a la instancia de RDS de destino. Durante este proceso, se generan datos de registro binario en la instancia de RDS de destino. Por ello, el espacio de almacenamiento que consume RDS durante la migración puede ser mayor que el de la base de datos de origen.
¿DTS admite la migración de MongoDB en una VPC?
Sí. Actualmente, DTS permite usar ApsaraDB for MongoDB en una VPC como base de datos de origen para la migración.
¿Qué ocurre con los datos migrados si la base de datos de origen cambia durante la migración?
Si la tarea de migración se configuró con migración de esquemas, migración completa y migración incremental, DTS migra a la base de datos de destino cualquier cambio que ocurra en la base de datos de origen durante el proceso.
¿Liberar una tarea de migración completada afecta el uso de la base de datos migrada?
No. Libere la tarea de migración de forma segura solo cuando haya finalizado. Es decir, cuando su Status sea Completed.
¿DTS admite la migración incremental para MongoDB?
Sí. Consulte los ejemplos de configuración correspondientes en Overview of data migration solutions.
¿Cuál es la diferencia entre usar una instancia de RDS y una instancia de base de datos autogestionada con una dirección IP pública como origen de una tarea de migración?
Si selecciona una instancia de RDS al configurar una tarea de migración, esta se adapta automáticamente a cambios como modificaciones de DNS o cambios en el tipo de red de la instancia. Esta adaptación garantiza de manera efectiva la confiabilidad del enlace.
¿DTS admite la migración de una base de datos autogestionada en una instancia de ECS dentro de una VPC hacia una instancia de RDS?
Sí.
Si la instancia de ECS de origen y la instancia de RDS de destino están en la misma región, DTS accede directamente a la base de datos autogestionada en la instancia de ECS dentro de la VPC.
Si la instancia de ECS de origen y la instancia de RDS de destino están en regiones distintas, asigne una dirección IP elástica (EIP) a la instancia de ECS. Al configurar la tarea de migración, seleccione la instancia de ECS como instancia de origen. DTS usará automáticamente la EIP de la instancia de ECS para acceder a la base de datos.
¿DTS bloquea las tablas durante la migración? ¿Afecta esto a la base de datos de origen?
DTS no bloquea las tablas de la base de datos de origen durante la migración completa ni la migración incremental de datos. En ambas fases, las tablas de datos del origen de la migración admiten operaciones normales de lectura y escritura.
Cuando DTS ejecuta una migración de RDS, ¿obtiene los datos de la base de datos principal o de la secundaria?
Durante la migración de datos, DTS extrae la información de la base de datos principal de RDS.
¿Puedo programar una migración automática?
No. Actualmente, DTS no admite la programación del inicio de tareas de migración de datos.
¿DTS admite la migración de datos para instancias de RDS en modo VPC?
Sí. Especifique el ID de la instancia de RDS al configurar la tarea de migración.
Cuando DTS ejecuta una migración o sincronización dentro de la misma cuenta o entre cuentas distintas, ¿utiliza la red interna o la red pública para las instancias de ECS y RDS? ¿Se generan cargos de tráfico?
La red (interna o pública) que utiliza DTS para las tareas de sincronización o migración no depende de si la tarea involucra varias cuentas. La generación de cargos por tráfico depende del tipo de tarea.
-
Red utilizada
Tarea de migración: si la migración de datos se ejecuta dentro de la misma región, DTS usa la red interna para conectarse a las instancias de ECS y RDS. Si la migración se realiza entre regiones distintas, DTS usa la red pública para conectarse a la instancia de origen (ECS o RDS) y la red interna para la instancia de RDS de destino.
Tarea de sincronización: usa la red interna.
-
Cargos de tráfico
En las tareas de migración, se cobran cargos por el tráfico saliente de la red pública si el Access Method de la instancia de base de datos de destino es Public IP Address. Otros tipos de instancias de DTS no generan cargos de tráfico.
Tarea de sincronización: no genera cargos de tráfico.
¿Se eliminan los datos de la base de datos de origen después de migrarlos con DTS?
No. Cuando DTS ejecuta una migración de datos, copia la información de la base de datos de origen a la de destino. Este proceso no afecta los datos de la base de datos de origen.
Cuando DTS migra datos entre instancias de RDS, ¿puedo especificar el nombre de la base de datos de destino?
Sí. Utilice la función de asignación de nombres de bases de datos para especificar el nombre de la base de datos de destino durante la migración de datos entre instancias de RDS. Data synchronization or migration between different database names.
¿Qué debo hacer si el origen de una tarea de migración de DTS no se conecta a una instancia de ECS?
Es posible que la instancia de ECS no tenga una dirección IP pública expuesta. Vincule una EIP a la instancia de ECS e inténtelo de nuevo. Elastic IP Address.
¿Por qué una tarea de migración entre instancias de Redis no muestra la migración completa?
Migre los datos entre instancias de Redis mediante Incremental Data Migration. Esta opción combina la migración completa de datos con la migración incremental.
¿Se puede omitir la migración completa?
Sí. Si omite la migración completa, la migración incremental continúa, pero pueden surgir errores. Se recomienda no omitir la migración completa.
¿La edición de clúster de Redis admite la conexión a DTS mediante una dirección IP pública?
No. Actualmente, solo la edición independiente de Redis admite la conexión a una instancia de migración de DTS mediante una dirección IP pública.
¿Qué debo tener en cuenta al migrar de MySQL 8.0 a MySQL 5.6?
Cree una base de datos en MySQL 5.6 antes de ejecutar la migración. Se recomienda que las versiones de las bases de datos de origen y de destino coincidan. También puede migrar de una versión inferior a una superior para garantizar la compatibilidad. Si migra de una versión superior a una inferior, pueden presentarse problemas de compatibilidad en la base de datos.
¿Las cuentas de la base de datos de origen se pueden migrar a la base de datos de destino?
Actualmente, solo las tareas de migración entre instancias de ApsaraDB RDS for MySQL admiten la migración de cuentas. El resto de las tareas de migración no lo permiten.
¿Cómo configuro los parámetros cuando Message Queue for Apache Kafka es el destino?
Configure los parámetros según sus necesidades. Configure parameters for a Message Queue for Apache Kafka instance.
¿Cómo ejecuto una migración completa programada?
Utilice la directiva de programación de la función de integración de datos para migrar periódicamente el esquema y los datos históricos del origen al destino. Configure a data integration task between ApsaraDB RDS for MySQL instances.
¿Se admite la migración de un SQL Server autogestionado en una instancia de ECS hacia un SQL Server autogestionado local?
Sí. Conecte el SQL Server autogestionado local a Alibaba Cloud. Overview of preparations.
¿Se admite la migración de bases de datos PostgreSQL desde otras nubes?
Sí. DTS admite la migración de datos siempre que la base de datos PostgreSQL de otra nube permita el acceso de DTS a través de la red pública.
Si la versión de PostgreSQL es anterior a la 10.0, no se admite la migración incremental.
Problemas de suscripción de datos
¿Cómo funciona la suscripción de datos?
¿Se elimina el grupo de consumidores cuando caduca una tarea de seguimiento de cambios?
Después de que caduca una tarea de seguimiento de cambios de DTS, el grupo de consumidores de datos se conserva durante siete días. Si no renueva la instancia en los siete días posteriores a su caducidad, se libera y también se elimina el grupo de consumidores correspondiente.
¿Se puede usar una instancia de solo lectura como instancia de origen para una tarea de seguimiento?
Existen dos situaciones posibles:
Si la instancia es de solo lectura y registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.7 o 8.0, úsela como instancia de origen.
Si la instancia es de solo lectura y no registra registros de transacciones, como una instancia de ApsaraDB RDS for MySQL 5.6, no la utilice como instancia de origen.
¿Cómo consumo los datos rastreados?
¿Por qué cambia el formato de los datos de fecha después de transferirlos con la función de seguimiento de cambios?
El formato predeterminado de almacenamiento de datos de fecha en DTS es YYYY:MM:DD. Aunque YYYY-MM-DD es el formato de visualización, el formato de almacenamiento real es YYYY:MM:DD. Por lo tanto, independientemente del formato de los datos transferidos, estos se convierten finalmente al formato predeterminado.
¿Cómo soluciono problemas en una tarea de seguimiento?
¿Qué hago si el SDK se detiene repentinamente y no rastrea datos mientras los descarga correctamente?
Compruebe si el código del SDK llama a la interfaz ackAsConsumed para reportar el desplazamiento del consumidor. Si no se llama a ackAsConsumed para reportarlo, los datos del espacio de caché Record configurado dentro del SDK no se eliminan. Cuando la caché se llena por completo, no se extraen nuevos datos. Esto provoca que el SDK se detenga y no pueda rastrear los datos.
¿Qué hago si el SDK no rastrea datos correctamente después de volver a ejecutarlo?
Antes de iniciar el SDK, modifique el desplazamiento del consumidor para que quede dentro del rango de datos. Save and query consumer offsets.
¿Cómo especifica un cliente un punto en el tiempo para el consumo de datos?
Al consumir los datos rastreados, complete el parámetro initCheckpoint para especificar un punto en el tiempo. Use SDK sample code to consume tracked data.
¿Cómo restablezco el desplazamiento si una tarea de seguimiento de DTS tiene datos acumulados?
-
Según el modo de uso del cliente del SDK, abra el archivo de código correspondiente, como DTSConsumerAssignDemo.java o DTSConsumerSubscribeDemo.java.
En la columna Data Range de la lista de tareas de seguimiento, consulte el rango de desplazamiento modificable para la instancia de seguimiento de destino.
Seleccione un nuevo desplazamiento de consumidor según sus necesidades y conviértalo a una marca de tiempo UNIX.
Reemplace el desplazamiento de consumidor antiguo (parámetro initCheckpoint) en el archivo de código con el nuevo desplazamiento convertido.
Vuelva a ejecutar el cliente.
¿Qué hago si el cliente no se conecta mediante la dirección VPC de la tarea de seguimiento?
Es posible que la máquina donde reside el cliente no esté en la VPC especificada al configurar la tarea de seguimiento. Por ejemplo, si cambió la VPC del cliente. Vuelva a configurar la tarea.
¿Por qué el desplazamiento del consumidor en la consola es mayor que el valor máximo del rango de datos?
La frecuencia de actualización del rango de datos del canal de seguimiento es de 1 minuto, mientras que la del desplazamiento del consumidor es de 10 segundos. Por lo tanto, si consume datos en tiempo real, el valor del desplazamiento del consumidor puede superar el valor máximo del rango de datos del canal de seguimiento.
¿Cómo garantiza DTS que los datos rastreados por el SDK formen una transacción completa?
DTS busca la transacción completa que corresponde al desplazamiento de consumidor proporcionado. El servidor distribuye los datos hacia abajo a partir de la sentencia BEGIN de toda la transacción, por lo que se recibe el contenido completo de esta.
¿Cómo compruebo si los datos se consumen correctamente?
Si los datos se consumen correctamente, el desplazamiento del consumidor en la consola de Data Transmission Service avanza con normalidad.
¿Qué significa usePublicIp=true en el SDK de seguimiento de cambios?
En la configuración del SDK de seguimiento de cambios, usePublicIp=true indica que el SDK accede al canal de seguimiento de DTS a través de la red pública.
¿Se afecta el negocio cuando se cambia o reinicia la base de datos principal de RDS de una tarea de seguimiento de cambios?
Cuando ocurre un failover entre la base de datos principal y la secundaria, o un reinicio en una instancia de ApsaraDB RDS for MySQL, ApsaraDB RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL o PolarDB-X 1.0 (con tipo de almacenamiento RDS for MySQL), DTS se adapta automáticamente. Por lo tanto, el negocio no se ve afectado.
¿RDS ofrece una herramienta para descargar automáticamente los registros binarios a un servidor local?
La función de seguimiento de cambios de DTS admite el seguimiento en tiempo real de los registros binarios de RDS. Active el servicio de seguimiento de cambios de DTS y use su SDK para rastrear los datos de los registros binarios de RDS y sincronizarlos con un servidor local en tiempo real.
¿Los datos incrementales en tiempo real del seguimiento de cambios incluyen solo datos nuevos o también los modificados?
Los datos incrementales que rastrea el seguimiento de cambios de DTS incluyen todas las inserciones, eliminaciones, modificaciones y cambios de esquema (DDL).
¿Por qué el SDK recibe datos duplicados después de reiniciarse si el extremo consumidor de una tarea de seguimiento de cambios no envía un ACK de un registro?
Cuando el SDK no envía un ACK de un mensaje, el servidor termina de enviar todos los mensajes del búfer. Una vez finalizado el envío, el SDK deja de recibir mensajes. En ese momento, el desplazamiento de consumidor guardado por el servidor corresponde al último mensaje previo al que no recibió el ACK. Al reiniciar el SDK, el servidor vuelve a enviar los datos desde el desplazamiento del mensaje anterior al no confirmado para evitar la pérdida de información. Por ello, el SDK recibe algunos mensajes duplicados.
¿Con qué frecuencia se actualiza el desplazamiento del consumidor en el seguimiento de cambios y por qué el SDK a veces recibe datos duplicados al reiniciarse?
Después de que el SDK de seguimiento de cambios consume cada mensaje, debe llamar a ackAsConsumed para responder con un ACK al servidor. Al recibir el ACK, el servidor actualiza el desplazamiento del consumidor en la memoria y lo persiste cada 10 segundos. Si el SDK se reinicia antes de que se persista el último ACK, el servidor comienza a enviar mensajes desde el último desplazamiento de consumidor persistido para evitar pérdidas de datos. En este caso, el SDK recibe mensajes duplicados.
¿Una sola instancia de seguimiento de cambios puede rastrear varias instancias de RDS?
No. Actualmente, una instancia de seguimiento de cambios solo rastrea una instancia de RDS.
¿Se produce inconsistencia de datos en una instancia de seguimiento de cambios?
No. Una tarea de seguimiento de cambios solo obtiene las modificaciones de la base de datos de origen, por lo que no genera inconsistencia de datos. Si los datos que consume el cliente no coinciden con lo esperado, solucione el problema por su cuenta.
¿Qué debo hacer si aparece UserRecordGenerator al consumir datos de suscripción?
Si al consumir los datos rastreados aparece un mensaje como UserRecordGenerator: haven't receive records from generator for 5s, compruebe que el desplazamiento del consumidor esté dentro del rango de desplazamiento del módulo de ingesta de datos incrementales. Además, asegúrese de que el extremo consumidor funcione correctamente.
¿Se pueden crear varias particiones para un solo tema?
No. Para garantizar el orden global de los mensajes, cada tema de seguimiento en DTS tiene una sola partición, asignada de forma fija a la partición 0.
¿El SDK de seguimiento de cambios es compatible con Go?
Sí. Para ver ejemplos de código, consulte el repositorio dts-subscribe-demo.
¿El SDK de seguimiento de cambios es compatible con Python?
Sí. Para ver ejemplos de código, consulte dts-subscribe-demo.
¿flink-dts-connector admite el consumo simultáneo multihilo de datos rastreados?
No.
¿Puedo configurar una tarea de seguimiento de cambios y una de sincronización de datos para la misma instancia de RDS?
Sí. Ambas tareas no interfieren entre sí. Una tarea de seguimiento de cambios y una de sincronización de datos son tipos independientes que coexisten en la misma instancia de RDS sin interferirse mutuamente.
Problemas de validación de datos
¿Cuáles son las causas de la inconsistencia de datos en una tarea de validación?
A continuación se describen las causas más comunes:
La tarea de migración o sincronización presenta un retraso.
Se agregó una columna con un valor predeterminado a la base de datos de origen y la tarea tiene un retraso.
Se escribieron datos en la base de datos de destino desde orígenes distintos a DTS.
Se ejecutó una operación DDL en la base de datos de origen de una tarea que tenía habilitada la función de combinación de varias tablas.
La tarea de migración o sincronización utilizó la función de asignación de nombres de bases de datos, tablas y columnas.
¿Por qué una tarea de validación de esquemas reporta una diferencia en isRelHasoids?
En versiones de PostgreSQL anteriores a la 12, agregue un campo de identificador de objeto único global (OID) si especifica WITH OIDS al crear una tabla. Si el origen de una tarea de validación de estructuras contiene tablas creadas con WITH OIDS y el destino es una versión posterior de PostgreSQL que no admite WITH OIDS, se detecta una diferencia de isRelHasoids.
¿Debo prestar atención a una diferencia de isRelHasoids reportada por una tarea de validación de esquemas?
No.
¿DTS sincroniza o migra el campo de identificador de objeto (OID)?
El campo de identificador de objeto (OID) se genera automáticamente al especificar WITH OIDS. DTS no sincroniza ni migra estos datos, sin importar si el destino admite este campo o no.
¿Cómo compruebo si una tabla tiene un campo de identificador de objeto (OID)?
En el comando, reemplace <table_name> con el nombre de la tabla que desea consultar.
Comando SQL:
SELECT relname AS table_name, relhasoids AS has_oids FROM pg_class WHERE relname = '<table_name>' AND relkind = 'r';Comando de cliente:
\d+ <table_name>
¿Cómo soluciono las inconsistencias de datos en el informe de verificación completa de datos?
Siga estos pasos para solucionar el problema:
Revise los valores de origen y de destino de las columnas correspondientes en el informe de verificación para identificar los campos y valores inconsistentes específicos.
Con base en el informe de verificación, inicie sesión manualmente en las bases de datos de origen y de destino. Compare los valores diferentes para determinar si son los esperados.
Confirme que no se escriban datos en las bases de datos de origen ni de destino durante la verificación. Si no es posible garantizarlo, pause las escrituras en la base de datos de origen durante las horas de menor actividad y vuelva a iniciar la verificación.
Si la inconsistencia persiste, habilite temporalmente SQL Insight (pay-as-you-go) en las bases de datos de origen y de destino. Revise los registros de auditoría para comprobar si los campos correspondientes se modificaron.
Las diferencias en ciertos atributos, como
SECURITY_TYPE), son un comportamiento esperado y no requieren ninguna acción.Una verificación completa de datos exitosa demuestra la consistencia de la información después de modificaciones no estándar en el backend.
Las inconsistencias en la verificación completa de datos generalmente no se relacionan con diferencias estructurales. Ejecute manualmente
count(*)para comparar la cantidad de registros en las bases de datos de origen y de destino como verificación adicional.
¿Por qué el progreso de la tarea de DTS sigue mostrándose incompleto (por ejemplo, 41 %) después de finalizar la transferencia de datos?
El porcentaje de progreso de una tarea de DTS incluye dos fases: la transferencia de datos (migración completa) y la verificación de datos. Cuando la migración completa finaliza, el porcentaje restante representa el proceso de verificación en curso. Esta verificación es una fase independiente de comprobación de consistencia que se ejecuta después de la transferencia total. La tarea general se completa únicamente cuando el progreso de verificación alcanza el 100 %.
Si necesita revisar los datos inmediatamente después de que termine la transferencia, conéctese manualmente a la base de datos de destino para verificarlos. No es necesario esperar a que el progreso de verificación llegue al 100 %.
Causas y soluciones de consultas SQL lentas durante la verificación completa de datos
Causa: durante la verificación completa de datos, DTS lee los datos de tablas grandes en fragmentos mediante el ID de clave principal. Cuando el volumen de datos es alto, estas consultas por fragmentos tardan mucho tiempo, lo que puede generar consultas SQL lentas en la base de datos de origen.
Solución:
Primero, compruebe si la tarea de verificación completa de datos se detuvo. Si ya finalizó, no deberían generarse más consultas de este tipo.
Si la tarea de verificación sigue en ejecución y afecta su negocio, ejecute la verificación completa de datos durante las horas de menor actividad. También puede pausar la tarea y volver a iniciarla en ese mismo horario.
Otros problemas
¿Qué impacto tiene modificar datos en la base de datos de destino mientras se ejecuta una tarea de sincronización o migración?
Modificar datos en la base de datos de destino puede provocar que la tarea de DTS falle. Si durante la migración o sincronización ejecuta operaciones sobre los objetos involucrados en la base de datos de destino, pueden surgir conflictos de claves principales, ausencia de registros de actualización u otros problemas. Estas situaciones causan el fallo de la tarea de DTS. Sin embargo, puede ejecutar operaciones que no interrumpan la tarea, como crear una tabla en la instancia de destino y escribir en ella. Como esta tabla no forma parte de los objetos de migración o sincronización, no provoca fallos en la tarea de DTS.
DTS lee la información de la base de datos de la instancia de origen y migra o sincroniza sus datos completos, de esquema e incrementales hacia la instancia de destino. Por lo tanto, los datos modificados en la base de datos de destino durante la tarea pueden sobrescribirse con la información migrada o sincronizada desde el origen.
¿Se pueden escribir datos en las bases de datos de origen y de destino al mismo tiempo mientras se ejecuta una tarea de sincronización o migración?
Sí. No obstante, si se escriben datos en la base de datos de destino desde orígenes distintos a DTS mientras la instancia está en ejecución, la base de datos de destino o la propia instancia de DTS pueden presentar anomalías.
¿Qué ocurre si cambio la contraseña de la base de datos de origen o de destino mientras se ejecuta una instancia de DTS?
La instancia de DTS reporta un error y se interrumpe. Haga clic en el ID de la instancia para consultar sus detalles y modifique la contraseña de la cuenta de origen o de destino en la pestaña Basic Information. Luego, vaya a la pestaña Task Management y reinicie el módulo que reportó el error en la sección Basic Information.
¿Por qué algunas bases de datos de origen o de destino no tienen un tipo de conexión por IP pública?
Esto depende del tipo de conexión de la base de datos de origen o de destino, del tipo de tarea y del motor de base de datos. Por ejemplo, para un origen de tipo MySQL, las tareas de migración y seguimiento permiten elegir la conexión mediante una dirección IP pública, mientras que las tareas de sincronización no admiten conexiones por IP pública.
¿Se admite la migración o sincronización de datos entre cuentas distintas?
¿Las bases de datos de origen y de destino pueden ser la misma instancia?
Sí. Si el origen y el destino son la misma instancia, utilice la función de asignación para aislar los datos. De lo contrario, la instancia de DTS puede fallar o perderse información. Database, table, and column mapping.
¿Por qué una tarea con Redis como destino reporta el error "OOM command not allowed when used memory > 'maxmemory'"?
Es posible que el espacio de almacenamiento de la instancia de Redis de destino sea insuficiente. Si el tipo de arquitectura de la instancia de Redis de destino es de clúster, también puede deberse a que un shard alcanzó su límite de memoria. Actualice las especificaciones de la instancia de destino.
¿Qué es la directiva de acceso AliyunDTSRolePolicy y para qué sirve?
La directiva AliyunDTSRolePolicy permite que DTS acceda a recursos en la nube, como RDS y ECS, dentro de la cuenta actual o entre cuentas distintas. El sistema invoca la información de los recursos en la nube correspondientes cuando usted configura una tarea de migración, sincronización o seguimiento. Grant DTS permissions to access cloud resources.
¿Cómo otorgo autorización de roles de RAM?
Cuando inicia sesión en la consola por primera vez, DTS le solicita autorizar el rol AliyunDTSDefaultRole. Siga las indicaciones para ir a la página de autorización de RAM. Grant DTS permissions to access cloud resources.
Inicie sesión en la consola con una cuenta de Alibaba Cloud para ejecutar esta operación.
¿Se puede modificar la contraseña de la cuenta ingresada en una tarea de DTS?
Modifique la contraseña de la cuenta de base de datos de una tarea de DTS. Haga clic en el ID de la instancia para abrir la página de detalles. En la pestaña Basic Information, haga clic en Change Password para cambiar la contraseña de la base de datos de origen o de destino.
La contraseña de la cuenta del sistema de una tarea de DTS no se puede modificar.
¿Por qué una tabla de MaxCompute tiene el sufijo "_base"?
-
Sincronización inicial de esquemas.
DTS sincroniza las definiciones de esquema de las tablas desde la base de datos de origen hacia MaxCompute. Durante la inicialización, DTS agrega el sufijo
_basea los nombres de las tablas. Por ejemplo, si la tabla de origen escustomer, la tabla en MaxCompute pasa a sercustomer_base. -
Sincronización inicial completa de datos.
DTS sincroniza todos los datos históricos de las tablas de la base de datos de origen hacia las tablas
_baseen MaxCompute. Por ejemplo, los datos de la tablacustomeren la base de datos de origen se sincronizan con la tablacustomer_baseen MaxCompute. Estos datos sirven como línea base para la sincronización incremental posterior.NotaEsta tabla también se conoce como tabla de línea base completa.
-
Sincronización incremental de datos.
DTS crea una tabla de registros incrementales en MaxCompute. El nombre de esta tabla es el de la tabla de destino con el sufijo
_log, comocustomer_log. Después, DTS sincroniza los datos incrementales de la base de datos de origen hacia esta tabla en tiempo real.NotaPara obtener más información sobre la estructura de la tabla de registros incrementales, consulte Incremental log table schema.
¿Qué hago si no puedo obtener el tema de Kafka?
Es posible que el broker de Kafka configurado actualmente no contenga información del tema. Ejecute el siguiente comando para comprobar la distribución de brokers del tema:
./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name
¿Puedo construir una instancia de MySQL local como base de datos secundaria para una instancia de RDS?
Sí. Utilice la función de migración de datos de Data Transmission Service (DTS) para configurar la sincronización de datos en tiempo real desde RDS hacia una instancia de MySQL autogestionada local. De este modo, logrará una arquitectura principal-secundaria.
¿Cómo copio datos de una instancia RDS a una instancia RDS recién creada?
Seleccione los tipos de migración de esquema, completa e incremental. Data migration between ApsaraDB RDS instances.
¿DTS admite copiar una base de datos dentro de una instancia RDS para crear una nueva idéntica, salvo por el nombre?
Sí. La función de asignación de nombres de objetos que proporciona DTS permite copiar una base de datos dentro de una instancia RDS. De esta forma se crea una base de datos nueva idéntica a la original, con excepción del nombre.
¿Qué hago si una instancia de DTS siempre muestra un retraso?
A continuación se describen las posibles causas:
Se crearon varias tareas de DTS para la instancia de base de datos de origen con cuentas distintas, lo cual generó una carga alta en la instancia. Utilice la misma cuenta para crear las tareas.
-
La instancia de base de datos de destino no tiene memoria suficiente. Organice sus operaciones comerciales y reinicie la instancia de base de datos de destino. Si el problema persiste, actualice las especificaciones de la instancia de destino o ejecute un failover entre el nodo primario y el secundario.
NotaUn failover entre el nodo primario y el secundario puede provocar una desconexión transitoria. Asegúrese de que su aplicación cuente con un mecanismo de reconexión automática.
¿Qué hago si los campos aparecen en minúsculas después de sincronizar o migrar a la base de datos de destino en la consola anterior?
Utilice la consola nueva junto con la directiva de mayúsculas y minúsculas para los nombres de objetos de la base de datos de destino. Destination database object name case policy.
¿Se puede reanudar una tarea de DTS pausada?
Por lo general, una tarea de DTS pausada durante 24 horas o menos se reanuda sin problemas. Si el volumen de datos es pequeño, también se reanudan correctamente las tareas pausadas hasta por 7 días. Se recomienda no pausar una tarea por más de 6 horas.
¿Por qué el progreso vuelve a 0 después de pausar y reiniciar una tarea?
Cuando se reinicia una tarea, DTS vuelve a consultar los datos ya procesados y luego continúa con los datos restantes. Durante este proceso, el progreso mostrado puede diferir del real debido a la latencia.
¿En qué consiste el cambio DDL sin bloqueo?
Para conocer los principios fundamentales del cambio DDL sin bloqueo, consulte Main principles.
¿DTS permite pausar la sincronización o migración de una tabla específica?
No.
¿Necesito volver a comprar una tarea si termina con errores?
No. Configure nuevamente la tarea original.
¿Qué sucede si varias tareas escriben datos en el mismo destino?
Esto puede generar inconsistencias en los datos.
¿Por qué la instancia sigue bloqueada después de la renovación?
Después de renovar una instancia de DTS bloqueada, toma cierto tiempo desbloquearla. Espere a que finalice el proceso.
¿Puedo cambiar el resource group de una instancia de DTS?
Sí. En la página Basic Information de la instancia, haga clic en Modification junto a Resource Group Name en la sección Basic Information.
¿DTS incluye alguna herramienta para analizar registros binarios?
No, DTS no cuenta con ninguna herramienta para analizar registros binarios.
¿Es normal que una tarea incremental siempre muestre un 95 %?
Sí. Una tarea incremental es continua y nunca finaliza, por lo que el progreso no alcanza el 100 %.
¿Por qué una tarea de DTS no se libera después de más de 7 días?
En ocasiones, una tarea congelada se conserva por más de 7 días.
¿Puedo modificar el puerto de una tarea ya creada?
Esta operación no es compatible.
¿Se pueden reducir las especificaciones de la instancia RDS for MySQL asociada a PolarDB-X 1.0 en una tarea de DTS?
No se recomienda reducir las especificaciones. Esta acción desencadena un failover entre el nodo primario y el secundario, lo cual puede provocar pérdida de datos.
¿Se pueden actualizar o reducir las especificaciones de la instancia de origen o de destino mientras se ejecuta una tarea de DTS?
Actualizar o reducir las especificaciones de la instancia de origen o de destino durante la ejecución de una tarea de DTS puede causar latencia o pérdida de datos. No se recomienda modificar las especificaciones de estas instancias.
¿Qué impacto tiene una tarea de DTS en las instancias de origen y de destino?
La sincronización inicial completa de datos consume recursos de lectura y escritura de las bases de datos de origen y de destino, lo cual puede aumentar su carga. Se recomienda ejecutar las tareas completas fuera del horario de mayor actividad.
¿Cuál es la latencia aproximada de una tarea de DTS?
No es posible estimar la latencia de una tarea de DTS porque depende de varios factores. Entre ellos destacan la carga de ejecución de la instancia de origen, el ancho de banda de la red de transmisión, la latencia de la red y el rendimiento de escritura de la instancia de destino.
Si la consola de Data Transmission Service redirige automáticamente a la consola de Data Management (DMS), ¿cómo regreso a la versión anterior?
En la consola de DMS, haga clic en el ícono
ubicado en la esquina inferior derecha. Luego, haga clic en
para volver a la versión anterior de la consola de Data Transmission Service.
¿DTS admite el cifrado de datos?
DTS permite acceder de forma segura a la base de datos de origen o de destino mediante el cifrado SSL (Secure Sockets Layer) para leer o escribir datos. Sin embargo, no admite el cifrado de los datos en tránsito durante la transmisión.
¿DTS admite ClickHouse como origen o destino?
No.
¿DTS admite AnalyticDB for MySQL 2.0 como origen o destino?
AnalyticDB for MySQL 2.0 solo se admite como destino. Además, la solución con AnalyticDB for MySQL 2.0 como destino aún no está disponible en la consola nueva; únicamente se configura desde la consola anterior.
¿Por qué no aparece una tarea recién creada en la consola?
Es posible que haya seleccionado una lista de tareas incorrecta o que haya aplicado algún filtro. Seleccione las opciones de filtrado adecuadas en la lista correspondiente, como la región y el resource group correctos.
Compruebe que la lista desplegable de ámbito de recursos All Resources y la lista de selección de Region (por ejemplo, China (Hangzhou)) en la barra de navegación superior de la consola estén configuradas correctamente. Si estos valores no coinciden, las tareas recién creadas no serán visibles.
¿Se pueden modificar los elementos de configuración atenuados de una tarea ya creada?
Esta operación no es compatible.
¿Cómo configuro las alertas y los umbrales de latencia?
DTS ofrece funciones de monitoreo y alertas. Establezca reglas de alerta para las métricas importantes y así dar seguimiento al estado de ejecución. Configure monitoring and alerting.
¿Puedo consultar la causa de error de una tarea que lleva mucho tiempo con errores?
No. Si una tarea presenta errores durante mucho tiempo (por ejemplo, más de 7 días), los registros correspondientes se eliminan y ya no es posible consultar la causa.
¿Se puede restaurar una tarea que lleva mucho tiempo con errores?
No. Si una tarea presenta errores durante mucho tiempo (por ejemplo, más de 7 días), los registros correspondientes se eliminan y no se pueden restaurar. Configure la tarea nuevamente.
¿Qué es la cuenta rdsdt_dtsacct?
Si usted no creó la cuenta rdsdt_dtsacct, es probable que DTS la haya generado. Este servicio crea la cuenta integrada rdsdt_dtsacct en algunas instancias de base de datos para conectarse a los orígenes y destinos.
¿Cómo consulto información sobre tablas de montículo, tablas sin clave primaria, tablas comprimidas, tablas con columnas calculadas y tablas con columnas dispersas en SQL Server?
Ejecute las siguientes instrucciones SQL para comprobar si la base de datos de origen contiene tablas en estos escenarios:
-
Compruebe si existen tablas de montículo en la base de datos de origen:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0); -
Compruebe si existen tablas sin clave primaria:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK'); -
Compruebe si hay columnas de clave primaria que no estén incluidas en el índice clúster:
SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter); -
Compruebe si existen tablas comprimidas en la base de datos de origen:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0; -
Compruebe si existen tablas que contengan columnas calculadas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1); -
Compruebe si existen tablas que contengan columnas dispersas:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);
¿Qué hago si los esquemas de origen y de destino no coinciden?
Intente utilizar la función de asignación para vincular las columnas entre el origen y el destino. Database, table, and column mapping.
No se admite la modificación del tipo de columna.
¿La asignación de bases de datos, tablas y columnas permite modificar el tipo de columna?
No.
¿DTS permite limitar la velocidad de lectura de la base de datos de origen?
No. Antes de ejecutar la tarea, evalúe el rendimiento de la base de datos de origen (por ejemplo, compruebe si las IOPS y el ancho de banda de la red cumplen con los requisitos). También se recomienda ejecutar la tarea fuera del horario de mayor actividad.
¿Cómo limpio documentos huérfanos en una instancia de clúster fragmentado de MongoDB?
Comprobar si existen documentos huérfanos
-
Conéctese a la instancia de clúster fragmentado de MongoDB mediante el shell de mongo.
Para conectarse a ApsaraDB for MongoDB, consulte Connect to a sharded cluster instance using the mongo shell.
-
Ejecute el siguiente comando para cambiar a la base de datos de destino.
use <db_name> -
Ejecute el siguiente comando para consultar la información de los documentos huérfanos.
db.<coll_name>.find().explain("executionStats")NotaConsulte el valor de
executionStatsde cada shard. Si el campochunkSkipsen la etapaSHARDING_FILTERno es 0, significa que existen documentos huérfanos en el shard correspondiente.El siguiente resultado de ejemplo indica que se devolvieron 102 documentos ("nReturned" : 102) en la etapa
FETCHantes de la etapaSHARDING_FILTER. Después, se filtraron dos documentos huérfanos ("chunkSkips" : 2) en la etapaSHARDING_FILTER. Por último, se devolvieron 100 documentos ("nReturned" : 100)."stage" : "SHARDING_FILTER", "nReturned" : 100, ...... "chunkSkips" : 2, "inputStage" : { "stage" : "FETCH", "nReturned" : 102,Para obtener más información sobre la etapa
SHARDING_FILTER, consulte el manual de MongoDB.
Limpiar documentos huérfanos
Si tiene varias bases de datos, debe limpiar los documentos huérfanos de cada una.
ApsaraDB for MongoDB
Ejecutar el script de limpieza en una instancia con una versión principal anterior a MongoDB 4.2 o una versión secundaria anterior a 4.0.6 genera un error. Para consultar la versión actual de su instancia, vea MongoDB minor versions. Para actualizar la versión principal o secundaria, consulte Upgrade the major version of a database y Upgrade the minor version of a database.
Utilice el comando cleanupOrphaned para limpiar los documentos huérfanos. El procedimiento difiere ligeramente entre MongoDB 4.4 (y versiones posteriores) y MongoDB 4.2 (y versiones anteriores).
MongoDB 4.4 y versiones posteriores
-
En un servidor que pueda conectarse a su instancia de clúster fragmentado, cree un script de JavaScript (JS) llamado
cleanupOrphaned.js.NotaEste script limpia los documentos huérfanos de todas las colecciones en varias bases de datos de múltiples shards. Si necesita limpiar los documentos huérfanos de una colección específica, modifique el script JS según corresponda.
// List of shard names var shardNames = ["shardName1", "shardName2"]; // List of databases var databasesToProcess = ["database1", "database2", "database3"]; shardNames.forEach(function(shardName) { // Iterate over the specified list of databases databasesToProcess.forEach(function(dbName) { var dbInstance = db.getSiblingDB(dbName); // Get the names of all collections in the database instance var collectionNames = dbInstance.getCollectionNames(); // Iterate over each collection collectionNames.forEach(function(collectionName) { // The full collection name var fullCollectionName = dbName + "." + collectionName; // Build the cleanupOrphaned command var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName } }; // Execute the command var result = db.adminCommand(command); if (result.ok) { print("Cleaned up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); printjson(result); } else { print("Failed to clean up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); } }); }); });En el script, modifique los valores de los parámetros
shardNamesydatabasesToProcess:shardNames: una matriz con los ID de los shards cuyos documentos huérfanos desea limpiar. Puede obtener los ID de shard en la sección Shard List de la página Basic Information de la instancia. Por ejemplo,d-bp15a3796d3a****.databasesToProcess: una matriz con los nombres de las bases de datos cuyos documentos huérfanos desea limpiar.
-
En el directorio donde se encuentra el script
cleanupOrphaned.js, ejecute el siguiente comando para limpiar los documentos huérfanos.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txtParámetro
Descripción
<Mongoshost>Dirección de conexión del nodo mongos de la instancia de clúster fragmentado. Ejemplo:
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Número de puerto del nodo mongos de la instancia de clúster fragmentado. El valor predeterminado es 3717.
<database>Nombre de la base de datos de autenticación. Corresponde a la base de datos a la que pertenece la cuenta.
<username>Cuenta de la base de datos.
<password>Contraseña de la cuenta de la base de datos.
output.txtArchivo donde se guardan los resultados de la ejecución.
MongoDB 4.2 y versiones anteriores
-
En un servidor que pueda conectarse a su instancia de clúster fragmentado, cree un script JS llamado
cleanupOrphaned.js.NotaEste script limpia los documentos huérfanos de una colección específica dentro de una base de datos determinada en varios shards. Para limpiar los documentos huérfanos de varias colecciones, modifique el parámetro
fullCollectionNamey ejecute el script varias veces, o bien ajuste el script para recorrer las colecciones.function cleanupOrphanedOnShard(shardName, fullCollectionName) { var nextKey = { }; var result; while ( nextKey != null ) { var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey } }; result = db.adminCommand(command); printjson(result); if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) { print("Unable to complete at this time: failure or timeout.") break } nextKey = result.results[shardName].stoppedAtKey; } print("cleanupOrphaned done for coll: " + fullCollectionName + " on shard: " + shardName) } var shardNames = ["shardName1", "shardName2", "shardName3"] var fullCollectionName = "database.collection" shardNames.forEach(function(shardName) { cleanupOrphanedOnShard(shardName, fullCollectionName); });En el script, modifique los valores de los parámetros
shardNamesyfullCollectionName:shardNames: una matriz con los ID de los shards cuyos documentos huérfanos desea limpiar. Puede obtener los ID de shard en la sección Shard List de la página Basic Information de la instancia. Por ejemplo,d-bp15a3796d3a****.fullCollectionName: el nombre de la colección cuyos documentos huérfanos desea limpiar, con el formatodatabase.collection.
-
En el directorio donde se encuentra el script
cleanupOrphaned.js, ejecute el siguiente comando para limpiar los documentos huérfanos.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txtParámetro
Descripción
<Mongoshost>Dirección de conexión del nodo mongos de la instancia de clúster fragmentado. Ejemplo:
s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Número de puerto del nodo mongos de la instancia de clúster fragmentado. El valor predeterminado es 3717.
<database>Nombre de la base de datos de autenticación. Corresponde a la base de datos a la que pertenece la cuenta.
<username>Cuenta de la base de datos.
<password>Contraseña de la cuenta de la base de datos.
output.txtArchivo donde se guardan los resultados de la ejecución.
MongoDB autoadministrado
-
En un servidor que pueda conectarse a su base de datos MongoDB autoadministrada, descargue el archivo de script cleanupOrphaned.js.
wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js" -
Modifique el archivo de script cleanupOrphaned.js. Reemplace
testpor el nombre de la base de datos cuyos documentos huérfanos desea limpiar.ImportanteSi tiene varias bases de datos, repita el paso 2 y el paso 3 para cada una.
function cleanupOrphaned(coll) { var nextKey = { }; var result; while ( nextKey != null ) { result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } ); if (result.ok != 1) print("Unable to complete at this time: failure or timeout.") printjson(result); nextKey = result.stoppedAtKey; } } var dbName = "test" db = db.getSiblingDB(dbName) db.getCollectionNames().forEach(function(collName) { cleanupOrphaned(dbName + "." + collName); }); -
Ejecute el siguiente comando para limpiar los documentos huérfanos de todas las colecciones de la base de datos especificada en un shard.
NotaRepita este paso para cada shard.
mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.jsNota<Shardhost>: dirección IP del shard.
<Primaryport>: puerto de servicio del nodo primario dentro del shard.
<database>: nombre de la base de datos de autenticación. Corresponde a la base de datos a la que pertenece la cuenta.
<username>: cuenta de la base de datos.
<password>: contraseña de la cuenta.
Ejemplo:
En este ejemplo, la base de datos MongoDB autoadministrada tiene tres shards. Debe ejecutar el comando para cada uno de ellos y así limpiar los documentos huérfanos.
mongo --host 172.16.1.10 --port 27018 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
Manejo de excepciones
Si existen cursores inactivos en el namespace de un documento huérfano, es posible que el proceso de limpieza no finalice. En ese caso, el registro de mongod mostrará la siguiente información:
Deletion of DATABASE.COLLECTION range [{ KEY: VALUE1 }, { KEY: VALUE2 }) will be scheduled after all possibly dependent queries finish
Conéctese a una instancia de mongod mediante el shell de mongo y ejecute el siguiente comando para comprobar si existen cursores inactivos en el shard actual. Si los hay, elimínelos con el comando restart mongod o killCursors. Después, intente limpiar los documentos huérfanos nuevamente. Consulte el ticket de JIRA.
db.getSiblingDB("admin").aggregate( [{ $currentOp : { allUsers: true, idleCursors: true } },{ $match : { type: "idleCursor" } }] )
¿Cómo manejo la distribución desigual de datos en un clúster fragmentado de MongoDB?
Habilite la función Balancer y utilice la prefragmentación para resolver la asimetría de datos. Este problema ocurre cuando la mayor parte de la información se escribe en un solo shard.
Habilitar Balancer
Si Balancer está deshabilitado o si aún no comienza el periodo activo de su ventana, habilítelo o cancele temporalmente dicha ventana para iniciar el balanceo de datos de inmediato.
Conéctese a la instancia de clúster fragmentado de MongoDB.
-
En la ventana de comandos del nodo mongos, cambie a la base de datos config.
use config -
Ejecute los siguientes comandos según sea necesario.
-
Habilite la función Balancer.
sh.setBalancerState(true) -
Cancele temporalmente la ventana de Balancer.
db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )
-
Prefragmentación
MongoDB admite dos métodos de fragmentación: por rango y por hash. La prefragmentación distribuye los chunks de manera uniforme entre varios nodos shard, lo cual ayuda a lograr un balanceo de carga óptimo durante la sincronización o migración de datos con DTS.
Fragmentación por hash
Utilice el parámetro numInitialChunks para implementar la prefragmentación. El valor de este parámetro es de manera predeterminada número de shards × 2 y se establece hasta un máximo de número de shards × 8192. sh.shardCollection().
sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})
Fragmentación por rango
Si el MongoDB de origen es un clúster fragmentado (sharded cluster), puede utilizar los datos de
config.chunkspara recuperar el rango de fragmentos de la tabla fragmentada. A continuación, puede usar este rango como referencia para el valor<split_value>en sus comandos de prefragmentación.-
Si el MongoDB de origen es un conjunto de réplicas, solo puede utilizar el comando
findpara determinar el rango de la clave de fragmentación y, a continuación, definir un punto de división razonable.# Get the minimum value of the shard key db.<coll>.find().sort({<shardKey>:1}).limit(1) # Get the maximum value of the shard key db.<coll>.find().sort({<shardKey>:-1).limit(1)
Formato del comando
El siguiente ejemplo utiliza el comando splitAt. Consulte también sh.splitAt(), sh.splitFind() y Split Chunks in a Sharded Cluster.
sh.splitAt("<db>.<coll>", {"<shardKey>":<split_value>})
Ejemplo de instrucción
sh.splitAt("test.test", {"id":0})
sh.splitAt("test.test", {"id":50000})
sh.splitAt("test.test", {"id":75000})
Una vez completada la operación de prefragmentación, ejecute el comando sh.status() en el nodo mongos para comprobar los resultados.
¿Cómo configuro la cantidad de instancias que se muestran por página en la lista de tareas de la consola?
A continuación se muestra un ejemplo con una instancia de sincronización.
-
Vaya a la página de la lista de tareas de sincronización de la región de destino. Para ello, utilice uno de los dos métodos siguientes:
Desde la consola de DTS
Inicie sesión en la consola de Data Transmission Service (DTS).
En el panel de navegación izquierdo, haga clic en Data Synchronization.
En la esquina superior izquierda de la página, seleccione la región donde se encuentra la instancia de sincronización.
Desde la consola de DMS
NotaLas operaciones reales pueden variar según el modo y el diseño de la consola de DMS. Para obtener más información, consulte Simple mode y Customize the layout and style of the DMS interface.
Inicie sesión en Data Management (DMS).
En la barra de menús superior, elija .
A la derecha de Data Synchronization Tasks, seleccione la región donde se encuentra la instancia de sincronización.
Desplácese hasta la parte inferior de la página.
-
En la esquina inferior derecha de la página, seleccione Items per page.
NotaEl parámetro Items per page admite los valores 10, 20 o 50.
¿Qué debo hacer si una instancia de DTS reporta un error de tiempo de espera de conexión a ZooKeeper?
Reinicie la instancia para restablecer la conexión. Para conocer las instrucciones sobre cómo reiniciar una instancia, consulte Start a DTS instance.
¿Por qué se vuelve a agregar automáticamente un bloque CIDR de DTS después de eliminarlo en CEN?
Esto ocurre cuando se usa un router de tránsito Basic Edition de Cloud Enterprise Network (CEN) para conectar la base de datos a DTS. Si crea una instancia de DTS con esa base de datos, el servicio agrega automáticamente el rango de direcciones IP del servidor al router correspondiente, incluso si ya eliminó el bloque CIDR de DTS en CEN.
¿Se pueden exportar las tareas de DTS?
No, esta función no es compatible.
¿Cómo llamo a una OpenAPI con Java?
La llamada a una openapi en Java es similar a la de Python. Consulte Python SDK call example. Vaya a la página SDK de Data Transmission Service DTS, seleccione el lenguaje de programación deseado en All Languages y revise el código de ejemplo.
¿Cómo uso una API para configurar la función ETL en una tarea de sincronización o migración?
Configure esta función mediante parámetros comunes como etlOperatorCtl y etlOperatorSetting dentro del parámetro Reserve. Consulte ConfigureDtsJob y Reserve parameter description.
¿DTS es compatible con Azure SQL Database?
Sí. Para usar Azure SQL Database como base de datos de origen, establezca SQL Server Incremental Synchronization Mode en Polling and querying CDC instances for incremental synchronization.
¿Se conservan los datos de la base de datos de origen al terminar la sincronización o migración de DTS?
Sí. DTS no elimina los datos de la base de datos de origen. Si ya no necesita esos datos, elimínelos manualmente.
¿Se puede ajustar la velocidad cuando la instancia de sincronización o migración ya está en ejecución?
Sí. Consulte Adjust the migration rate.
¿DTS permite muestrear datos por periodo de tiempo durante la sincronización o migración?
No.
¿Debo crear manualmente las tablas de datos en la base de datos de destino al sincronizar o migrar?
En DTS instances that support database and table schema tasks (sincronización o migración de esquemas), no es necesario crear manualmente las tablas de datos en la base de datos de destino si seleccionó Schema Synchronization en Synchronization Types o Schema Migration en Migration Types.
¿Las redes de las bases de datos de origen y destino deben estar conectadas para sincronizar o migrar datos?
No es necesario.
¿Debo configurar la autorización de RAM al crear una tarea de DTS entre cuentas mediante la red pública?
No. Al configurar una tarea de DTS, establezca Access Method de la instancia de base de datos en Public IP Address y complete la configuración.
Las tareas de sincronización de datos no admiten la conexión a una instancia de base de datos mediante el método Public IP Address.
¿Al usar DTS para sincronizar o migrar datos se sobrescriben los datos existentes en el destino?
En la sincronización de datos, el comportamiento predeterminado de DTS y los parámetros relacionados son los siguientes:
Comportamiento predeterminado de DTS
Si ocurre un conflicto de clave primaria o clave única mientras se ejecuta una tarea de sincronización:
-
Cuando los esquemas de las tablas son iguales y un registro de la base de datos de destino tiene el mismo valor de clave primaria o única que un registro de origen:
Durante la sincronización completa, DTS conserva el registro en el clúster de destino y no sincroniza el registro correspondiente de la base de datos de origen.
Durante la sincronización incremental, el registro de la base de datos de origen sobrescribe el registro de la base de datos de destino.
Si los esquemas de las tablas son distintos, la sincronización inicial de datos puede fallar. Esto provoca que solo se sincronicen algunas columnas o que la sincronización falle por completo. Proceda con precaución.
Parámetros relacionados
Durante la configuración de la tarea, utilice el parámetro Processing Mode of Conflicting Tables para controlar cómo gestiona DTS las tablas existentes.
-
Precheck and Report Errors: comprueba si existe una tabla con el mismo nombre en la base de datos de destino. Si no existe, la comprobación previa se supera. Si existe, la comprobación falla y la tarea de sincronización de datos no se inicia.
NotaSi no puede eliminar ni cambiar el nombre de la tabla duplicada en la base de datos de destino, asígnele un nombre distinto mediante asignaciones. Para obtener más información, consulte Map table and column names.
-
Ignore Errors and Proceed: omite la verificación de nombres de tabla duplicados en la base de datos de destino.
AvisoSeleccionar Ignore Errors and Proceed puede generar inconsistencias en los datos y poner en riesgo su negocio. Por ejemplo:
-
Cuando los esquemas de las tablas son iguales y un registro de la base de datos de destino tiene el mismo valor de clave primaria o única que un registro de origen:
Durante la sincronización completa, DTS conserva el registro en el clúster de destino y no sincroniza el registro correspondiente de la base de datos de origen.
Durante la sincronización incremental, el registro de la base de datos de origen sobrescribe el registro de la base de datos de destino.
Si los esquemas de las tablas son distintos, la sincronización inicial de datos puede fallar. Esto provoca que solo se sincronicen algunas columnas o que la sincronización falle por completo. Proceda con precaución.
-
Recomendación
Para garantizar la consistencia de los datos, se recomienda eliminar la tabla de destino antes de configurar la tarea de DTS, siempre que sus operaciones comerciales lo permitan.
Si los datos existentes en las bases de datos de origen y destino no presentan ningún conflicto (por ejemplo, al migrar datos de varias bases de datos a una sola), configure la tarea de migración sin seleccionar Schema Migration. Sin embargo, asegúrese de que las claves primarias y únicas de ambas bases de datos no entren en conflicto y de que no existan tablas sin clave primaria. En este escenario, la función de verificación de datos no operará correctamente porque los datos de origen y destino ya son inconsistentes.