Exportar uma base de dados do MySQL com o mysqldump

Pode executar o utilitário mysqldump diretamente na sua base de dados do MySQL, usando as opções que precisar. No entanto, se estiver a exportar para importar os dados para uma base de dados do Cloud SQL, use o utilitário mysqldump com as seguintes flags:

  • --databases Especifique uma lista explícita de bases de dados a exportar. Esta lista não pode conter as bases de dados do sistema (sys, mysql, performance_schema e information_schema).
  • --hex-blob Se a sua base de dados contiver campos binários, tem de usar esta flag para garantir que os campos binários são importados corretamente.
  • --single-transaction Inicia uma transação antes da execução. Em vez de bloquear toda a base de dados, isto permite que o mysqldump leia a base de dados no estado atual, o que resulta numa descarga de dados consistente.
  • --routines Para incluir procedimentos e funções armazenados.
  • Quando usar a versão mysqldump 8 ou posterior para exportar versões de bases de dados MySQL anteriores à versão 8:
    --column-statistics=0

    Esta flag remove a tabela COLUMN_STATISTICS da exportação da base de dados para evitar o erro Unknown table 'COLUMN_STATISTICS' in information_schema (1109). Para mais informações, consulte o artigo Diagnostique problemas.

Também recomendamos que use as seguintes flags:

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

Numa máquina com conetividade de rede ao seu servidor MySQL, execute o seguinte comando:

    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

Se a origem da migração for um serviço de base de dados relacional (RDS) para MySQL:

  • A propriedade master-data não é suportada.
  • Se o servidor da base de dados de origem suportar GTID, use a propriedade --set-gtid-purged=on; caso contrário, não use esta propriedade.
  • Se estiver a usar uma descarga manual para migrar os seus dados, faça a migração com o GTID ativado.

Este comando pode ter o seguinte aspeto:

    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

Além disso, deve configurar as instâncias do RDS para reter os binlogs durante mais tempo. Este comando pode ter o seguinte aspeto:

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

Substitua [PROPERTIES_IN_BRACKETS] pelos seguintes valores:

Propriedade Valor
[SOURCE_ADDR] O endereço IPv4 ou o nome de anfitrião do servidor de base de dados de origem.
[SOURCE_PORT] A porta do servidor de base de dados de origem.
[USERNAME] A conta de utilizador do MySQL.
[DBS] Uma lista separada por espaços das bases de dados no servidor de bases de dados de origem a incluir na captura. Use o comando SHOW DATABASES MySQL para listar as suas bases de dados.
[BUCKET_NAME] O contentor no Cloud Storage criado pelo utilizador e usado para armazenar o ficheiro de despejo (por exemplo, replica-bucket).
[DUMP_FILENAME] O nome do ficheiro do despejo, que termina com uma extensão de ficheiro .gz (por exemplo, source-database.sql.gz).