Importazione di dati da un database MySQL esterno in un’istanza database Amazon RDS per MySQL
È possibile importare i dati da un database MySQL esistente in un’istanza database RDS per MySQL. A tale scopo, copia il database con mysqldumpmysqldump viene spesso utilizzata per creare backup e trasferire dati da un server MySQL a un altro ed è inclusa nel software client MySQL.
Nota
Se si importano o si esportano grandi quantità di dati con un’istanza database MySQL, per rendere più affidabile e più veloce lo spostamento di dati da e verso Amazon RDS è consigliabile utilizzare i file di backup xtrabackup e Amazon S3. Per ulteriori informazioni, consulta Ripristino di un backup in un’istanza database Amazon RDS per MySQL.
Un tipico comando mysqldump per spostare dati da un database esterno a un’istanza database Amazon RDS è simile al seguente. Sostituisci i valori con le tue informazioni.
mysqldump -ulocal_user\ --databasesdatabase_name\ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password| mysql -uRDS_user\ --port=port_number\ --host=host_name\ -pRDS_password
Importante
Assicurati di non lasciare spazi tra l'opzione -p e la password immessa.
Come best practice per la sicurezza, specifica credenziali diverse dai prompt mostrati nell’esempio.
Assicurati di essere a conoscenza dei seguenti suggerimenti e considerazioni:
-
Escludi gli schemi seguenti dal file di dump:
-
sys -
performance_schema -
information_schema
Per impostazione predefinita, l'utility
mysqldumpesclude questi schemi. -
-
Per eseguire la migrazione di utenti e privilegi, potresti utilizzare uno strumento che generi il linguaggio di controllo dati (DCL) per ricrearli (ad esempio, l'utility pt-show-grants
). -
L’utente che esegue l'importazione deve avere accesso all'istanza database. Per ulteriori informazioni, consulta Controllo dell'accesso con i gruppi di sicurezza.
I parametri utilizzati sono i seguenti:
-
-u: specifica un nome utente. La prima volta che si utilizza questo parametro, specificare il nome di un account utente nel database MySQL locale, identificato dal parametrolocal_user--databases. -
--databases: specifica il nome del database nell’istanza database MySQL locale da importare in Amazon RDS.database_name -
--single-transaction– Verifica che tutti i dati caricati dal database locale siano coerenti a un singolo punto temporale. Nel caso in cui vi siano altri processi che modificano i dati mentremysqldumpli legge, l'uso di questo parametro aiuta a preservare l'integrità dei dati. -
--compress– Riduce il consumo della larghezza di banda di rete comprimendo i dati dal database locale prima di inviarli ad Amazon RDS. -
--order-by-primary: riduce il tempo di caricamento ordinando i dati di ogni tabella in base alla chiave primaria. -
--routines: parametro utilizzato se nel database da copiare sono presenti routine, ad esempio stored procedure o funzioni. Imposta il parametro su0per escludere le routine durante il processo di importazione. Successivamente, ricrea manualmente le routine nel database Amazon RDS. -
--triggers: parametro utilizzato se nel database da copiare sono presenti trigger. Imposta il parametro su0per escludere i trigger durante il processo di importazione. Successivamente, ricrea manualmente i trigger nel database Amazon RDS. -
--events: parametro utilizzato se nel database da copiare sono presenti eventi. Imposta il parametro su0per escludere gli eventi durante il processo di importazione. Successivamente, ricrea manualmente gli eventi nel database Amazon RDS. -
-p– Specifica una password. La prima volta che si utilizza questo parametro, specificare la password per l’account utente identificato dal primo parametrolocal_password-u. -
-u: specifica un nome utente. La seconda volta che si utilizza questo parametro, specificare il nome di un account utente nel database predefinito per l’istanza database MySQL identificata dal parametroRDS_user--host. -
--port: specifica la porta per l’istanza database MySQL. Il valore predefinito è 3306, che può essere modificato al momento della creazione dell’istanza database.port_number -
--host– Specifica il nome del sistema dei nomi di dominio (DNS) dall'endpoint dell'istanza database Amazon RDS, ad esempiohost_namemyinstance.123456789012.us-east-1.rds.amazonaws.com. Il valore dell’endpoint è disponibile nei dettagli dell’istanza database nella console Amazon RDS. -
-p– Specifica una password. La seconda volta che usi questo parametro, devi specificare la password per l'account utente identificato dal secondo parametroRDS_password-u.
Eventuali procedure, trigger, funzioni o eventi devono essere creati manualmente nel database Amazon RDS. Se il database da copiare dovesse contenere questi tipi di oggetti, dovrai escluderli al momento di eseguire mysqldump. A tale scopo, includi i parametri seguenti con il comando mysqldump:
-
--routines=0 -
--triggers=0 -
--events=0
Esempio
Di seguito il database di esempio world viene copiato nell’host locale in un’istanza database RDS per MySQL. Sostituisci i valori con le tue informazioni.
Per Linux, macOS o Unix:
sudo mysqldump -ulocal_user\ --databasesworld\ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password| mysql -urds_user\ --port=3306\ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com\ -pRDS_password
Per Windows:
Apri un prompt dei comandi facendo clic con il pulsante destro del mouse su Prompt dei comandi del menu dei programmi di Windows e selezionando Esegui come amministratore ed esegui il comando seguente. Sostituisci i valori con le tue informazioni.
mysqldump -ulocal_user^ --databasesworld^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocal_password| mysql -uRDS_user^ --port=3306^ --host=my_instance.123456789012.us-east-1.rds.amazonaws.com^ -pRDS_password
Nota
Come best practice per la sicurezza, specifica credenziali diverse dai prompt mostrati nell’esempio.