Salvataggio di dati da un cluster Amazon Aurora My SQL DB in file di testo in un bucket Amazon S3 - Amazon Aurora

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à.

Salvataggio di dati da un cluster Amazon Aurora My SQL DB in file di testo in un bucket Amazon S3

Puoi utilizzare l'SELECT INTO OUTFILE S3istruzione per interrogare i dati da un cluster Amazon Aurora My SQL DB e salvarli in file di testo archiviati in un bucket Amazon S3. In Aurora MySQL, i file vengono prima archiviati sul disco locale e quindi esportati su S3. Al termine delle esportazioni, i file locali vengono eliminati.

Puoi crittografare il bucket Amazon S3 utilizzando una chiave gestita Amazon S3 (-S3) o SSE (-: AWS KMS key o SSE una chiave gestita dal cliente). KMS Chiave gestita da AWS

L'LOAD DATA FROM S3istruzione può utilizzare i file creati dall'SELECT INTO OUTFILE S3istruzione per caricare dati in un cluster Aurora DB. Per ulteriori informazioni, consulta Caricamento di dati in un cluster Amazon Aurora My SQL DB da file di testo in un bucket Amazon S3.

Nota

Questa funzionalità non è supportata per i cluster di database Aurora Serverless v1. È supportata per i cluster di database Aurora Serverless v2.

Puoi anche salvare i dati del cluster DB e i dati degli snapshot del cluster DB su Amazon S3 utilizzando AWS Management Console AWS CLI, o Amazon. RDS API Per ulteriori informazioni, consulta Esportazione dei dati del cluster database in Amazon S3 e Esportazione dei dati dello snapshot del cluster di database in Amazon S3.

Concedere ad Aurora My SQL l'accesso ad Amazon S3

Prima di poter salvare i dati in un bucket Amazon S3, devi prima concedere al cluster Aurora My SQL DB l'autorizzazione ad accedere ad Amazon S3.

Per consentire ad Aurora My di SQL accedere ad Amazon S3
  1. Crea una policy AWS Identity and Access Management (IAM) che fornisca le autorizzazioni per i bucket e gli oggetti che consentono al cluster Aurora My SQL DB di accedere ad Amazon S3. Per istruzioni, consulta Creazione di una IAM policy per l'accesso alle risorse di Amazon S3.

    Nota

    In Aurora My SQL versione 3.05 e successive, puoi crittografare gli oggetti utilizzando AWS KMS chiavi gestite dal cliente. A tal fine, includi l'kms:GenerateDataKeyautorizzazione nella tua politica. IAM Per ulteriori informazioni, consulta Creazione di una policy IAM per l'accesso alle risorseAWS KMS.

    Non è necessaria questa autorizzazione per crittografare gli oggetti utilizzando Chiavi gestite da AWS o le chiavi gestite da Amazon S3 SSE (-S3).

  2. Crea un IAM ruolo e collega la IAM policy che hai creato Creazione di una IAM policy per l'accesso alle risorse di Amazon S3 al nuovo ruolo. IAM Per istruzioni, consulta Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS.

  3. Per Aurora My SQL versione 2, imposta il parametro del cluster aurora_select_into_s3_role o aws_default_s3_role DB su Amazon Resource Name (ARN) del nuovo IAM ruolo. Se non è specificato un IAM ruolo peraurora_select_into_s3_role, Aurora utilizza il IAM ruolo specificato in. aws_default_s3_role

    Per Aurora My SQL versione 3, usa. aws_default_s3_role

    Se il cluster fa parte di un database globale Aurora, imposta questo parametro per ogni cluster Aurora nel database globale.

    Per ulteriori informazioni sui parametri del cluster DB, vedi Parametri dell'istanza database e del cluster database di Amazon Aurora.

  4. Per consentire agli utenti del database in un cluster Aurora My SQL DB di accedere ad Amazon S3, associa il ruolo che hai creato Creazione di un ruolo IAM per consentire ad Amazon Aurora di accedere ai servizi AWS al cluster DB.

    Per un database globale Aurora, associa il ruolo a ogni cluster Aurora nel database globale.

    Per informazioni sull'associazione di un IAM ruolo a un cluster DB, consulta. Associazione di un ruolo IAM a un cluster DB Amazon Aurora MySQL

  5. Configura il tuo cluster Aurora My SQL DB per consentire le connessioni in uscita ad Amazon S3. Per istruzioni, consulta Abilitazione della comunicazione di rete da Amazon Aurora ad altri servizi AWS.

    Per un database globale Aurora, abilita le connessioni in uscita per ogni cluster Aurora nel database globale.

Concessione dei privilegi per il salvataggio dei dati in Aurora My SQL

L'utente del database che emette l'istruzione SELECT INTO OUTFILE S3 deve avere un ruolo o un privilegio specifico. In Aurora My SQL version 3, concedi il AWS_SELECT_S3_ACCESS ruolo. In Aurora My SQL version 2, concedi il SELECT INTO S3 privilegio. All'utente amministrativo per un cluster di database è concesso il ruolo o il privilegio appropriato per impostazione predefinita. Puoi concedere il privilegio a un altro utente usando le seguenti istruzioni.

Usa la seguente dichiarazione per Aurora My SQL versione 3:

GRANT AWS_SELECT_S3_ACCESS TO 'user'@'domain-or-ip-address'
Suggerimento

Quando si utilizza la tecnica del ruolo in Aurora My SQL versione 3, è possibile attivare il ruolo anche utilizzando l'istruzione SET ROLE role_name orSET ROLE ALL. Se non conosci il sistema di ruoli My SQL 8.0, puoi saperne di più in. Privilegio basato sui ruoli Per maggiori dettagli, consulta Usare i ruoli nel My SQL Reference Manual.

Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire nuovamente l'SET ROLEistruzione per concedere i privilegi. Per ulteriori informazioni, vedere l'SETROLEistruzione nel My SQL Reference Manual.

Puoi utilizzare il parametro activate_all_roles_on_login del cluster di database per attivare automaticamente tutti i ruoli quando un utente si connette a un'istanza database. Quando questo parametro è impostato, in genere non è necessario chiamare l'SET ROLEistruzione in modo esplicito per attivare un ruolo. Per ulteriori informazioni, vedere activate_all_roles_on_login nel My Reference Manual. SQL

Tuttavia, è necessario chiamare SET ROLE ALL esplicitamente all'inizio di una stored procedure per attivare il ruolo, quando la stored procedure viene chiamata da un altro utente.

Usa la seguente dichiarazione per Aurora My SQL versione 2:

GRANT SELECT INTO S3 ON *.* TO 'user'@'domain-or-ip-address'

Il AWS_SELECT_S3_ACCESS ruolo e il SELECT INTO S3 privilegio sono specifici di Amazon Aurora SQL My e non sono disponibili per i miei database RDS o per le SQL istanze SQL My DB. Se è stata impostata la replica tra un cluster Aurora SQL My DB come origine di replica e un database SQL My come client di replica, l'istruzione per il ruolo o GRANT il privilegio causa l'interruzione della replica con un errore. Puoi ignorare l'errore in modo sicuro per riprendere la replica. Per ignorare l'errore su un'istanza RDS for My SQL DB, usa la procedura mysql_rds_skip_repl_error. Per ignorare l'errore su un SQL database My esterno, utilizzate la variabile di sistema slave_skip_errors (Aurora My SQL versione 2) o la variabile di sistema replica_skip_errors (Aurora My versione 3). SQL

Specifica di un percorso in un bucket Amazon S3

La sintassi per specificare un percorso per archiviare i file manifest e di dati in un bucket Amazon S3 è simile a quella utilizzata nell'istruzione LOAD DATA FROM S3 PREFIX, come mostrato di seguito.

s3-region://bucket-name/file-prefix

Il percorso include i seguenti valori:

  • region(opzionale): la AWS regione che contiene il bucket Amazon S3 in cui salvare i dati. Questo valore è facoltativo. Se non specifichi un valore per region, Aurora salva i file in Amazon S3 nella stessa regione del cluster DB.

  • bucket-name – Il nome del bucket Amazon S3 in cui salvare i dati. Sono supportati i prefissi degli oggetti che identificano un percorso di cartella virtuale.

  • file-prefix – Il prefisso dell'oggetto Amazon S3 che identifica i file da salvare in Amazon S3.

I file di dati creati dall'SELECT INTO OUTFILE S3istruzione utilizzano il seguente percorso, in cui 00000 rappresenta un numero intero a 5 cifre con base zero.

s3-region://bucket-name/file-prefix.part_00000

Ad esempio, supponiamo che un'istruzione SELECT INTO OUTFILE S3 specifichi s3-us-west-2://bucket/prefix come percorso in cui archiviare i file di dati e crea tre file di dati. Il bucket Amazon S3 specificato contiene i seguenti file di dati.

  • s3-us-west-2://bucket/prefix.part_00000

  • s3-us-west-2://bucket/prefix.part_00001

  • s3-us-west-2://bucket/prefix.part_00002

Creazione di un manifest per elencare i fili di dati

È possibile utilizzare l'SELECT INTO OUTFILE S3istruzione con l'MANIFEST ONopzione per creare un file manifesto in JSON formato che elenchi i file di testo creati dall'istruzione. L'LOAD DATA FROM S3istruzione può utilizzare il file manifest per caricare nuovamente i file di dati in un cluster Aurora My SQL DB. Per ulteriori informazioni sull'utilizzo di un manifest per caricare file di dati da Amazon S3 in un cluster Aurora My SQL DB, consulta. Utilizzo di un manifest per specificare i file di dati da caricare

I file di dati inclusi nel manifest creati dall'istruzione SELECT INTO OUTFILE S3 sono elencati nell'ordine in cui vengono creati dall'istruzione. Ad esempio, supponiamo che un'istruzione SELECT INTO OUTFILE S3 specifichi s3-us-west-2://bucket/prefix come percorso in cui archiviare i file di dati e crea tre file di dati e un file manifest. Il bucket Amazon S3 specificato contiene un file manifest denominato s3-us-west-2://bucket/prefix.manifest che contiene le seguenti informazioni.

{ "entries": [ { "url":"s3-us-west-2://bucket/prefix.part_00000" }, { "url":"s3-us-west-2://bucket/prefix.part_00001" }, { "url":"s3-us-west-2://bucket/prefix.part_00002" } ] }

SELECTINTOOUTFILES3

Puoi usare l'istruzione SELECT INTO OUTFILE S3 per eseguire una query sui dati da un cluster DB e salvarlo direttamente nei file di testo delimitato archiviati in un bucket Amazon S3.

I file compressi non sono supportati. I file crittografati sono supportati a partire dalla SQL versione 2.09.0 di Aurora My.

Sintassi

SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] INTO OUTFILE S3 's3_uri' [CHARACTER SET charset_name] [export_options] [MANIFEST {ON | OFF}] [OVERWRITE {ON | OFF}] [ENCRYPTION {ON | OFF | SSE_S3 | SSE_KMS ['cmk_id']}] export_options: [FORMAT {CSV|TEXT} [HEADER]] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ]

Parametri

L'istruzione SELECT INTO OUTFILE S3 utilizza i seguenti parametri obbligatori e facoltativi specifici per Aurora.

s3-uri

Speciifica il URI prefisso Amazon S3 da utilizzare. Utilizza la sintassi descritta in Specifica di un percorso in un bucket Amazon S3.

FORMAT {CSV|TEXT} [HEADER]

Facoltativamente, salva i dati in formato. CSV

L'TEXTopzione è l'impostazione predefinita e produce il formato My SQL export esistente.

L'opzione CSV genera valori di dati separati da virgole. Il CSV formato segue le specifiche in RFC-4180. Se si specifica la parola chiave facoltativa HEADER, il file di output contiene una riga di intestazione. Le etichette nella riga di intestazione corrispondono ai nomi di colonna dell'istruzione SELECT. È possibile utilizzare i CSV file per addestrare modelli di dati da utilizzare con i servizi AWS ML. Per ulteriori informazioni sull'utilizzo dei dati Aurora esportati AWS con i servizi ML, vedere. Esportazione di dati su Amazon S3 SageMaker per la formazione dei modelli (Advanced)

MANIFEST{ON |} OFF

Indica se un file manifesto viene creato in Amazon S3. Il file manifest è un file JavaScript Object Notation (JSON) che può essere utilizzato per caricare dati in un cluster Aurora DB con LOAD DATA FROM S3 MANIFEST l'istruzione. Per ulteriori informazioni su LOAD DATA FROM S3 MANIFEST, consulta Caricamento di dati in un cluster Amazon Aurora My SQL DB da file di testo in un bucket Amazon S3.

Se MANIFEST ON è specificato nella query, il file manifest viene creato in Amazon S3 dopo che tutti i file di dati sono stati creati e caricati. Il file manifest viene creato utilizzando il seguente percorso:

s3-region://bucket-name/file-prefix.manifest

Per ulteriori informazioni sul formato del contenuto del file manifest, consulta Creazione di un manifest per elencare i fili di dati.

OVERWRITE{SU |} OFF

Indica se i file esistenti nel bucket Amazon S3 specificato vengono sovrascritti. Se OVERWRITE ON viene specificato, i file esistenti che corrispondono al prefisso del file URI specificato in s3-uri vengono sovrascritti. In caso contrario, si verifica un errore.

ENCRYPTION{ON | | SSE _S3 OFF | _ ['SSEKMScmk_id']}

Indica se utilizzare la crittografia lato server con le chiavi gestite di Amazon S3 SSE (-S3) AWS KMS keys o SSE (KMS-, Chiavi gestite da AWS incluse le chiavi gestite dal cliente). Le SSE_KMS impostazioni SSE_S3 e sono disponibili in Aurora My SQL versione 3.05 e successive.

Puoi anche utilizzare la variabile di sessione aurora_select_into_s3_encryption_default anziché la clausola ENCRYPTION, come illustrato nell'esempio seguente. Utilizzate la SQL clausola o la variabile di sessione, ma non entrambe.

set session set session aurora_select_into_s3_encryption_default={ON | OFF | SSE_S3 | SSE_KMS};

Le SSE_KMS impostazioni SSE_S3 e sono disponibili in Aurora My SQL versione 3.05 e successive.

Impostando aurora_select_into_s3_encryption_default sul seguente valore:

  • OFF: viene seguita la policy di crittografia predefinita del bucket S3. Il valore predefinito di aurora_select_into_s3_encryption_default è OFF.

  • ONoppure SSE_S3 — L'oggetto S3 è crittografato utilizzando chiavi gestite di Amazon S3 SSE (-S3).

  • SSE_KMS— L'oggetto S3 viene crittografato utilizzando un. AWS KMS key

    In questo caso, includi anche la variabile di sessione aurora_s3_default_cmk_id, ad esempio:

    set session aurora_select_into_s3_encryption_default={SSE_KMS}; set session aurora_s3_default_cmk_id={NULL | 'cmk_id'};
    • Quando aurora_s3_default_cmk_id è NULL, l'oggetto S3 viene crittografato utilizzando una Chiave gestita da AWS.

    • Quando aurora_s3_default_cmk_id è una stringa cmk_id non vuota, l'oggetto S3 viene crittografato utilizzando una chiave gestita dal cliente.

      Il valore di cmk_id non può essere una stringa vuota.

Quando utilizzi il comando SELECT INTO OUTFILE S3, Aurora determina la crittografia come segue:

  • Se la ENCRYPTION clausola è presente nel SQL comando, Aurora si basa solo sul valore ENCRYPTION di e non utilizza una variabile di sessione.

  • Se la clausola ENCRYPTION non è presente, Aurora si basa sul valore della variabile di sessione.

Per ulteriori informazioni, consulta Uso della crittografia lato server con chiavi gestite di Amazon S3 SSE (-S3) e Utilizzo della crittografia lato server con AWS KMS chiavi (SSE-KMS) nella Guida per l'utente di Amazon Simple Storage Service.

Puoi trovare maggiori dettagli su altri parametri nelle istruzioni e LOAD DATA nelle istruzioni, nella SELECTdocumentazione personale. SQL

Considerazioni

Il numero di file scritti nel bucket Amazon S3 dipende dalla quantità di dati selezionata dall'SELECT INTO OUTFILE S3istruzione e dalla soglia di dimensione del file per Aurora My. SQL La soglia della dimensione del file predefinita è 6 gigabyte (GB). Se i dati selezionati dall'istruzione sono inferiori alla soglia della dimensione del file, viene creato un singolo file; in caso contrario, vengono creati più file. Altre considerazioni per i file creati da questa dichiarazione includono quanto segue:

  • Aurora My SQL garantisce che le righe dei file di dati non siano suddivise tra i confini dei file. Nel caso di più file, la dimensione di ogni file di dati tranne l'ultimo è in genere vicino alla soglia della dimensione del file. Tuttavia, ogni tanto poiché restano sotto la soglia della dimensione del file, una riga viene suddivisa su due file di dati. In questo caso, Aurora My SQL crea un file di dati che mantiene intatta la riga, ma potrebbe superare la soglia di dimensione del file.

  • Poiché ogni SELECT istruzione in Aurora My SQL viene eseguita come transazione atomica, un'SELECT INTO OUTFILE S3istruzione che seleziona un set di dati di grandi dimensioni potrebbe essere eseguita per qualche tempo. Se l'istruzione non riesce per qualsiasi motivo, potrebbe essere necessario ricominciare ed emettere nuovamente l'istruzione. Se l'istruzione non riesce, tuttavia, i file che sono già stati caricati in Amazon S3 rimangono nel bucket Amazon S3 specifico. Puoi utilizzare un'altra istruzione per caricare i dati rimanenti anziché ricominciare da capo.

  • Se la quantità di dati da selezionare è elevata (oltre 25 GB), ti consigliamo di utilizzare più istruzioni SELECT INTO OUTFILE S3 per salvare i dati in Amazon S3. Ogni istruzione dovrebbe selezionare una parte diversa dei dati da salvare e anche specificare un diverso file_prefix nel parametro s3-uri da utilizzare quando si salvano i file di dati. Il partizionamento dei dati da selezionare con più istruzioni facilita il recupero da un errore in un'istruzione. Se si verifica un errore per un'istruzione, solo una parte dei dati deve essere riselezionata e caricata in Amazon S3. L'utilizzo di più istruzioni aiuta anche a evitare una singola transazione di lunga durata, che può migliorare le prestazioni.

  • Se più istruzioni SELECT INTO OUTFILE S3 che utilizzano lo stesso file_prefix nel parametro s3-uri vengono eseguite in parallelo per selezionare i dati in Amazon S3, il comportamento non è definito.

  • I metadati, come lo schema delle tabelle o i metadati dei file, non vengono caricati da Aurora My su Amazon SQL S3.

  • In alcuni casi, potresti rieseguire una query SELECT INTO OUTFILE S3, ad esempio per ripristinare a causa di un errore. In questi casi, devi rimuovere tutti i file di dati esistenti nel bucket Amazon S3 con lo stesso prefisso di file specificato in s3-uri o includere OVERWRITE ON nella query SELECT INTO OUTFILE S3.

L'SELECT INTO OUTFILE S3istruzione restituisce un tipico numero di SQL errore My e una risposta in caso di esito positivo o negativo. Se non hai accesso al numero di SQL errore e alla risposta di My error, il modo più semplice per determinare quando è stato completato è specificarlo MANIFEST ON nell'istruzione. Il file manifest è l'ultimo file scritto dall'istruzione. In altre parole, se hai un file manifest, l'istruzione ha completato.

Al momento non è possibile monitorare direttamente l'avanzamento dell'istruzione SELECT INTO OUTFILE S3 durante l'esecuzione. Tuttavia, supponiamo che tu stia scrivendo una grande quantità di dati da Aurora SQL My ad Amazon S3 utilizzando questa istruzione e che tu conosca la dimensione dei dati selezionati dall'istruzione. In questo caso, puoi stimare l'avanzamento monitorando la creazione di file di dati in Amazon S3.

Per fare ciò, è possibile utilizzare il fatto che un file di dati viene creato nel bucket Amazon S3 specificato ogni circa 6 GB di dati selezionati dall'istruzione. Dividi la dimensione dei dati selezionati da 6 GB per ottenere il numero stimato di file di dati da creare. È quindi possibile stimare l'avanzamento dell'istruzione monitorando il numero di file caricati in Amazon S3 durante l'esecuzione.

Esempi

L'istruzione seguente seleziona tutti i dati nella employees tabella e li salva in un bucket Amazon S3 che si trova in una regione diversa dal cluster Aurora My DB. SQL L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (,) e ogni riga è terminata da un carattere di nuova riga (\n). L'istruzione restituisce un errore se i file che corrispondono al prefisso del file sample_employee_data esistono nel bucket Amazon S3 specificato.

SELECT * FROM employees INTO OUTFILE S3 's3-us-west-2://aurora-select-into-s3-pdx/sample_employee_data' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

L'istruzione seguente seleziona tutti i dati nella employees tabella e li salva in un bucket Amazon S3 che si trova nella stessa regione del cluster Aurora My DB. SQL L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (,) e ogni riga è terminata da un carattere di nuova riga (\n) e un file manifest. L'istruzione restituisce un errore se i file che corrispondono al prefisso del file sample_employee_data esistono nel bucket Amazon S3 specificato.

SELECT * FROM employees INTO OUTFILE S3 's3://aurora-select-into-s3-pdx/sample_employee_data' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' MANIFEST ON;

La seguente istruzione seleziona tutti i dati nella tabella employees e li salva in un bucket Amazon S3 che si trova in una regione diversa dal cluster DB Aurora. L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (,) e ogni riga è terminata da un carattere di nuova riga (\n). L'istruzione sostituisce ogni file che corrisponde al prefisso del file sample_employee_data esistono nel bucket Amazon S3 specificato.

SELECT * FROM employees INTO OUTFILE S3 's3-us-west-2://aurora-select-into-s3-pdx/sample_employee_data' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' OVERWRITE ON;

L'istruzione seguente seleziona tutti i dati nella employees tabella e li salva in un bucket Amazon S3 che si trova nella stessa regione del cluster Aurora My DB. SQL L'istruzione crea file di dati in cui ogni campo è terminato da una virgola (,) e ogni riga è terminata da un carattere di nuova riga (\n) e un file manifest. L'istruzione sostituisce ogni file che corrisponde al prefisso del file sample_employee_data esistono nel bucket Amazon S3 specificato.

SELECT * FROM employees INTO OUTFILE S3 's3://aurora-select-into-s3-pdx/sample_employee_data' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' MANIFEST ON OVERWRITE ON;