Importazione di dati da qualsiasi fonte in un'istanza DB Amazon RDS for MySQL - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Importazione di dati da qualsiasi fonte in un'istanza DB Amazon RDS for MySQL

I seguenti passaggi illustrano l'importazione di dati in un'istanza database Amazon RDS:

Fase 1: Creazione di file flat contenenti i dati da caricare

Per salvare i dati da caricare, utilizza un formato comune, come ad esempio valori separati da virgola (CSV). Ogni tabella deve avere un proprio file: non è possibile combinare i dati di più tabelle nello stesso file. Devi fornire a ciascun file lo stesso nome della tabella corrispondente. Il file può avere qualsiasi estensione. Ad esempio, se il nome della tabella èsales, il nome del file potrebbe essere sales.csv o. sales.txt

Se possibile, ordina i dati in base alla chiave primaria della tabella da caricare. In questo modo i tempi di caricamento risultano significativamente più rapidi e si riduce il consumo di spazio su disco.

La velocità e l'efficienza di questa procedura dipende dalla capacità di mantenere contenute le dimensioni dei file. Se le dimensioni di un qualsiasi file (non compresso) superano 1 GiB, suddividilo in più file da caricare separatamente.

Nei sistemi di tipo Unix (incluso Linux), puoi utilizzare il comando split. Ad esempio, il comando seguente divide il file sales.csv in vari file con dimensioni inferiori a 1 GiB. Le divisioni vengono effettuate solo sulle interruzioni di riga (-C 1024m). I nomi dei nuovi file includono suffissi numerici crescenti. Il comando seguente produce file con nomi come e. sales.part_00 sales.part_01

split -C 1024m -d sales.csv sales.part_

Utility simili sono disponibili anche per altri sistemi operativi.

È possibile archiviare i file flat ovunque. Tuttavia, quando si caricano i dati nel passaggio 5, è necessario richiamare la mysql shell dalla stessa posizione in cui esistono i file o utilizzare il percorso assoluto dei file durante l'esecuzioneLOAD DATA LOCAL INFILE.

Passaggio 2: impedire a qualsiasi applicazione di accedere all'istanza DB di destinazione

Prima di iniziare un carico di grandi dimensioni, impedisci a tutte le attività dell'applicazione di accedere all'istanza DB di destinazione su cui intendi effettuare il caricamento. Questa operazione è particolarmente consigliata se le altre sessioni modificano le tabelle caricate o quelle di riferimento. In questo modo, puoi ridurre i rischi di violazione dei vincoli e ottimizzare le prestazioni durante il caricamento. Inoltre, diventa possibile ripristinare l'istanza database al punto immediatamente precedente il caricamento, senza perdere le modifiche apportate dai processi che non sono coinvolti nell'operazione di caricamento.

Ovviamente, ci sono casi in cui l'esecuzione di questa operazione risulta impossibile o poco pratica. Se puoi evitare che alcune applicazioni accedano all'istanza database prima del caricamento, prendi tutte le misure necessarie per assicurare la disponibilità e l'integrità dei dati. Tali misure dipendono in larga parte dal tipo specifico di utilizzo e dai requisiti del sito.

Fase 3: Creazione di una snapshot DB

Se desideri caricare i dati in una nuova istanza database priva di dati, puoi ignorare questa parte. Altrimenti, ti consigliamo di creare snapshot DB dell'istanza database Amazon RDS di destinazione sia prima che dopo il caricamento dei dati. Gli snapshot DB di Amazon RDS sono backup completi dell'istanza DB che puoi utilizzare per ripristinare l'istanza DB in uno stato noto. Quando avvii una snapshot DB, le operazioni I/O dell'istanza database vengono temporaneamente sospese per il backup.

Creando una snapshot DB immediatamente prima di caricare i dati ti consente di ripristinare il database allo stato precedente il caricamento, se fosse necessario. Una snapshot DB ottenuta immediatamente dopo il caricamento consente di non dover caricare nuovamente i dati in caso di problemi. Puoi anche utilizzare gli snapshot DB dopo il caricamento per importare dati in nuove istanze di database.

L'esempio seguente esegue il AWS CLI create-db-snapshotcomando per creare uno snapshot DB dell'AcmeRDSistanza e assegnare all'istantanea del DB l'identificatore. "preload"

In Linux, macOS, oppure Unix:

aws rds create-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

In Windows:

aws rds create-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Puoi utilizzare anche la funzione di ripristino da snapshot DB per creare istanze database di prova in cui eseguire test o annullare modifiche apportate durante il caricamento.

Ricorda che il ripristino di un database da una snapshot DB crea una nuova istanza database che, come tutte le istanze database, possiede un identificatore e un endpoint univoci. Per ripristinare l'istanza database senza modificare l'endpoint, devi innanzitutto eliminare l'istanza database, in modo da poter riutilizzare l'endpoint.

Ad esempio, per creare un'istanza database in cui eseguire test di vario tipo, devi assegnare all'istanza database il proprio identificatore. Nell’esempio, l'identificatore è AcmeRDS-2". L'esempio si connette all'istanza database utilizzando l'endpoint associato a AcmeRDS-2. Per ulteriori informazioni, vedere restore-db-instance-from-db-snapshot.

In Linux, macOS, oppure Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS-2 \ --db-snapshot-identifier preload

In Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS-2 ^ --db-snapshot-identifier preload

Per riutilizzare l'endpoint esistente, innanzitutto elimina l'istanza database e fornisci al database ripristinato lo stesso identificatore. Per ulteriori informazioni, consulta delete-db-instance.

L'esempio seguente esegue anche uno snapshot DB finale dell'istanza DB prima di eliminarla. Questo passaggio è facoltativo, ma è consigliato.

In Linux, macOS, oppure Unix:

aws rds delete-db-instance \ --db-instance-identifier AcmeRDS \ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

In Windows:

aws rds delete-db-instance ^ --db-instance-identifier AcmeRDS ^ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Fase 4 (opzionale): disattivare i backup automatici di Amazon RDS

avvertimento

Non disattivare i backup automatici se è necessario eseguire point-in-time il ripristino.

La disattivazione dei backup automatici rappresenta un'ottimizzazione delle prestazioni e non è necessaria per il caricamento dei dati. La disattivazione dei backup automatici cancella tutti i backup esistenti. Di conseguenza, dopo aver disattivato i backup automatici, il point-in-time ripristino non è possibile. Gli snapshot DB manuali non sono influenzati dalla disattivazione dei backup automatici. Tutti gli snapshot DB esistenti rimangono disponibili per il ripristino.

La disattivazione dei backup automatici velocizza il tempo di caricamento di circa il 25% e riduce la quantità di spazio richiesto. Se devi caricare dati in una nuova istanza database che non contiene altri dati, la disattivazione dei backup rappresenta un'ottima soluzione per velocizzare il caricamento ed evitare di occupare troppo spazio con i backup. Tuttavia, in alcuni casi, potresti pianificare di caricare i dati in un'istanza database che contiene già altri dati. In tal caso, valuta i vantaggi della disattivazione dei backup rispetto all'impatto della perdita della capacità di esecuzione. point-in-time-recovery

Per impostazione predefinita, i backup sono attivati per le istanze database (con un periodo di conservazione di un giorno). Per disabilitare i backup automatici, imposta il periodo di conservazione del backup su zero. Dopo il caricamento potrai riattivare i backup automatici impostando il periodo di conservazione su un valore diverso da zero. Per attivare o disattivare i backup, Amazon RDS chiude l'istanza DB e quindi la riavvia per attivare o disattivare la registrazione MariaDB o MySQL.

Esegui il AWS CLI modify-db-instance comando per impostare la conservazione del backup su zero e applica immediatamente la modifica. Per impostare il periodo di retention su zero è necessario riavviare l'istanza database, quindi prima di continuare dovrai attendere il completamento del riavvio. Per ulteriori informazioni, consulta modify-db-instance.

In Linux, macOS, oppure Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --apply-immediately \ --backup-retention-period 0

In Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --apply-immediately ^ --backup-retention-period 0

Puoi controllare lo stato della tua istanza DB con il AWS CLI describe-db-instancescomando. L'esempio seguente mostra lo stato dell'istanza AcmeRDS DB dell'istanza DB:

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

Quando lo stato dell'istanza DB è impostatoavailable, sei pronto per procedere alla fase successiva.

Fase 5: Caricamento dei dati

Per leggere le righe dai tuoi file flat nelle tabelle del database, usa l'istruzione LOAD DATA LOCAL INFILE MySQL.

Nota

È necessario richiamare la mysql shell dalla stessa posizione in cui si trovano i file flat o utilizzare il percorso assoluto dei file durante l'esecuzione. LOAD DATA LOCAL INFILE

L'esempio seguente mostra come caricare i dati da un file denominato sales.txt in una tabella denominata Sales nel database:

mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\'; Query OK, 1 row affected (0.01 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

Per ulteriori informazioni sull'LOAD DATAistruzione, vedere l'istruzione LOAD DATA nella documentazione di MySQL.

Passaggio 6: riattivare i backup automatici di Amazon RDS

Se hai disattivato i backup automatici di Amazon RDS nella fase 4, al termine del caricamento, attiva i backup automatici impostando il periodo di conservazione del backup sul valore di precaricamento. Come indicato nella fase 4, Amazon RDS riavvia l'istanza DB, quindi preparati a una breve interruzione.

L'esempio seguente esegue il AWS CLI modify-db-instancecomando per attivare i backup automatici per l'istanza AcmeRDS DB e impostare il periodo di conservazione su un giorno:

In Linux, macOS, oppure Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --backup-retention-period 1 \ --apply-immediately

In Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --backup-retention-period 1 ^ --apply-immediately