Migración a Databases for MySQL
Existen dos opciones para migrar datos de bases de datos MySQL existentes a IBM Cloud® Databases for MySQL. Recomendamos dos opciones: mysqldump
y mydumper
. La mejor herramienta depende de determinadas condiciones, incluida
la conexión de red, el tamaño del conjunto de datos y las necesidades de esquema intermedio.
Antes de empezar
Antes de iniciar la migración de datos, necesita MySQL instalado localmente para tener las herramientas mysql
y mysqldump
.
MySQL Workbench también proporciona una herramienta gráfica para trabajar con servidores y bases de datos MySQL. Aunque no es estrictamente necesaria, la CLI de Cloud Databases también facilita la conexión y la restauración en un nuevo despliegue de Databases for MySQL.
mysqldump
Este programa de utilidad de cliente nativo de MySQL se instala de forma predeterminada y puede realizar copias de seguridad lógicas, reproducir la estructura de la tabla y los datos, sin copiar los archivos de datos reales. mysqldump vuelca una o más bases de datos MySQL para realizar una copia de seguridad o transferir a otro servidor MySQL. Para obtener más información, consulte la documentación de mysqldump.
mysqldump
es adecuado para utilizarlo en las condiciones siguientes:
- El conjunto de datos tiene menos de 10 GB.
- El tiempo de migración no es crítico y el coste de reintentar la migración es bajo.
- No es necesario realizar transformaciones de datos ni esquemas intermedios.
No recomendamos mysqldump si se cumple alguna de las condiciones siguientes:
- El conjunto de datos es mayor que 10 GB.
- La conexión de red entre las bases de datos de origen y de destino es inestable o lenta.
Siga estos pasos utilizando la herramienta mysqldump
:
Ejecute mysqldump
en la base de datos de origen para crear un archivo SQL, que se puede utilizar para volver a crear la base de datos. Como mínimo, la migración de mysql
mediante la CLI necesita los argumentos siguientes:
- Nombre de host (distintivo
-h
) - número de puerto (distintivo
-P
) - Nombre de usuario (distintivo
-u
) - -- ssl-mode = ID_VERSIÓN (los clientes requieren una conexión cifrada y realizan la verificación en el certificado de CA del servidor y en el nombre de host del servidor en su certificado)
- -- ssl-ca (el nombre de la vía de acceso del archivo de la autoridad emisora de certificados (CA), que se puede encontrar en la pestaña CLI de puntos finales de la página Visión general de la interfaz de usuario.)
- nombre de base de datos
- archivo de resultados (distintivo
-r
)
El mandato de CLI tiene este aspecto
mysqldump -h <host_name> -P <port_number> -u <user_name> --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p <database_name> -r dump.sql
Para generar un archivo de registro del trabajo mysqldump que rastrea los errores mientras se ejecuta, utilice un mandato como este
mysqldump -h <host_name> -P <port_number> -u <user_name> --log-error=error.log --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt --set-gtid-purged=OFF -p ibmclouddb -r dump.sql
Lo mismo se puede hacer al importar, por ejemplo
mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql > import_logfile.log
Para obtener más información sobre cómo utilizar la réplica de MySQL con GTID (Global Transaction Identifiers), consulte Utilización de GTID para migración tras error y escalado en el manual de consulta de MySQL .
El mandato mysql
tiene muchas opciones; consulte la documentación oficial y referencia de mandatos para obtener una vista más completa de sus prestaciones.
Restauración de la salida de mysqldump
La salida resultante de mysqldump
se puede cargar en un nuevo despliegue de Databases for MySQL. Puesto que la salida es SQL, simplemente se puede enviar a la base de datos a través del mandato mysql
. Se recomienda
que las importaciones las lleve a cabo el usuario administrador.
Consulte la documentación de Conexión con mysql
para obtener detalles sobre cómo conectarse como administrador utilizando mysql
. Para
conectarse con el mandato mysql
, necesita la serie de conexión del usuario administrador y el certificado TLS, que se pueden encontrar en la interfaz de usuario. Es necesario decodificar el certificado de base64 y almacenarlo
como un archivo local arbitrario. Para importar el dump.sql
creado anteriormente en un despliegue de base de datos denominado example-mysql
, el mandato mysql
se puede llamar con -f dump.sql
como parámetro. El parámetro indica a mysql
que lea y ejecute las sentencias SQL en el archivo.
Como se indica en la documentación de Conexión con mysql
, el plug-in de CLI de Cloud Databases simplifica la conexión. La importación de mysql
anterior se puede ejecutar utilizando un mandato como:
mysql -h <host_name> -P <port_number> -u admin --ssl-mode=VERIFY_IDENTITY --ssl-ca=mysql.crt -p ibmclouddb < dump.sql
Si no se especifica ningún usuario, el mandato utiliza automáticamente el usuario administrador y solicita de forma interactiva la contraseña. El certificado TLS se recupera y se utiliza automáticamente.
Mientras se ejecuta el proceso de restauración, se emiten varios mensajes relacionados con los cambios realizados en el despliegue de la base de datos.
mydumper
mydumper y la correspondiente herramienta de copia de seguridad lógica emparejada myloader utilizan funciones de multihebra para realizar la migración de datos de forma similar a mysqldump; sin embargo, mydumper proporciona muchas mejoras como por ejemplo copias de seguridad paralelas, lecturas coherentes y mayor facilidad para gestionar la salida. El paralelismo permite un mejor rendimiento durante el proceso de importación y exportación, mientras que la salida puede ser más fácil de gestionar porque las tablas individuales se vuelcan en archivos aparte.
Resulta adecuado utilizar mydumper en las condiciones siguientes:
- El conjunto de datos tiene más de 10 GB.
- La conexión de red entre las bases de datos de origen y de destino es rápida y estable.
- Es necesario realizar transformaciones de datos o esquemas intermedios.
No recomendamos utilizar mydumper si se cumple alguna de las condiciones siguientes:
- El conjunto de datos es menor que 10 GB.
- La conexión de red entre las bases de datos de origen y de destino es inestable o muy lenta.
Antes de empezar a migrar los datos con mydumper, consulte primero el proyecto mydumper para obtener detalles e instrucciones paso a paso sobre la instalación y el entorno de desarrollador necesario.
A continuación, consulte la página Cómo utilizar mydumper para obtener información sobre cómo utilizar las herramientas mydumper y myloader para realizar la migración completa de datos.
Ajuste de variables configurables de InnoDB
Puede configurar las siguientes opciones de MySQL InnoDB para ajustar el rendimiento, basándose en la capacidad de la máquina y la carga de trabajo de la base de datos.
- innodb_buffer_pool_size_percentage
- innodb_flush_log_at_trx_commit
- innodb_log_buffer_size
- innodb_log_file_size
- innodb_lru_scan_depth
- innodb_read_io_threads
- innodb_write_io_threads
- net_read_timeout
- net_write_timeout
innodb_buffer_pool_size_percentage
- Descripción: el parámetro
innodb_buffer_pool_size_percentage value
define la cantidad de memoria dedicada del contenedor de la base de datos. - Valor predeterminado: 50
- Máx.: 100
- Mínimo: 10
- Requiere reinicio: Verdadero
Como la propia base de datos utiliza una cantidad de memoria determinada, si el parámetro innodb_buffer_pool_size_percentage value
está configurado demasiado alto, los requisitos de memoria de la base de datos + innodb_buffer_pool_size_percentage
pueden llegar a ser más altos que los límites de memoria disponibles, lo que resulta en un estado de memoria insuficiente (OOM).
El valor del parámetro innodb_buffer_pool_size_percentage
difiere en función del tamaño de la base de datos. El valor predeterminado es 50%
, que es seguro para bases de datos de todos los tamaños. Configure el valor
según sea necesario; si se da un estado de memoria insuficiente, el valor se ha establecido demasiado alto y debe bajarlo.
innodb_flush_log_at_trx_commit
-
Descripción: controla el equilibrio entre la conformidad estricta de ACID para operaciones de confirmación y un mayor rendimiento
-
Valor predeterminado: 2
El valor predeterminado 2 no es totalmente compatible con ACID (se necesita un valor predeterminado 1 para que la conformidad con ACID sea total), pero mejora la ejecución y sigue siendo seguro.
- Máx.: 2
- Mínimo: 0
- Requiere reinicio: Falso
Para obtener más información, consulte Documentación de MySQL innodb_flush_log_at_trx_commit.
innodb_log_buffer_size
- Descripción: tamaño en bytes del almacenamiento intermedio que InnoDB utiliza para escribir en los archivos de registro del disco.
- Valor predeterminado: 32 MiB
- Máx.: 4294967295
- Mín.: 1048576
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL innodb_log_buffer_size.
innodb_log_file_size
- Descripción: tamaño de archivo de registro de InnoDB en bytes.
- Valor predeterminado: 64 MB
- Máx.: 274877906900
- Mín.: 4194304
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL innodb_log_file_size.
innodb_lru_scan_depth
- Descripción: parámetro que influye en los algoritmos y la heurística de la operación de vaciado para la agrupación de almacenamiento intermedio de InnoDB.
- Valor predeterminado: 1024
- Máx.: sin valor máximo
- Mín.: 100
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL innodb_lru_scan_depth.
innodb_read_io_threads
- Descripción: número de hebras de E/S para operaciones de lectura en InnoDB.
- Valor predeterminado: 4
- Máx.: 64
- Mín.: 1
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL innodb_read_io_threads.
innodb_write_io_threads
- Descripción: número de hebras de E/S para operaciones de lectura en InnoDB.
- Valor predeterminado: 4
- Máx.: 64
- Mín.: 1
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL innodb_write_io_threads.
net_read_timeout
- Descripción: el número de segundos que se espera para obtener más datos de una conexión antes de cancelar anormalmente la lectura.
- Valor predeterminado: 30
- Máx:
- Mín.: 1
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de MySQL net_read_timeout.
net_write_timeout
- Descripción: el número de segundos que se debe esperar a que se escriba un bloque en una conexión antes de cancelar anormalmente la escritura.
- Valor predeterminado: 60
- Máx:
- Mín.: 1
- Requiere reinicio: Verdadero
Para obtener más información, consulte Documentación de net_write_timeout
.