Importazione dei dati da qualsiasi origine a un'istanza database MariaDB o 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 dei dati da qualsiasi origine a un'istanza database MariaDB o MySQL

Consigliamo di creare snapshot DB dell'istanza database Amazon RDS di destinazione prima e dopo il caricamento dei dati. Le snapshot DB di Amazon RDS sono backup completi della tua istanza database che puoi utilizzare per ripristinare la tua istanza database 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 effettuata immediatamente dopo il caricamento evita la necessità di caricare nuovamente i dati in caso di problemi e può essere utilizzata per inizializzare nuove istanze database.

Nell'elenco seguente è indicata la procedura da eseguire. Ciascun passaggio della procedura è descritto in modo dettagliato di seguito.

  1. Creazione di file flat contenenti i dati da caricare.

  2. Arresto delle applicazioni che accedono all'istanza database di destinazione.

  3. Creazione di una snapshot DB.

  4. Valuta se disattivare i backup automatici di Amazon RDS.

  5. Carica i dati.

  6. Riattivazione dei backup automatici.

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). Ciascuna tabella deve possedere il 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, ma non sales_01.csv.

Quando 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 nuovi file sono denominati sales.part_00, sales.part_01 e così via.

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

Utility simili sono disponibili anche per altri sistemi operativi.

Fase 2: Arresto delle applicazioni che accedono all'istanza database di destinazione

Prima di avviare il caricamento di grandi quantità di dati, interrompie le attività di tutte le applicazioni che accedono all'istanza database in cui intendi eseguire 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. In caso contrario, la creazione di uno snapshot DB dell'istanza database ti consente di ripristinare l'istanza database nel punto immediatamente precedente al caricamento, se fosse necessario. Come spiegato in precedenza, quando avvii uno snapshot DB, le operazioni I/O dell'istanza database vengono sospese per alcuni minuti, mentre ha luogo il backup.

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

PerLinux, o: macOS Unix

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

Per 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 LinuxmacOS, oUnix:

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

Per 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 LinuxmacOS, oUnix:

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

Per 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

L'esempio precedente crea uno snapshot DB finale dell'istanza database prima di eliminarla. Questo passaggio è facoltativo, ma è consigliato.

Fase 4: Eventuale disattivazione dei backup automatici di Amazon RDS

avvertimento

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

La disattivazione dei backup automatici cancella tutti i backup esistenti, quindi il point-in-time ripristino non è possibile dopo la disattivazione dei backup automatici. La disattivazione dei backup automatici serve a ottimizzare le prestazioni, ma non è indispensabile per il caricamento dei dati. 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, soppesate 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 database e la riavvia in modo da attivare o disattivare i log MariaDB o MySQL.

Utilizzate il AWS CLI modify-db-instance comando per impostare la conservazione dei backup su zero e applicare 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 LinuxmacOS, oUnix:

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

Per 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-instances comando. Nell'esempio seguente viene visualizzato lo stato dell'istanza database dell'istanza database AcmeRDS.

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

Quando lo stato dell'istanza DB è available, si è pronti per procedere.

Fase 5: Caricamento dei dati

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

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 sulla LOAD DATA dichiarazione, consulta la documentazione di MySQL.

Fase 6: Riattivazione dei backup automatici di Amazon RDS

Al termine del caricamento, riattiva i backup automatici di Amazon RDS reimpostando il tempo di conservazione del backup sul valore originale. Come indicato in precedenza, Amazon RDS riavvia l'istanza database, interrompendo brevemente le attività.

L'esempio seguente utilizza il AWS CLI modify-db-instance comando per attivare i backup automatici per l'istanza AcmeRDS DB e impostare il periodo di conservazione su un giorno.

Per LinuxmacOS, oUnix:

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

Per Windows:

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