Exportación de una instancia MySQL

Exporte una instancia MySQL a un cubo de Object Storage mediante las utilidades de volcado del shell MySQL. A continuación, puede utilizar la función de importación de datos para importar datos del cubo de Object Storage a un sistema de base de datos presente en la misma región.

Use una de las siguientes utilidades de volcado:

  • util.dumpInstance(outputUrl[, options]): utilidad de exportación de instancias de MySQL que exporta todos los esquemas compatibles a un cubo de Object Storage o a archivos locales. Por defecto, esta utilidad exporta usuarios, eventos, rutinas y disparadores. Consulte Dump Utilities.
  • util.dumpSchemas(schemas, outputUrl[, options]): utilidad de exportación de esquemas MySQL que exporta los esquemas seleccionados a un cubo de Object Storage o a archivos locales.
  • util.dumpTables(schema, tables, outputUrl[, options]): utilidad de exportación de tablas MySQL que exporta las tablas seleccionadas de un esquema a un cubo de Object Storage o a archivos locales.

Al exportar datos, realice comprobaciones de compatibilidad en los esquemas. Si hay algún problema, la utilidad de volcado anula la exportación y produce una lista detallada de problemas y sugiere pasos para corregirlos. Además, si hay una interrupción de conexión durante la exportación de datos, debe volver a ejecutar la utilidad de volcado. No puede pausar y reanudar la exportación de datos.

Con MySQL Shell

Use la utilidad dumpInstance de shell de MySQL para exportar una instancia de MySQL a un cubo de almacenamiento de objetos.

Para esta tarea, se necesita lo siguiente:
  • MySQL Shell 8.0.27 o superior. Las exportaciones creadas por MySQL Shell 8.0.27 o superior no las pueden importar las versiones anteriores de MySQL Shell. Se recomienda la última versión de MySQL Shell.
  • Acceso a Object Storage y un cubo existente.
  • Un archivo de configuración válido. Si ha instalado y configurado la CLI en la ubicación por defecto, tiene un archivo de configuración válido. Si no ha instalado ni configurado la CLI, debe instalarla o crear un archivo de configuración manualmente. Consulte Archivo de configuración de SDK y CLI.
Realice lo siguiente para exportar una instancia MySQL a un cubo de Object Storage:
  1. Ejecute el shell MySQL en la máquina cliente que contiene el archivo de configuración de la CLI.
  2. Cambie al tipo de entrada de JavaScript; para ello, escriba \js y pulse Intro.
  3. Ejecute el siguiente comando para iniciar una sesión global conectándose a la instancia MySQL:
    \c <UserName>@<MySQLIPAddress>
    • \c: especifica el comando de Shell para establecer una nueva conexión.
    • <UserName>: especifica el nombre de usuario de la instancia MySQL.
    • <MySQLIPAddress>: especifica la dirección IP o el nombre de host de la instancia MySQL.
  4. (Paso opcional recomendado) Ejecute el siguiente comando para probar la ejecución exportando toda la instancia MySQL. Comprueba los problemas de compatibilidad del sistema de base de datos y los muestra junto con las soluciones sugeridas en la salida.
    util.dumpInstance("", {mode: "dryrun", ocimds: true})
    Identifique las opciones de compatibilidad que eliminan los problemas encontrados. Debe incluir estas opciones de compatibilidad para exportar correctamente la instancia MySQL cuando la opción ocimds está activada.
  5. Ejecute el siguiente comando para exportar toda la instancia MySQL a un cubo de Object Storage:
    util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", threads: <ThreadSize>, ocimds: true, 
        compatibility: ["<comma separated list of compatibility options>], bytesPerChunk: "<ChunkSize>"})
    • util.dumpInstance: especifica el comando para exportar una instancia MySQL completa.
    • <BucketPrefix>: (opcional) agrega un prefijo a los archivos cargados en el cubo. Si se especifica, los archivos se cargan en el cubo definido con el prefijo con el siguiente formato: <BucketPrefix>/filename, de forma similar a una ruta de archivo. Por ejemplo, si <BucketPrefix> se define en test, cada archivo cargado en el cubo definido, <MDSBucket>, se realiza como test/filename. Si descarga el archivo, el prefijo se trata como una carpeta en la descarga. Para las exportaciones locales, este parámetro es la ruta al directorio local al que desea exportar.

      Aunque el contenido de este parámetro es opcional, las comillas no lo son. Incluso si no desea utilizar un prefijo, debe incluir las comillas en la sintaxis del comando.

    • osBucketName: especifica el nombre sensible a mayúsculas/minúsculas del cubo de Object Storage al que se va a exportar. MySQL Shell utiliza la información de arrendamiento y usuario definida en el archivo config.
    • threads: (opcional) especifica el número de threads de procesamiento que se utilizarán para esta tarea. El valor por defecto es 4. Para obtener el mejor rendimiento, se recomienda definir este parámetro en el número de núcleos de CPU disponibles en el servidor de base de datos.
    • ocimds: comprueba la compatibilidad de los datos con el servicio HeatWave. Cuando se define en true, no puede exportar una instancia si no es compatible con el servicio HeatWave.
      Nota

      La importación de los datos en un sistema de base de datos HeatWave con la utilidad util.loadDump requiere que el volcado se cree con la opción ocimds.
    • compatibility: muestra los parámetros que especifican las modificaciones que se realizan en los datos exportados. Debe especificar la lista de opciones de compatibilidad sugeridas en el modo dryrun. Consulte Compatibility Checks.
    • bytesPerChunk: (opcional) para juegos de datos de gran tamaño, se recomienda utilizar este parámetro para definir fragmentos más grandes. El tamaño de bloque por defecto es 64 MB. Por ejemplo, bytesPerChunk: 128M, especifica un tamaño de fragmento de 128 MB.
Los datos se cargan en el cubo especificado.

Comprobaciones de Compatibilidad

El servicio HeatWave tiene varias restricciones relacionadas con la seguridad que no están presentes en una instancia MySQL. Utilice la opción ocimds de la utilidad de volcado para realizar comprobaciones de compatibilidad en los datos volcados y, si hay algún problema, la utilidad anula el volcado y produce una lista detallada de problemas y sugiere pasos para corregirlos.

El siguiente comando muestra cómo realizar comprobaciones de compatibilidad con la opción ocimds en el modo dryrun. Algunos problemas encontrados por la opción ocimds pueden requerir que edite manualmente el esquema antes de que se pueda cargar en el servicio HeatWave.

util.dumpInstance("", {mode: "dryrun", ocimds: true})

Después de identificar los problemas de compatibilidad y las opciones de compatibilidad, puede especificar las opciones en el comando que exporta los datos.

util.dumpInstance("<BucketPrefix>", {osBucketName: "<MDSBucket>", ocimds: true, 
    compatibility: ["force_innodb", "strip_definers", "strip_restricted_grants", 
    "skip_invalid_accounts", "strip_tablespaces", "ignore_missing_pks"] } )

Puede utilizar las siguientes opciones de compatibilidad separadas por comas para modificar automáticamente los datos exportados, lo que resuelve algunos de estos problemas de compatibilidad:

  • force_innodb: HeatWave el servicio solo soporta el motor de almacenamiento InnoDB. Esta opción modifica la cláusula ENGINE de las sentencias CREATE TABLE que utilizan motores de almacenamiento incompatibles y las sustituye por InnoDB.
  • strip_definers: elimina la cláusula "DEFINER=account" de las vistas, rutinas, eventos y disparadores. El servicio HeatWave necesita privilegios especiales para crear estos objetos con un elemento de definición distinto del usuario que carga el esquema. Mediante la segmentación de la cláusula DEFINER, estos objetos se crearán con ese elemento de definición por defecto. En las vistas y las rutinas la cláusula SQL SECURITY cambia de DEFINER a INVOKER. Esto garantiza que se apliquen los permisos de acceso de la cuenta que consulta o llama a estos, en lugar del usuario que los ha creado. Si el modelo de seguridad de base de datos necesita vistas y las rutinas tienen más privilegios que su invocador, modifique manualmente el esquema antes de cargarlo. Consulte DEFINER y Seguridad SQL.
  • strip_restricted_grants: determinados privilegios están restringidos en el servicio HeatWave. Privilegios como RELOAD, FILE, SUPER, BINLOG_ADMIN y SET_USER_ID. No puede crear usuarios que otorguen estos privilegios. Esta opción elimina estos privilegios de las sentencias GRANT volcadas.
  • skip_invalid_accounts: no puede exportar un usuario que no tenga ninguna contraseña definida. Esta opción omite dichos usuarios.
  • strip_tablespaces: el servicio HeatWave tiene algunas restricciones en los tablespaces. Esta opción elimina la opción TABLESPACE de las sentencias CREATE TABLE, por lo que todas las tablas se crean en sus tablespaces por defecto.
  • Indicadores de clave primaria:
    • create_invisible_pks: los sistemas de base de datos de alta disponibilidad requieren claves primarias. Si desea exportar datos para utilizarlos en un sistema de base de datos altamente disponible, agregue claves primarias si no están definidas en las tablas. Este indicador de compatibilidad agrega claves primarias invisibles a cada tabla que las necesite. Consulte Requisitos.
    • ignore_missing_pks: si no desea importar en un sistema de base de datos de alta disponibilidad, este indicador de compatibilidad ignora las claves primarias que faltan en el volcado.

Además, las opciones DATA DIRECTORY, INDEX DIRECTORY y ENCRYPTION de las sentencias CREATE TABLE siempre se comentan en scripts DDL si la opción ocimds está activada.

Nota

Si desea exportar una versión anterior de MySQL, como la 5.7.9, y utiliza una versión de shell MySQL anterior a la 8.0.30, se recomienda ejecutar la utilidad de comprobación de actualización de shell MySQL para generar un informe de todos los problemas potenciales con la migración. Consulte Utilidad de comprobación de actualización.