Puoi eseguire l'utilità mysqldump direttamente sul tuo database MySQL, utilizzando le opzioni di cui hai bisogno. Tuttavia, se esegui l'esportazione per importare i dati in un database Cloud SQL, utilizza l'utilità mysqldump con i seguenti flag:
--databasesSpecifica un elenco esplicito di database da esportare. Questo elenco non deve contenere i database di sistema (sys,mysql,performance_schemaeinformation_schema).--hex-blobSe il tuo database contiene campi binari, devi utilizzare questo flag per assicurarti che vengano importati correttamente.--single-transactionAvvia una transazione prima dell'esecuzione. Invece di bloccare l'intero database, questo consente a mysqldump di leggere il database nello stato corrente, generando un dump dei dati coerente.--routinesPer includere funzioni e stored procedure.Quando utilizzi
mysqldumpversione 8 o successive per esportare database MySQL precedenti alla versione 8:--column-statistics=0Questo flag rimuove la tabella COLUMN_STATISTICS dall'esportazione del database per evitare l'errore
Unknown table 'COLUMN_STATISTICS' in information_schema (1109). Per ulteriori informazioni, vedi Risolvere i problemi.
Ti consigliamo inoltre di utilizzare i seguenti flag:
--no-autocommit--default-character-set=utf8mb4--master-data
Da una macchina con connettività di rete al server MySQL, esegui il seguente 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 l'origine della migrazione è un servizio Relational Database Service (RDS) per MySQL:
- La proprietà
master-datanon è supportata. - Se il server del database di origine supporta GTID, utilizza la proprietà
--set-gtid-purged=on; in caso contrario, non utilizzarla. - Se utilizzi un dump manuale per eseguire la migrazione dei dati, esegui la migrazione con il GTID abilitato.
Questo comando potrebbe avere il seguente aspetto:
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
Inoltre, devi configurare le istanze RDS in modo che conservino i file binlog più a lungo. Questo comando potrebbe avere il seguente aspetto:
# Sets the retention period to one week.
call mysql.rds_set_configuration('binlog retention hours', 168);
Sostituisci [PROPERTIES_IN_BRACKETS] con i seguenti valori:
| Proprietà | Valore |
| [SOURCE_ADDR] | L'indirizzo IPv4 o il nome host del server del database di origine. |
| [SOURCE_PORT] | La porta per il server del database di origine. |
| [USERNAME] | L'account utente MySQL. |
| [DBS] | Un elenco separato da spazi dei database sul server del database di origine da includere nel dump. Utilizza il comando MySQL SHOW DATABASES per elencare i tuoi database. |
| [BUCKET_NAME] | Il bucket in Cloud Storage creato dall'utente e utilizzato per archiviare il file dump (ad esempio replica-bucket). |
| [DUMP_FILENAME] | Il nome del file del dump, che termina con un'estensione .gz (ad es. source-database.sql.gz). |