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 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 procedimientos y funciones almacenados
  • Cuando se usa la versión 8 o posterior de mysqldump para exportar bases de datos de MySQL con 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 el origen de la migración es un servicio de base de datos relacional (RDS) para MySQL, haz lo siguiente:

  • No se admite la propiedad master-data.
  • 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 el 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] Es 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] 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] Nombre del archivo de volcado, que termina con la extensión de archivo .gz (por ejemplo, source-database.sql.gz).