Importazione di dati da un database MySQL esterno in un’istanza database Amazon RDS per MySQL - Amazon Relational Database Service

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 mysqldump e reindirizzalo direttamente nell’istanza database RDS per MySQL. L’utilità a riga di comando mysqldump 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 -u local_user \ --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u RDS_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 mysqldump esclude 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 local_user: 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 parametro --databases.

  • --databases database_name: specifica il nome del database nell’istanza database MySQL locale da importare in Amazon RDS.

  • --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 mentre mysqldump li 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 su 0 per 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 su 0 per 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 su 0 per escludere gli eventi durante il processo di importazione. Successivamente, ricrea manualmente gli eventi nel database Amazon RDS.

  • -plocal_password – Specifica una password. La prima volta che si utilizza questo parametro, specificare la password per l’account utente identificato dal primo parametro -u.

  • -u RDS_user: 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 parametro --host.

  • --port port_number: specifica la porta per l’istanza database MySQL. Il valore predefinito è 3306, che può essere modificato al momento della creazione dell’istanza database.

  • --host host_name – Specifica il nome del sistema dei nomi di dominio (DNS) dall'endpoint dell'istanza database Amazon RDS, ad esempio myinstance.123456789012.us-east-1.rds.amazonaws.com. Il valore dell’endpoint è disponibile nei dettagli dell’istanza database nella console Amazon RDS.

  • -pRDS_password – Specifica una password. La seconda volta che usi questo parametro, devi specificare la password per l'account utente identificato dal secondo parametro -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 -u local_user \ --databases world \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocal_password | mysql -u rds_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 -u local_user ^ --databases world ^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocal_password | mysql -u RDS_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.