É possível executar o utilitário mysqldump diretamente no banco de dados MySQL, usando as opções necessárias. No entanto, se você estiver exportando para importar os dados para um banco de dados do Cloud SQL, use o utilitário mysqldump com as seguintes flags:
--databasesEspecifica uma lista explícita de bancos de dados a serem exportados. Essa lista não pode conter os bancos de dados do sistema (sys,mysql,performance_schemaeinformation_schema).--hex-blobSe o banco de dados contiver campos binários, use essa flag para garantir que eles sejam importados corretamente.--single-transactionInicia uma transação antes de executar. Em vez de bloquear todo o banco de dados, isso permite que o mysqldump leia o banco de dados no estado atual, criando um despejo de dados consistente.--routinesPara incluir procedimentos e funções armazenados.Ao usar a versão 8 ou mais recente do
mysqldumppara exportar bancos de dados MySQL de versões anteriores a 8:--column-statistics=0Essa flag remove a tabela COLUMN_STATISTICS da exportação do banco de dados para evitar o erro
Unknown table 'COLUMN_STATISTICS' in information_schema (1109). Para mais informações, consulte Diagnosticar problemas.
Também recomendamos usar as seguintes flags:
--no-autocommit--default-character-set=utf8mb4--master-data
Em uma máquina com conectividade de rede ao 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 Relational Database Service (RDS) para MySQL:
- A propriedade
master-datanão é compatível. - Se o servidor de banco de dados de origem for compatível com GTID, use a propriedade
--set-gtid-purged=on. Caso contrário, não use essa propriedade. - Se você estiver usando um despejo manual para migrar os dados, execute a migração com o GTID ativado.
Esse comando pode se parecer com o seguinte exemplo:
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, configure instâncias RDS para reter binlogs por mais tempo. Esse comando pode se parecer com o seguinte exemplo:
# 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 do host do servidor de banco de dados de origem. |
| [SOURCE_PORT] | A porta do servidor de banco de dados de origem. |
| [USERNAME] | A conta de usuário do MySQL. |
| [DBS] | Uma lista separada por espaços dos bancos de dados no servidor de banco de dados de origem a serem incluídos no despejo. Use o comando SHOW DATABASES do MySQL para listar seus bancos de dados. |
| [BUCKET_NAME] | O bucket no Cloud Storage criado pelo usuário e usado para armazenar o arquivo dump (por exemplo, replica-bucket). |
| [DUMP_FILENAME] | O nome do arquivo de despejo, que termina com uma extensão de arquivo .gz (por exemplo, source-database.sql.gz). |
A seguir
Para conferir um tutorial completo e detalhado da migração, consulte Introdução às migrações do Cloud SQL para MySQL.