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:
--databases
Specifica un elenco esplicito dei database da esportare. Questo elenco non deve contenere i database di sistema (sys
,mysql
,performance_schema
einformation_schema
).--hex-blob
Se il tuo database contiene campi binari, devi utilizzare questo flag per assicurarti che vengano importati correttamente.--single-transaction
Avvia 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.--routines
Per includere funzioni e stored procedure.Quando utilizzi
mysqldump
versione 8 o successive per esportare database MySQL precedenti alla versione 8:--column-statistics=0
Questo 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-data
non è 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 essere simile al seguente esempio:
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 essere simile al seguente esempio:
# 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 di file .gz (ad es. source-database.sql.gz ). |