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
einformation_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 ). |