É 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:
--databases
Especifique 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_schema
einformation_schema
).--hex-blob
Se o banco de dados tiver campos binários, use essa flag para garantir que eles sejam importados corretamente.--single-transaction
Inicia 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.--routines
Para incluir funções e procedimentos armazenados.Ao usar a versão 8 ou mais recente do
mysqldump
para exportar versões de bancos de dados do MySQL anteriores à 8:--column-statistics=0
Essa 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 saber mais, consulte Como diagnosticar problemas.
Também é recomendável usar as seguintes flags:
--no-autocommit
--default-character-set=utf8mb4
--master-data
Em uma máquina com conectividade de rede para o 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 banco de dados relacional (RDS) para MySQL:
- A propriedade
master-data
nã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, realize 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
para incluir no dump. 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 do despejo, que termina com a extensão .gz (por exemplo, source-database.sql.gz ). |