Exportar una base de datos de MySQL con mysqldump

Puedes ejecutar la herramienta mysqldump directamente en tu base de datos de MySQL, con las opciones que necesites. Sin embargo, si exportas 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 bases de datos para exportar. 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 los campos binarios se importen de forma correcta.
  • --single-transaction Inicia una transacción antes de ejecutarla. En lugar de bloquear toda la base de datos, esto le permite a mysqldump leer la base de datos en el estado actual, lo que hace que un volcado de datos sea coherente.
  • --routines Para incluir funciones y procedimientos almacenados.
  • Cuando se usa mysqldump versión 8 o posterior para exportar versiones de bases de datos de MySQL 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 Cómo diagnosticar 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 el origen de la migración es un servicio de base de datos relacional (RDS) para MySQL, haz lo siguiente:

  • La propiedad master-data no es compatible.
  • Si tu servidor de la base de datos de origen admite GTID, usa la propiedad --set-gtid-purged=on. De lo contrario, no uses esta propiedad.
  • Si usas un volcado manual para migrar tus datos, realiza la migración con los GTID habilitados.

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 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] Es una lista separada por espacios de las bases de datos del 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] Es el bucket de Cloud Storage que crea el usuario y que se usa para almacenar el archivo de volcado (por ejemplo, replica-bucket).
[DUMP_FILENAME] Es el nombre del archivo de volcado, que termina con una extensión de archivo .gz (por ejemplo, source-database.sql.gz).