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 S3
istruzione 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 S3
istruzione può utilizzare i file creati dall'SELECT INTO
OUTFILE S3
istruzione 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.
Indice
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
-
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:GenerateDataKey
autorizzazione 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).
-
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.
-
Per Aurora My SQL versione 2, imposta il parametro del cluster
aurora_select_into_s3_role
oaws_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.
-
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
-
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
orrole_name
SET 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
Questo vale solo per la sessione attiva corrente. Quando ti riconnetti, devi eseguire nuovamente l'SET ROLE
istruzione per concedere i privilegi. Per ulteriori informazioni, vedere l'SETROLEistruzione
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 ROLE
istruzione in modo esplicito per attivare un ruolo. Per ulteriori informazioni, vedere activate_all_roles_on_login nel My Reference
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
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 perregion
, 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 S3
istruzione 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 S3
istruzione con l'MANIFEST ON
opzione per creare un file manifesto in JSON formato che elenchi i file di testo creati dall'istruzione. L'LOAD DATA FROM S3
istruzione 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
...] [FROMtable_references
[PARTITIONpartition_list
] [WHEREwhere_condition
] [GROUP BY {col_name
|expr
|position
} [ASC | DESC], ... [WITH ROLLUP]] [HAVINGwhere_condition
] [ORDER BY {col_name
|expr
|position
} [ASC | DESC], ...] [LIMIT {[offset
,]row_count
|row_count
OFFSEToffset
}] INTO OUTFILE S3 's3_uri
' [CHARACTER SETcharset_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'
TEXT
opzione è 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'istruzioneSELECT
. È 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 suLOAD 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
.manifestPer 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 ins3-uri
vengono sovrascritti. In caso contrario, si verifica un errore. - ENCRYPTION{ON | | SSE _S3 OFF | _ ['SSEKMS
cmk_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
impostazioniSSE_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 clausolaENCRYPTION
, 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
impostazioniSSE_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 diaurora_select_into_s3_encryption_default
èOFF
. -
ON
oppureSSE_S3
— L'oggetto S3 è crittografato utilizzando chiavi gestite di Amazon S3 SSE (-S3). -
SSE_KMS
— L'oggetto S3 viene crittografato utilizzando un. AWS KMS keyIn 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 stringacmk_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 valoreENCRYPTION
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
Considerazioni
Il numero di file scritti nel bucket Amazon S3 dipende dalla quantità di dati selezionata dall'SELECT INTO OUTFILE S3
istruzione 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 S3
istruzione 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 diversofile_prefix
nel parametros3-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 stessofile_prefix
nel parametros3-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 ins3-uri
o includereOVERWRITE ON
nella querySELECT INTO OUTFILE S3
.
L'SELECT INTO OUTFILE S3
istruzione 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;