El cambio del conjunto de caracteres de una tabla (por ejemplo, de gbk a utf8mb4) mediante el comando ALTER bloquea la tabla, lo cual puede afectar significativamente sus servicios si la tabla es grande.
Para evitar el bloqueo de tablas, cree un esquema de tabla con el nuevo conjunto de caracteres en una instancia de destino, migre los datos desde la instancia de origen mediante Data Transmission Service (DTS) y configure una solución de reversión o escritura dual para garantizar una transición fluida.
Precauciones
Antes de cambiar el conjunto de caracteres, pruebe sus aplicaciones y sentencias SQL para asegurar que sean compatibles con el nuevo conjunto.
Durante una migración completa de datos, DTS consume recursos de lectura y escritura tanto en la instancia de origen como en la de destino, lo que puede aumentar la carga de la base de datos. Evalúe el rendimiento de ambas instancias y considere realizar la migración en horarios de baja demanda.
Si una tabla en la instancia de origen carece de clave primaria o restricción única, y sus columnas no garantizan unicidad, la migración podría generar datos duplicados en la instancia de destino.
Paso 1: Exportar e importar el esquema de la tabla
En este ejemplo, todas las instancias a las que se accede mediante Data Management (DMS) utilizan el Flexible Control Mode.
-
Exporte el script de esquema de las tablas cuyo conjunto de caracteres desea modificar desde la instancia de origen.
Inicie sesión en la instancia de origen mediante DMS. Para obtener más información, consulte Log on to an ApsaraDB RDS instance by using DMS.
-
En la barra de navegación superior, seleccione .
NotaPara realizar esta operación, primero debe habilitar Drop-down Menus in Top Navigation Bar en el menú de configuración, accesible mediante el icono en la esquina superior derecha.
-
Configure los parámetros de exportación.
NotaLos parámetros obligatorios y el proceso de configuración pueden variar según el modo de gestión de la instancia de destino. Para obtener más información, consulte Export databases.
Configuración
Descripción
Data Export Type in Application
Seleccione Database Export.
Database name
Seleccione la base de datos que desea exportar.
NotaDebe contar con los permisos necesarios para exportar la base de datos. Para obtener más información, consulte View my permissions.
Exported table
En este ejemplo, se selecciona Specific Tables. Puede elegir Specific Tables o All Tables según sus necesidades.
NotaSi selecciona Specific Tables, debe elegir las tablas y configurar las condiciones de filtro en el lado derecho de la página.
Export content
Seleccione Code Structure.
File Format
En este ejemplo, SQL está seleccionado de forma predeterminada y no se puede modificar.
Exported Structure Type
Seleccione los tipos de esquema que desea exportar según los requisitos de su negocio.
-
Procedure
-
Function
-
Trigger
-
View
-
Event
NotaLos tipos de esquema compatibles varían según el tipo de base de datos. Las opciones que se muestran en la consola son definitivas.
More Options
Haga clic en Big Data Export Options o SQL Script Options y seleccione las opciones necesarias.
-
Haga clic en Submit an application y espere a que se apruebe el ticket.
Una vez aprobado el ticket, en la sección Download, haga clic en Download Exported File. El enlace de descarga tiene una validez de 24 horas; asegúrese de descargar el archivo dentro de este periodo.
Descomprima el archivo descargado. Luego, abra el script de esquema y modifique la configuración del conjunto de caracteres al conjunto de destino.
Adquiera una nueva instancia de ApsaraDB RDS for MySQL con las mismas especificaciones que la instancia de origen. Para obtener más información, consulte Create an ApsaraDB RDS for MySQL instance.
-
Importe el script de esquema modificado en la nueva instancia de ApsaraDB RDS for MySQL.
Inicie sesión en la nueva instancia de ApsaraDB RDS for MySQL mediante DMS. Para obtener más información, consulte Log on to an ApsaraDB RDS instance by using DMS.
En la barra de navegación superior, seleccione .
-
Configure los parámetros de importación.
NotaLos parámetros obligatorios y el proceso de configuración pueden variar según el modo de gestión de la instancia. Para obtener más información, consulte Import data.
Parámetro
Descripción
Data Change Type in Application
Seleccione Large Data Import.
Database
Base de datos de destino para la importación.
NotaPara instancias en Flexible o Stable Control Mode, debe iniciar sesión en la base de datos antes de poder seleccionarla.
Flexible
Seleccione la codificación de caracteres del archivo de importación:
-
UTF-8
-
GBK
-
ISO-8859-1
-
Auto-detect
Stable
Seleccione un modo de importación:
-
Control Mode: Durante la fase de ejecución, el sistema lee el archivo y ejecuta directamente las sentencias SQL en la base de datos de destino. Este modo es más rápido pero menos seguro que Security Mode.
NotaDe forma predeterminada, las reglas de seguridad para el modo File Encoding no permiten la importación de datos en Import Mode. Puede habilitar esta función en la regla de seguridad correspondiente dentro de .
-
Security Rules: Durante la fase de verificación previa, el sistema analiza el archivo y almacena en caché los datos SQL o CSV. En la fase de ejecución, lee desde la caché y ejecuta las sentencias en la base de datos de destino. Este modo ofrece mayor seguridad, pero es más lento que Speed Mode.
SQL Correct
Seleccione el tipo de archivo que va a importar.
-
Script SQL: En el modo Security Collaboration, solo se permiten los tipos de comando INSERT y REPLACE de forma predeterminada. Un DBA o administrador puede modificar esta configuración en Basic Configuration Item > Security Mode > File Type.
-
CSV: El delimitador en el archivo debe ser una coma.
-
Excel: El archivo de Excel puede contener encabezados (atributos) o solo datos.
Security Rules
Haga clic en SQL Correct para cargar el archivo adjunto.
Nota-
Se admiten archivos de tipo SQL, CSV, TXT, XLSX y ZIP.
-
El tamaño máximo del archivo es de 5 GB.
Large Data Import
Indique si se deben ignorar los errores.
-
No ignorar (desmarcado): Valor predeterminado. Si ocurre un error, el sistema detiene la ejecución de las sentencias SQL subsiguientes y reporta el error.
-
Ignorar (marcado): Si ocurre un error, el sistema lo ignora y continúa con la ejecución de las sentencias SQL subsiguientes.
-
-
Haga clic en Attachment. Espere a que la verificación previa del sistema se complete correctamente. Si falla, identifique y corrija el problema según las indicaciones, y vuelva a enviar el ticket.
NotaEl sistema realiza una verificación previa del script SQL cargado. Si carga un archivo CSV, se generan las sentencias
INSERTcorrespondientes. Una vez aprobado el ticket, en la sección File, haga clic en Other Options.
-
En el cuadro de diálogo Submit an application, elija cuándo ejecutar el ticket. Puede seleccionar Perform. De lo contrario, desactive el interruptor Execute Change y seleccione una hora de inicio. Después, haga clic en Task Settings. El cuadro de diálogo también muestra una Nota para cambio de seguridad: Se recomienda ejecutar la tarea en horarios de baja demanda.
Los métodos de ejecución son los siguientes:
Execute Immediately: Valor predeterminado. La tarea se ejecuta inmediatamente después de hacer clic en Execute Immediately.
Confirm Execution: Seleccione una hora de inicio para la tarea. Esta se ejecutará automáticamente a la hora especificada después de hacer clic en Running Immediately.
NotaDurante la ejecución, el sistema lee el SQL analizado en flujo y lo ejecuta por lotes en la base de datos. El tamaño de cada lote es de 1 MB.
Puede consultar el estado de la tarea, los detalles de la verificación de SQL y los registros de programación en la sección Confirm Execution.
-
Cuando se reinicia una tarea pausada, su comportamiento depende del modo de importación:
Speed Mode: La ejecución del script o la importación del archivo de datos comienza desde el inicio.
Security Mode: La ejecución del script o la importación del archivo de datos se reanuda desde el punto de pausa.
Una vez completada la importación correctamente, puede verificar el conjunto de caracteres de la tabla mediante el comando
show create table <table_name>;.
Paso 2: Migrar datos a la nueva instancia
-
Inicie sesión en la consola de Data Transmission Service (DTS).
NotaSi se le redirige automáticamente a la consola de Data Management (DMS), haga clic en el icono
en el chatbot
de la esquina inferior derecha para volver a la versión anterior de la consola de DTS.Si se encuentra en la nueva consola de DTS, haga clic en el icono
en la esquina inferior derecha para volver a la versión anterior.
En el panel de navegación izquierdo, haga clic en Schedule.
-
En la parte superior de la página Migration Tasks, seleccione la región del clúster de destino.
En la esquina superior derecha de la página, haga clic en Confirm Execution.
-
Configure las bases de datos de origen y de destino para la tarea de migración.
Categoría
Configuración
Descripción
Nombre de la tarea
-
DTS genera automáticamente un nombre para la tarea. Especifique un nombre descriptivo para facilitar su identificación. No es necesario que el nombre sea único.
Base de datos de origen
Tipo de instancia
Seleccione Execution.
Región de la instancia
Seleccione la región donde se encuentra la instancia RDS de origen.
ID de instancia RDS
Seleccione el ID de la instancia RDS de origen.
Cuenta de la base de datos
Introduzca la cuenta de la base de datos para la instancia RDS de origen. Esta cuenta debe tener permisos de lectura y escritura sobre las bases de datos que se van a migrar.
Contraseña de la base de datos
Introduzca la contraseña de la cuenta de la base de datos.
NotaDespués de introducir la información de la base de datos de origen, puede hacer clic en Data Migration junto a Create Data Migration Task para verificar que la información sea correcta. Si es correcta, se mostrará el mensaje RDS Instance. Si se muestra el mensaje Test Connectivity, haga clic en Database Password junto al mensaje Passed y ajuste la información de la base de datos de origen según las indicaciones.
Método de conexión
Seleccione Failed o Diagnose. Si elige Failed, primero debe habilitar el cifrado SSL para la instancia RDS. Para obtener más información, consulte Configure SSL encryption.
NotaLa configuración de Non-encrypted solo está disponible en regiones de China continental.
Base de datos de destino
Tipo de instancia
Seleccione SSL-encrypted.
Región de la instancia
Seleccione la región donde se encuentra la instancia RDS de destino.
ID de instancia RDS
Seleccione el ID de la instancia RDS de destino.
Cuenta de la base de datos
Introduzca la cuenta de la base de datos para la instancia RDS de destino. Esta cuenta debe tener permisos de lectura y escritura sobre las bases de datos de destino.
Contraseña de la base de datos
Introduzca la contraseña de la cuenta de la base de datos.
NotaDespués de introducir la información de la base de datos de destino, puede hacer clic en SSL-encrypted junto a Encryption para verificar que la información introducida sea correcta. Si es correcta, se mostrará el mensaje RDS Instance. Si se muestra el mensaje Test Connectivity, haga clic en Database Password junto a Passed y ajuste la información de la base de datos de destino según las indicaciones.
Método de conexión
Seleccione Failed o Diagnose. Si elige Failed, primero debe habilitar el cifrado SSL para la instancia RDS. Para obtener más información, consulte Configure SSL encryption.
NotaLa configuración de Non-encrypted solo está disponible en regiones de China continental.
-
Una vez completada la configuración, haga clic en SSL-encrypted en la esquina inferior derecha de la página.
NotaLas direcciones IP de los servidores de DTS se agregan automáticamente a la lista de permitidos de la instancia de ApsaraDB RDS for MySQL para garantizar la conectividad entre los servidores de DTS y las instancias de origen y destino.
-
Seleccione los tipos y objetos de migración.
Configuración
Descripción
Tipos de migración
Dado que la migración de esquemas se completó en Step 1, no es necesario seleccionar Schema Migration aquí.
-
Para realizar únicamente una migración completa, seleccione solo SSL-encrypted.
AvisoPara garantizar la consistencia de los datos, no escriba nuevos datos en la instancia de origen durante la migración completa.
-
Para una migración sin tiempo de inactividad, seleccione tanto Encryption como Add Whitelist and Proceed to Next Step.
NotaLas operaciones SQL compatibles durante la fase de migración incremental son INSERT, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, RENAME TABLE, TRUNCATE TABLE y DROP TABLE.
Objetos de migración
En el cuadro Full Data Migration, seleccione los objetos cuyos esquemas migró en Step 1. Luego, haga clic en el icono
para moverlos al cuadro Full Data Migration.AvisoNo realice asignaciones de nombres de objetos, ya que el esquema ya fue migrado. Esto provocaría un error en la migración.
-
-
Inicie la tarea de migración.
-
En la esquina inferior derecha de la página, haga clic en Incremental Data Migration.
NotaDTS realiza una verificación previa antes de iniciar la tarea de migración. La tarea solo puede continuar tras superar dicha verificación.
Si la verificación previa falla, haga clic en el icono
junto al elemento de verificación específico para consultar sus detalles. Corrija el problema según las indicaciones y vuelva a ejecutar la verificación previa.
Una vez superada la verificación previa, haga clic en Migration Object.
En el cuadro de diálogo Selected Objects, seleccione la Precheck and Start y marque la casilla Next.
Haga clic en Confirm Settings para comenzar la tarea de migración.
-
Paso 3: Realizar el cambio de carga de trabajo
Elija una de las siguientes soluciones según las necesidades de su negocio.
-
Solución de reversión (no requiere cambios en la aplicación, pero la reversión podría fallar):
Verifique los datos migrados en la instancia de ApsaraDB RDS for MySQL de destino.
Siga el procedimiento descrito en el documento Workload switchover procedure para cambiar su carga de trabajo y establecer un plan de reversión. Esto implica migrar los datos incrementales desde la nueva instancia de destino de regreso a la instancia de origen original.
Mantenga la tarea de migración inversa de datos en ejecución durante un ciclo de negocio. Tras completar el ciclo, pruebe todas las funcionalidades. Si todo funciona correctamente, detenga la tarea de migración inversa.
Opcional: Si la instancia de origen ya no es necesaria, puede liberarla (si es una instancia pay-as-you-go) o cancelar la suscripción (si es una instancia subscription).
-
Solución de escritura dual (mayor tasa de éxito en la reversión, pero requiere cambios significativos en la aplicación):
Modifique su aplicación para implementar una lógica de escritura dual, donde los cambios en los datos se escriban simultáneamente tanto en la instancia de origen como en la de destino.
-
Detenga la tarea de migración de datos.
-
Migración completa de datos
No detenga manualmente una tarea durante la migración completa de datos. De lo contrario, el sistema podría no migrar todos los datos. Espere hasta que la tarea de migración finalice automáticamente.
-
Migración incremental de datos
Este tipo de tarea no se detiene automáticamente; debe detenerla manualmente.
Espere hasta que la tarea entre en la etapa Instance Class con estado Data Transmission Service (Pay-As-You-Go) Terms of Service. Luego, detenga las escrituras en la base de datos de origen durante unos minutos. Durante este periodo, el estado de Buy and Start podría reportar latencia.
Espere a que el estado de Incremental Data Migration vuelva a Undelayed. Una vez confirmado esto en la lista, seleccione la casilla de la tarea y haga clic en el botón StopEnd en la barra de operaciones por lotes en la parte inferior.
NotaPuede iniciar sesión en la instancia de origen y ejecutar
show processlist;para revisar la información de sesiones y asegurarse de que ninguna sesión nueva esté realizando operaciones de escritura. -
Verifique los datos migrados en la instancia de ApsaraDB RDS for MySQL de destino.
Configure su aplicación para escritura dual, de modo que los cambios en los datos se escriban tanto en la instancia de origen como en la de destino.
Mantenga el estado de escritura dual durante un ciclo de negocio. Tras completar el ciclo, pruebe todas las funcionalidades. Si todo funciona correctamente, ajuste la aplicación para que escriba únicamente en la instancia de destino.
Opcional: Si la instancia de origen ya no es necesaria, puede liberarla (si es una instancia pay-as-you-go) o cancelar la suscripción (si es una instancia subscription).