Exportação de dados de snapshot de banco de dados para o Amazon S3
Você pode exportar dados de snapshots de banco de dados para um bucket do Amazon S3. O processo de exportação é executado em segundo plano e não afeta a performance da instância de banco de dados que estiver em atividade.
Quando você exporta um snapshot de banco de dados, o Amazon RDS extrai dados do snapshot e os armazena em um bucket do Amazon S3 na sua conta. Os dados são armazenados em um formato Apache Parquet que é compactado e consistente.
Você pode exportar todos os tipos de snapshots de banco de dados, inclusive snapshots manuais, snapshots automatizados do sistema e snapshots criados pelo serviço AWS Backup. Por padrão, todos os dados no snapshot são exportados. No entanto, você pode optar por exportar conjuntos específicos de bancos de dados, esquemas ou tabelas.
Depois que os dados são exportados, você pode analisar os dados exportados diretamente por meio de ferramentas, como Amazon Athena ou Amazon Redshift Spectrum. Para obter mais informações sobre como usar o Athena para ler os dados do Parquet, consulte Parquet SerDe no Manual do usuário do Amazon Athena. Para obter mais informações sobre como usar o Redshift Spectrum para ler os dados do Parquet, consulte COPY from columnar data formats (COPIAR de formatos de dados colunares) no Amazon Redshift Database Developer Guide.
O Amazon RDS é compatível com a exportação de snapshots em todas as regiões da AWS, exceto:
-
Ásia-Pacífico (Jacarta)
-
AWS GovCloud (Leste dos EUA)
-
AWS GovCloud (Oeste dos EUA)
A tabela a seguir mostra as versões do mecanismo que têm suporte para a exportação de dados de snapshots para o Amazon S3.
MariaDB | MySQL | PostgreSQL |
---|---|---|
10.3 10.2.12 e posterior |
8.0.13 e posterior 5.7.24 e posterior 5.6.40 e posterior |
Todas as versões 12 e 13 11.2 e posterior 10.7 e posterior 9.6.6 – 9.6.9, 9.6.12 e posterior |
Para obter listas completas das versões do mecanismo compatíveis com o Amazon RDS, consulte o seguinte:
Tópicos
- Limitações
- Visão geral da exportação de dados de snapshot
- Configurar o acesso a um bucket do Amazon S3
- Uso de um AWS KMS key entre contas para criptografar exportações do Amazon S3
- Exportar um snapshot para um bucket do Amazon S3
- Monitorar exportações de snapshots
- Cancelar uma tarefa de exportação de snapshot
- Mensagens de falha de tarefas de exportação do Amazon S3
- Solucionar problemas de erros de permissões do PostgreSQL
- Convenção de nomenclatura de arquivos
- Conversão de dados ao exportar para um bucket do Amazon S3
Limitações
A exportação de dados de snapshots de banco de dados para o Amazon S3 apresenta as seguintes limitações:
-
Não há suporte para exportar snapshots de instâncias de banco de dados que usam armazenamento magnético.
-
Se um banco de dados, esquema ou tabela tiver caracteres em seu nome diferentes dos a seguir, a exportação parcial não será aceita. No entanto, você pode exportar o snapshot de banco de dados inteiro.
-
Letras latinas (A–Z)
-
Dígitos (0–9)
-
Símbolo do dólar ($)
-
Sublinhado (_)
-
-
Espaços ( ) e alguns caracteres não são compatíveis em nomes de colunas de tabelas de banco de dados. As tabelas com os seguintes caracteres em nomes de colunas são ignoradas durante a exportação:
, ; { } ( ) \n \t = (space)
-
Se os dados contiverem um objeto grande, como um BLOB ou CLOB, com tamanho próximo ou superior a 500 MB, a exportação falhará.
-
Se uma tabela contiver uma linha grande próxima ou maior que 2 GB, a tabela será ignorada durante a exportação.
-
É altamente recomendável que você use um nome exclusivo para cada tarefa de exportação. Se você não usar um nome de tarefa exclusivo, poderá receber a seguinte mensagem de erro:
ExportTaskAlreadyExistsFault: An error occurred (ExportTaskAlreadyExists) when calling the StartExportTask operation: The export task with the ID
[ExportTaskAlreadyExistsFault: ocorreu um erro (ExportTaskAlreadyExists) ao chamar a operação StartExportTask: a tarefa de exportação com o ID xxxxx já existe].xxxxx
already exists
Visão geral da exportação de dados de snapshot
Use o seguinte processo para exportar dados de um snapshot de banco de dados para um bucket do Amazon S3. Para obter mais detalhes, consulte as seções a seguir.
-
Identifique o snapshot a ser exportado.
Use um snapshot existente, manual ou automatizado, ou crie um snapshot manual de uma instância de banco de dados.
-
Configure o acesso ao bucket do Amazon S3.
Um bucket é um contêiner de objetos ou arquivos do Amazon S3. Para fornecer informações para acesso a um bucket, execute as seguintes etapas:
-
Identifique o bucket do S3 para o qual o snapshot deve ser exportado. O bucket do S3 deve estar na mesma região da AWS que o snapshot. Para obter mais informações, consulte Identificar o bucket do Amazon S3 para exportar.
-
Crie uma função do AWS Identity and Access Management (IAM) que conceda à tarefa de exportação de snapshot acesso ao bucket do S3. Para obter mais informações, consulte Fornecer acesso a um bucket do Amazon S3 usando uma função do IAM.
-
-
Crie uma criptografia simétrica do AWS KMS key para a criptografia no lado do servidor. A chave do KMS é usada pela tarefa de exportação de snapshot para configurar a criptografia do lado do servidor do AWS KMS ao gravar dados de exportação no S3. Para obter mais informações, consulte Criptografar recursos do Amazon RDS.
A chave do KMS também é usada para criptografia de disco local em repouso no Amazon EC2. Além disso, se você tiver uma instrução de negação na política de chaves do KMS, certifique-se de excluir explicitamente a entidade principal de serviço da AWS
export.rds.amazonaws.com
.Você pode utilizar uma chave do KMS na sua conta do AWS ou pode utilizar uma chave do KMS entre contas. Para obter mais informações, consulte Uso de um AWS KMS key entre contas para criptografar exportações do Amazon S3.
-
Exporte o snapshot para o Amazon S3 usando o console ou o comando
start-export-task
da CLI. Para obter mais informações, consulte Exportar um snapshot para um bucket do Amazon S3. -
Para acessar os seus dados exportados no bucket do Amazon S3, consulte Como carregar, baixar e gerenciar objetos no Manual do usuário do Amazon Simple Storage Service.
Configurar o acesso a um bucket do Amazon S3
Para exportar dados de snapshot de banco de dados para um arquivo do Amazon S3, primeiro conceda permissão ao snapshot para acessar o bucket do Amazon S3. Crie uma função do IAM para permitir que o serviço Amazon RDS grave no bucket do Amazon S3.
Tópicos
Identificar o bucket do Amazon S3 para exportar
Identifique o bucket do Amazon S3 para o qual exportar o snapshot de banco de dados. Use um bucket do S3 existente ou crie um novo bucket do S3.
O bucket do S3 para o qual exportar deve estar na mesma região da AWS que o snapshot.
Para obter mais informações sobre como trabalhar com buckets do Amazon S3, consulte o seguinte no Manual do usuário do Amazon Simple Storage Service:
Fornecer acesso a um bucket do Amazon S3 usando uma função do IAM
Antes de exportar dados de snapshot de banco de dados para o Amazon S3, forneça permissões de acesso de gravação ao bucket do Amazon S3 às tarefas de exportação.
Para fazer isso, crie uma política do IAM que conceda acesso ao bucket do . Crie uma função do IAM e anexe a política a ela. Posteriormente, você atribui a função do IAM à tarefa de exportação de snapshot.
Se você planeja usar o AWS Management Console para exportar o snapshot, poderá optar por criar a política do IAM e a função automaticamente ao exportar o snapshot. Para obter instruções, consulte Exportar um snapshot para um bucket do Amazon S3.
Como fornecer acesso ao Amazon S3 às tarefas de snapshot de banco de dados
-
Crie uma política do IAM. Essa política fornece as permissões de bucket e objeto que permitem que sua tarefa de exportação de snapshot acesse o Amazon S3.
Inclua na política as seguintes ações necessárias para permitir a transferência de arquivos do Amazon RDS para um bucket do S3:
-
s3:PutObject*
-
s3:GetObject*
-
s3:ListBucket
-
s3:DeleteObject*
-
s3:GetBucketLocation
Inclua na política os recursos a seguir para identificar o bucket do S3 e os objetos no bucket. A lista de recursos a seguir mostra o formato do nome de recurso da Amazon (ARN) para acessar o Amazon S3.
-
arn:aws:s3:::
your-s3-bucket
-
arn:aws:s3:::
your-s3-bucket
/*
Para obter mais informações sobre como criar uma política do IAM para o Amazon RDS, consulte Criar e usar uma política do IAM para acesso do banco de dados do IAM. Consulte também Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Manual do usuário do IAM.
O comando da AWS CLI a seguir cria uma política do IAM denominada
ExportPolicy
com essas opções. Ele concede acesso a um bucket denominadoyour-s3-bucket
.nota Depois de criar a política, anote o ARN da política. O ARN será necessário para uma etapa posterior, quando você anexar a política a uma função do IAM.
aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::
your-s3-bucket
", "arn:aws:s3:::your-s3-bucket
/*" ] } ] }' -
-
Crie uma função do IAM. Faça isso para que o Amazon RDS possa assumir essa função do IAM em seu nome para acessar os buckets do Amazon S3. Para obter mais informações, consulte Criar uma função para delegar permissões a um usuário do IAM no Guia do usuário do IAM.
O exemplo a seguir mostra como usar o comando da AWS CLI para criar uma função chamada
rds-s3-export-role
.aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
-
Anexe a política do IAM que você criou à função do IAM que você criou.
O seguinte comando da AWS CLI anexa a política criada anteriormente à função chamada
rds-s3-export-role
. Substitua
pelo ARN da política que você anotou em uma etapa anterior.your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role
Utilizar um bucket do Amazon S3 entre contas
É possível utilizar buckets do Amazon S3 entre contas da AWS. Para utilizar um bucket entre contas, adicione uma política de bucket para permitir o acesso à função do IAM que você está utilizando para as exportações do S3. Para obter mais informações, consulte Exemplo 2: proprietário do bucket concedendo permissões para o bucket entre contas.
-
Vincule uma política de bucket ao bucket, como mostra o exemplo a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::mycrossaccountbucket
", "arn:aws:s3:::mycrossaccountbucket
/*" ] } ] }
Uso de um AWS KMS key entre contas para criptografar exportações do Amazon S3
Você pode utilizar um AWS KMS key entre contas para criptografar exportações do Amazon S3. Primeiro, você adiciona uma política de chaves à conta local e depois adiciona políticas do IAM na conta externa. Para obter mais informações, consulte o tópico sobre como Permitir que usuários de outras contas utilizem uma chave do KMS.
Para utilizar uma chave do KMS entre contas
-
Adicione uma política de chaves à conta local.
O exemplo a seguir concede a
ExampleRole
eExampleUser
na conta externa 444455556666 permissões na conta local 123456789012.{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
-
Adicione políticas do IAM à conta externa.
O seguinte exemplo de política do IAM permite que a entidade principal use a chave do KMS na conta 123456789012 para operações criptográficas. Para conceder essa permissão a
ExampleRole
eExampleUser
na conta 444455556666, vincule a política a eles nessa conta.{ "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
Exportar um snapshot para um bucket do Amazon S3
Você pode ter até cinco tarefas de exportação de snapshot de banco de dados simultâneas em andamento por conta.
A exportação de snapshots do RDS pode levar um tempo, dependendo do tipo e do tamanho do banco de dados. A tarefa de exportação primeiro restaura e escala todo o banco de dados antes de extrair os dados para o Amazon S3. O andamento da tarefa durante essa fase é exibido como Starting (Iniciando). Quando a tarefa muda para a exportação de dados para o S3, o andamento é exibido como In progress (Em andamento).
O tempo necessário para que a exportação seja concluída depende dos dados armazenados no banco de dados. Por exemplo, tabelas com chaves primárias numéricas bem distribuída ou colunas de índice serão exportadas de maneira mais rápida. Tabelas sem uma coluna adequada para particionamento e tabelas com somente um índice em uma coluna baseada em string demorarão mais. Esse tempo de exportação mais demorado ocorre porque a exportação utiliza um processo de thread único mais lento.
Você pode exportar um snapshot de banco de dados para o Amazon S3 usando o AWS Management Console, a AWS CLI ou a API do RDS.
Se você usar uma função do Lambda para exportar um snapshot, adicione a ação kms:DescribeKey
à política da função do Lambda. Para obter mais informações, consulte Permissões doAWS Lambda.
A opção de console Export to Amazon S3 (Exportar para o Amazon S3) é exibido somente para snapshots que podem ser exportados para o Amazon S3. Um snapshot pode não estar disponível para exportação devido aos seguintes motivos:
-
O mecanismo de banco de dados não tem suporte para exportação do S3.
-
A versão da instância de banco de dados não tem suporte para exportação do S3.
-
A exportação do S3 não é aceita na região da AWS onde o snapshot foi criado.
Para exportar um snapshot de banco de dados
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Snapshots.
-
Nas guias, escolha o tipo de snapshot que deseja exportar.
-
Na lista de snapshots, escolha o snapshot que deseja exportar.
-
Em Actions (Ações), escolha Export to Amazon S3 (Exportar para o Amazon S3).
A janela Export to Amazon S3 (Exportar para o Amazon S3) é exibida.
-
Em Export identifier (Identificador de exportação), insira um nome para identificar a tarefa de exportação. Esse valor também é usado para o nome do arquivo criado no bucket do S3.
-
Escolha os dados a serem exportados:
-
Escolha All (Tudo) para exportar todos os dados do snapshot.
-
Escolha Partial (Parcial) para exportar partes específicas do snapshot. Para identificar quais partes do snapshot exportar, insira um ou mais bancos de dados, esquemas ou tabelas para Identifiers (Identificadores), separados por espaços.
Use o formato a seguir:
database
[.schema
][.table
]database2
[.schema2
][.table2
] ...database
n[.schema
n][.table
n]Por exemplo:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
Em S3 bucket (Bucket do S3), escolha o bucket para o qual exportar.
Para atribuir os dados exportados a um caminho de pasta no bucket do S3, insira o caminho opcional para o S3 prefix (Prefixo do S3).
-
Em Função do IAM, escolha uma função que conceda a você acesso de gravação ao bucket do S3 escolhido ou crie uma nova função.
-
Se você criou uma função seguindo as etapas em Fornecer acesso a um bucket do Amazon S3 usando uma função do IAM, escolha essa função.
-
Se você não criou uma função que concede acesso de gravação ao bucket do S3 escolhido, escolha Criar uma nova função para criar a função automaticamente. Depois, insira um nome para a função em Nome da função do IAM.
-
-
Em AWS KMS key, insira o ARN da chave a ser usada para criptografar os dados exportados.
-
Escolha Export to Amazon S3 (Exportar para o Amazon S3).
Para exportar um snapshot de banco de dados para o Amazon S3 usando a AWS CLI, use o comando start-export-task com as seguintes opções necessárias:
-
--export-task-identifier
-
--source-arn
-
--s3-bucket-name
-
--iam-role-arn
-
--kms-key-id
Nos exemplos a seguir, a tarefa de exportação de snapshot se chama my_snapshot_export
, que exporta um snapshot para um bucket do S3 chamado my_export_bucket
.
Para Linux, macOS ou Unix:
aws rds start-export-task \ --export-task-identifier
my-snapshot-export
\ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
\ --s3-bucket-namemy-export-bucket
\ --iam-role-arniam-role
\ --kms-key-idmy-key
Para Windows:
aws rds start-export-task ^ --export-task-identifier
my-snapshot-export
^ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
^ --s3-bucket-namemy-export-bucket
^ --iam-role-arniam-role
^ --kms-key-idmy-key
Segue um exemplo de saída.
{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-bucket", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }
Para fornecer um caminho de pasta no bucket do S3 para a exportação do snapshot, inclua a opção --s3-prefix
no comando start-export-task.
Para exportar um snapshot de banco de dados para o Amazon S3, usando a API do Amazon RDS, use a operação StartExportTask com os seguintes parâmetros necessários:
-
ExportTaskIdentifier
-
SourceArn
-
S3BucketName
-
IamRoleArn
-
KmsKeyId
Monitorar exportações de snapshots
Você pode monitorar as exportações de snapshots de banco de dados usando o AWS Management Console, a AWS CLI e a API do RDS.
Como monitorar exportações de snapshots de banco de dados
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Snapshots.
-
Para visualizar a lista de exportações de snapshots, selecione a guia Exportações no Amazon S3.
-
Para visualizar informações sobre uma exportação de snapshot específica, escolha a tarefa de exportação.
Para monitorar exportações de snapshots de banco de dados usando o AWS CLI, use o comando describe-export-tasks.
O exemplo a seguir mostra como exibir informações atuais sobre todas as exportações de snapshots.
aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:
AWS_Region
:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "examplebucket1", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "examplebucket2", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region
:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }
Para exibir informações sobre uma exportação de snapshot específica, inclua a opção --export-task-identifier
com o comando describe-export-tasks
. Para filtrar a saída, inclua a opção --Filters
. Para obter mais opções, consulte o comando describe-export-tasks.
Para exibir informações sobre exportações de snapshots de banco de dados usando a API do Amazon RDS, use a operação DescribeExportTasks .
Para rastrear a conclusão do fluxo de trabalho de exportação ou para acionar outro fluxo de trabalho, você pode assinar tópicos do Amazon Simple Notification Service. Para obter mais informações sobre Amazon SNS, consulte Trabalhar com a notificação de eventos do Amazon RDS.
Cancelar uma tarefa de exportação de snapshot
Você pode cancelar uma tarefa de exportação de snapshot de banco de dados usando o AWS Management Console, a AWS CLI ou a API do RDS.
O cancelamento de uma tarefa de exportação de snapshot não remove os dados que foram exportados para o Amazon S3. Para obter informações sobre como excluir os dados usando o console, consulte Como excluir objetos de um bucket do S3? Para excluir os dados usando a CLI, use o comando delete-object.
Como cancelar uma tarefa de exportação de snapshot
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Snapshots.
-
Escolha a guia Exports in Amazon S3 (Exportações no Amazon S3).
-
Escolha a tarefa de exportação do snapshot que você deseja cancelar.
-
Escolha Cancelar.
-
Escolha Cancel export task (Cancelar tarefa de exportação) na página de confirmação.
Para cancelar uma tarefa de exportação de snapshot usando a AWS CLI, use o comando cancel-export-task. O comando requer a opção --export-task-identifier
.
aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:
AWS_Region
:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region
:123456789012:snapshot:export-example-1" }
Para cancelar uma tarefa de exportação de snapshot usando a API do Amazon RDS, use a operação CancelExportTask com o parâmetro ExportTaskIdentifier
.
Mensagens de falha de tarefas de exportação do Amazon S3
A tabela a seguir descreve as mensagens que são retornadas quando ocorrem falhas nas tarefas de exportação do Amazon S3.
Mensagem de falha | Descrição |
---|---|
Ocorreu um erro interno desconhecido. |
O processamento da falha devido a um erro, uma exceção ou uma falha desconhecida. |
Ocorreu um erro interno desconhecido ao gravar os metadados da tarefa de exportação no bucket do S3 [nome do bucket]. |
O processamento da falha devido a um erro, uma exceção ou uma falha desconhecida. |
A exportação do RDS falhou ao gravar os metadados da tarefa de exportação porque ela não pode assumir a função do IAM [ARN da função]. |
A tarefa de exportação assume sua função do IAM para validar se pode gravar metadados no seu bucket do S3. Se a tarefa não puder assumir sua função do IAM, ela falhará. |
A exportação do RDS falhou ao gravar os metadados da tarefa de exportação no bucket do S3 [nome do bucket] utilizando a função do IAM [ARN da função] com a chave do KMS [ID da chave]. Código de erro: [código de erro] |
Uma ou mais permissões estão ausentes e, portanto, a tarefa de exportação não consegue acessar o bucket do S3. Essa mensagem de falha é gerada quando você recebe um dos seguintes:
Isso significa que há configurações mal definidas entre a função do IAM, o bucket do S3 ou a chave do KMS. |
A função do IAM [ARN da função] não está autorizada a chamar [ação do S3] no bucket do S3 [nome do bucket]. Revise suas permissões e tente novamente a exportação. |
A política do IAM está incorretamente configurada. A permissão para a ação específica do S3 no bucket do S3 está ausente. Isso resulta em uma falha na tarefa de exportação. |
A verificação da chave do KMS falhou. Verifique as credenciais na sua chave do KMS e tente novamente. |
A verificação de credenciais da chave KMS do falhou. |
Falha na verificação de credenciais do S3. Verifique as permissões no bucket do S3 e a política do IAM. |
A verificação de credenciais do S3 falhou. |
O bucket do S3 [nome do bucket] não é válido. Ele não está localizado na região da AWS atual ou não existe. Reveja o nome do bucket do S3 e tente exportar novamente. |
O bucket do S3 não é válido. |
O bucket do S3 [nome do bucket] não está localizado na região da AWS atual. Reveja o nome do bucket do S3 e tente exportar novamente. |
O bucket da S3 está na região da AWS incorreta. |
Solucionar problemas de erros de permissões do PostgreSQL
Ao exportar bancos de dados PostgreSQL para o Amazon S3, é possível ver um erro PERMISSIONS_DO_NOT_EXIST
informando que determinadas tabelas foram ignoradas. Isso geralmente é causado pelo superusuário, especificado ao criar a instância de banco de dados, sem permissões para acessar essas tabelas.
Para corrigir esse erro, execute o seguinte comando:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA
schema_name
TOsuperuser_name
Para obter mais informações sobre privilégios de superusuário, consulte Privilégios da conta de usuário mestre.
Convenção de nomenclatura de arquivos
Os dados exportados para tabelas específicas são armazenados no formato
, onde o prefixo base é o seguinte:base_prefix
/files
export_identifier
/database_name
/schema_name
.table_name
/
Por exemplo:
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
Existem duas convenções de nomenclatura para arquivos. A convenção atual é:
partition_index
/part-00000-random_uuid
.format-based_extension
Por exemplo:
1/part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet 2/part-00000-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet 3/part-00000-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
A convenção mais antiga é a seguinte:
part-
partition_index
-random_uuid
.format-based_extension
Por exemplo:
part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
A convenção de nomenclatura de arquivos está sujeita a alterações. Portanto, ao ler as tabelas de destino, recomendamos que você leia tudo dentro do prefixo base para a tabela.
Conversão de dados ao exportar para um bucket do Amazon S3
Quando você exporta um snapshot de banco de dados para um bucket do Amazon S3, o Amazon RDS converte os dados para o formato Parquet e exporta e armazena os dados nesse formato. Para obter mais informações sobre o Parquet, consulte o site Apache Parquet
O Parquet armazena todos os dados como um dos seguintes tipos primitivos:
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ARRAY – uma matriz de bytes de comprimento variável, também conhecida como binário
-
FIXED_LEN_BYTE_ARRAY – uma matriz de bytes de comprimento fixo usada quando os valores têm um tamanho constante
Os tipos de dados Parquet são poucos para reduzir a complexidade de leitura e gravação do formato. O Parquet fornece tipos lógicos para estender os tipos primitivos. Um tipo lógico é implementado como uma anotação com os dados em um campo de metadados LogicalType
. A anotação de tipo lógico explica como interpretar o tipo primitivo.
Quando o tipo lógico STRING
anota um tipo BYTE_ARRAY
, ele indica que a matriz de bytes deve ser interpretada como uma string de caracteres codificada em UTF-8. Depois que uma tarefa de exportação é concluída, o Amazon RDS notifica você se tiver ocorrido uma conversão de string. Os dados subjacentes exportados são sempre os mesmos que os dados da origem. No entanto, devido à diferença de codificação em UTF-8, alguns caracteres podem aparecer diferentes da fonte quando lidos em ferramentas como a Athena.
Para obter mais informações, consulte Definições de tipos lógicos do Parquet
Tópicos
Mapeamento de tipos de dados MySQL e MariaDB para o Parquet
A tabela a seguir mostra o mapeamento dos tipos de dados MySQL e MariaDB para tipos de dados Parquet quando os dados são convertidos e exportados para o Amazon S3.
Tipo de dados de origem | Tipo primitivo do Parquet | Anotação de tipo lógico | Notas de conversão |
---|---|---|---|
Tipos de dados numéricos | |||
BIGINT | INT64 | ||
BIGINT UNSIGNED | FIXED_LEN_BYTE_ARRAY(9) | DECIMAL(20,0) | O Parquet é compatível apenas com tipos assinados, portanto, o mapeamento requer um byte adicional (8 mais 1) para armazenar o tipo BIGINT_UNSIGNED. |
BIT | BYTE_ARRAY | ||
DECIMAL | INT32 | DECIMAL (p,s) | Se o valor de origem for menor que 231, ele será armazenado como INT32. |
INT64 | DECIMAL (p,s) | Se o valor de origem for 231 ou maior, mas inferior a 263, ele será armazenado como INT64. | |
FIXED_LEN_BYTE_ARRAY(N) | DECIMAL (p,s) | Se o valor de origem for 263 ou superior, ele será armazenado como FIXED_LEN_BYTE_ARRAY(N). | |
BYTE_ARRAY | STRING | O Parquet não é compatível com precisão decimal maior que 38. O valor decimal é convertido em uma string em um tipo BYTE_ARRAY e codificado como UTF8. | |
DOUBLE | DOUBLE | ||
FLOAT | DOUBLE | ||
INT | INT32 | ||
INT UNSIGNED | INT64 | ||
MEDIUMINT | INT32 | ||
MEDIUMINT UNSIGNED | INT64 | ||
NUMERIC | INT32 | DECIMAL (p,s) |
Se o valor de origem for menor que 231, ele será armazenado como INT32. |
INT64 | DECIMAL (p,s) | Se o valor de origem for 231 ou maior, mas inferior a 263, ele será armazenado como INT64. | |
FIXED_LEN_ARRAY(N) | DECIMAL (p,s) | Se o valor de origem for 263 ou superior, ele será armazenado como FIXED_LEN_BYTE_ARRAY(N). | |
BYTE_ARRAY | STRING | O Parquet não é compatível com precisão numérica maior que 38. Esse valor numérico é convertido em uma string em um tipo BYTE_ARRAY e codificado como UTF8. | |
SMALLINT | INT32 | ||
SMALLINT UNSIGNED | INT32 | ||
TINYINT | INT32 | ||
TINYINT UNSIGNED | INT32 | ||
Tipos de dados de string | |||
BINARY | BYTE_ARRAY | ||
BLOB | BYTE_ARRAY | ||
CHAR | BYTE_ARRAY | ||
ENUM | BYTE_ARRAY | STRING | |
LINESTRING | BYTE_ARRAY | ||
LONGBLOB | BYTE_ARRAY | ||
LONGTEXT | BYTE_ARRAY | STRING | |
MEDIUMBLOB | BYTE_ARRAY | ||
MEDIUMTEXT | BYTE_ARRAY | STRING | |
MULTILINESTRING | BYTE_ARRAY | ||
SET | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
TINYBLOB | BYTE_ARRAY | ||
TINYTEXT | BYTE_ARRAY | STRING | |
VARBINARY | BYTE_ARRAY | ||
VARCHAR | BYTE_ARRAY | STRING | |
Tipos de dados de data e hora | |||
DATE | BYTE_ARRAY | STRING | Uma data é convertida em uma string em um tipo BYTE_ARRAY e codificada como UTF8. |
DATETIME | INT64 | TIMESTAMP_MICROS | |
TIME | BYTE_ARRAY | STRING | Um tipo TIME é convertido em uma string em um BYTE_ARRAY e codificado como UTF8. |
TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
YEAR | INT32 | ||
Tipos de dados geométricos | |||
GEOMETRY | BYTE_ARRAY | ||
GEOMETRYCOLLECTION | BYTE_ARRAY | ||
MULTIPOINT | BYTE_ARRAY | ||
MULTIPOLYGON | BYTE_ARRAY | ||
POINT | BYTE_ARRAY | ||
POLYGON | BYTE_ARRAY | ||
Tipo de dados do JSON | |||
JSON | BYTE_ARRAY | STRING |
Mapeamento de tipo de dados PostgreSQL para Parquet
A tabela a seguir mostra o mapeamento de tipos de dados PostgreSQL para tipos de dados Parquet quando os dados são convertidos e exportados para o Amazon S3.
Tipo de dados do PostgreSQL | Tipo primitivo do Parquet | Anotação de tipo lógico | Notas de mapeamento |
---|---|---|---|
Tipos de dados numéricos | |||
BIGINT | INT64 | ||
BIGSERIAL | INT64 | ||
DECIMAL | BYTE_ARRAY | STRING | Um tipo DECIMAL é convertido em uma string em um tipo BYTE_ARRAY e codificado como UTF8. Essa conversão é para evitar complicações devido à precisão dos dados e valores de dados que não são um número (NaN). |
DOUBLE PRECISION | DOUBLE | ||
INTEGER | INT32 | ||
MONEY | BYTE_ARRAY | STRING | |
REAL | FLOAT | ||
SERIAL | INT32 | ||
SMALLINT | INT32 | INT_16 | |
SMALLSERIAL | INT32 | INT_16 | |
String e tipos de dados relacionados | |||
ARRAY | BYTE_ARRAY | STRING |
Uma matriz é convertida em uma string e codificada como BINARY (UTF8). Essa conversão é para evitar complicações devido à precisão dos dados, os valores dos dados que não são um número (NaN) e os valores de dados de tempo. |
BIT | BYTE_ARRAY | STRING | |
BIT VARYING | BYTE_ARRAY | STRING | |
BYTEA | BINARY | ||
CHAR | BYTE_ARRAY | STRING | |
CHAR(N) | BYTE_ARRAY | STRING | |
ENUM | BYTE_ARRAY | STRING | |
NAME | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
TEXT SEARCH | BYTE_ARRAY | STRING | |
VARCHAR(N) | BYTE_ARRAY | STRING | |
XML | BYTE_ARRAY | STRING | |
Tipos de dados de data e hora | |||
DATE | BYTE_ARRAY | STRING | |
INTERVAL | BYTE_ARRAY | STRING | |
TIME | BYTE_ARRAY | STRING | |
TIME WITH TIME ZONE | BYTE_ARRAY | STRING | |
TIMESTAMP | BYTE_ARRAY | STRING | |
TIMESTAMP WITH TIME ZONE | BYTE_ARRAY | STRING | |
Tipos de dados geométricos | |||
BOX | BYTE_ARRAY | STRING | |
CIRCLE | BYTE_ARRAY | STRING | |
LINE | BYTE_ARRAY | STRING | |
LINESEGMENT | BYTE_ARRAY | STRING | |
PATH | BYTE_ARRAY | STRING | |
POINT | BYTE_ARRAY | STRING | |
POLYGON | BYTE_ARRAY | STRING | |
Tipos de dados JSON | |||
JSON | BYTE_ARRAY | STRING | |
JSONB | BYTE_ARRAY | STRING | |
Outros tipos de dados | |||
BOOLEAN | BOOLEAN | ||
CIDR | BYTE_ARRAY | STRING | Tipo de dados de rede |
COMPOSITE | BYTE_ARRAY | STRING | |
DOMAIN | BYTE_ARRAY | STRING | |
INET | BYTE_ARRAY | STRING | Tipo de dados de rede |
MACADDR | BYTE_ARRAY | STRING | |
OBJECT IDENTIFIER | N/D | ||
PG_LSN | BYTE_ARRAY | STRING | |
RANGE | BYTE_ARRAY | STRING | |
UUID | BYTE_ARRAY | STRING |