IBM Cloud Docs
Migración a Databases for MySQL

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

  • 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.