Exportar una base de datos de MySQL con mysqldump

Puedes ejecutar la utilidad mysqldump directamente en tu base de datos de MySQL con las opciones que necesites. Sin embargo, si realizas la exportación para importar los datos a una base de datos de Cloud SQL, usa la utilidad mysqldump con las siguientes marcas:

  • --databases Especifica una lista explícita de las bases de datos que se exportarán. Esta lista no debe contener las bases de datos del sistema (sys, mysql, performance_schema y information_schema).
  • --hex-blob Si tu base de datos contiene campos binarios, debes usar esta marca para asegurarte de que se importen correctamente.
  • --single-transaction Inicia una transacción antes de ejecutarla. En lugar de bloquear toda la base de datos, esto permite que mysqldump lea la base de datos en el estado actual, lo que genera un volcado de datos coherente.
  • --routines Para incluir funciones y procedimientos almacenados.
  • Cuando se usa la versión 8 o posterior de mysqldump para exportar bases de datos de MySQL de versiones anteriores a la 8:
    --column-statistics=0

    Esta marca quita la tabla COLUMN_STATISTICS de la exportación de la base de datos para evitar el error Unknown table 'COLUMN_STATISTICS' in information_schema (1109). Para obtener más información, consulta Diagnostica problemas.

También se recomienda usar las siguientes marcas:

  • --no-autocommit
  • --default-character-set=utf8mb4
  • --master-data

Ejecuta el siguiente comando desde una máquina con conectividad de red a tu servidor de MySQL:

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --master-data=1  \
        --single-transaction \
        --routines \
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

Si la fuente de la migración es un servicio de base de datos relacional (RDS) para MySQL:

  • No se admite la propiedad master-data.
  • Si tu servidor de base de datos de origen admite GTID, usa la propiedad --set-gtid-purged=on; de lo contrario, no la uses.
  • Si usas un volcado manual para migrar tus datos, realiza la migración con GTID habilitado.

Puede que este comando luzca como el siguiente ejemplo:

    mysqldump \
        -h [SOURCE_ADDR] -P [SOURCE_PORT] -u [USERNAME] -p \
        --databases [DBS]  \
        --hex-blob  \
        --no-autocommit \
        --default-character-set=utf8mb4 \
        --set-gtid-purged=on \
        --single-transaction \
        --routines \ 
        | gzip \
        | gcloud storage cp - gs://[BUCKET_NAME]/[DUMP_FILENAME].gz

Además, debes configurar las instancias de RDS para conservar los registros binarios. Puede que este comando luzca como el siguiente ejemplo:

    # Sets the retention period to one week.
    call mysql.rds_set_configuration('binlog retention hours', 168);

Reemplaza [PROPERTIES_IN_BRACKETS] por los siguientes valores:

Propiedad Valor
[SOURCE_ADDR] La dirección IPv4 o el nombre de host del servidor de la base de datos de origen.
[SOURCE_PORT] Es el puerto para el servidor de la base de datos de origen.
[USERNAME] La cuenta de usuario de MySQL.
[DBS] Una lista separada por espacios de las bases de datos en el servidor de la base de datos de origen que se incluirán en el volcado. Usa el comando SHOW DATABASES de MySQL para enumerar tus bases de datos.
[BUCKET_NAME] El bucket en Cloud Storage que crea el usuario y que se usa para almacenar el archivo de volcado (por ejemplo, replica-bucket).
[DUMP_FILENAME] El nombre de archivo del volcado, que termina con una extensión de archivo .gz (por ejemplo, source-database.sql.gz).

¿Qué sigue?

Para obtener un instructivo completo de la migración paso a paso, consulta Comienza a usar las migraciones de Cloud SQL para MySQL.