Utilizar um banco de dados Amazon Redshift como destino do AWS Database Migration Service - AWS Database Migration Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Utilizar um banco de dados Amazon Redshift como destino do AWS Database Migration Service

Você pode migrar dados para bancos de dados do Amazon Redshift usando o. AWS Database Migration Service O Amazon Redshift é um serviço de data warehouse totalmente gerenciado e em escala de petabytes na Nuvem . Com um banco de dados Amazon Redshift como destino, é possível migrar dados de todos os outros bancos de dados de origem compatíveis.

Você pode usar o Amazon Redshift Serverless como destino para. AWS DMS Para obter mais informações, consulte Usando AWS DMS com o Amazon Redshift Serverless como destino a seguir.

O cluster do Amazon Redshift deve estar na mesma AWS conta e na mesma AWS região da instância de replicação.

Durante uma migração de banco de dados para o Amazon Redshift, AWS DMS primeiro move os dados para um bucket do Amazon S3. Quando os arquivos residem em um bucket do Amazon S3, eles são AWS DMS transferidos para as tabelas adequadas no armazém de dados do Amazon Redshift. AWS DMS cria o bucket do S3 na mesma AWS região do banco de dados do Amazon Redshift. A instância AWS DMS de replicação deve estar localizada na mesma AWS região.

Se você usa a API AWS CLI ou DMS para migrar dados para o Amazon Redshift, configure AWS Identity and Access Management uma função (IAM) para permitir o acesso ao S3. Para obter mais informações sobre a criação do perfil do IAM, consulte Criando as IAM funções a serem usadas com AWS DMS.

O endpoint do Amazon Redshift fornece automação completa para:

  • Geração de schema e mapeamento de tipo de dados

  • Carregamento completo de tabelas de banco de dados de origem

  • Carregamento incremental de alterações feitas a tabelas de origem

  • Aplicação de alterações de schema em Data Definition Language (DDL - Linguagem de definição de dados) feitas a tabelas de origem

  • Sincronização entre processos de carregamento completo e de captura de dados de alteração (CDC).

AWS Database Migration Service suporta operações de carga total e processamento de alterações. AWS DMS lê os dados do banco de dados de origem e cria uma série de arquivos de valores separados por vírgula (.csv). Para operações de carga total, AWS DMS cria arquivos para cada tabela. AWS DMS em seguida, copia os arquivos de tabela de cada tabela em uma pasta separada no Amazon S3. Quando os arquivos são carregados para o Amazon S3, AWS DMS envia um comando de cópia e os dados nos arquivos são copiados para o Amazon Redshift. Para operações de processamento de alterações, AWS DMS copia as alterações líquidas nos arquivos.csv. AWS DMS em seguida, carrega os arquivos de alteração líquida para o Amazon S3 e copia os dados para o Amazon Redshift.

Para obter detalhes adicionais sobre como trabalhar com o Amazon Redshift como alvo AWS DMS, consulte as seguintes seções:

Pré-requisitos para usar um banco de dados do Amazon Redshift como destino para AWS Database Migration Service

A lista a seguir descreve os pré-requisitos necessários para trabalhar com o Amazon Redshift como destino para a migração de dados:

  • Use o AWS Management Console para iniciar um cluster do Amazon Redshift. Observe as informações básicas sobre sua AWS conta e seu cluster do Amazon Redshift, como sua senha, nome de usuário e nome do banco de dados. Esses valores são necessários para criar o endpoint de destino do Amazon Redshift.

  • O cluster do Amazon Redshift deve estar na mesma AWS conta e na mesma AWS região da instância de replicação.

  • A instância AWS DMS de replicação precisa de conectividade de rede com o endpoint do Amazon Redshift (nome do host e porta) que seu cluster usa.

  • AWS DMS usa um bucket do Amazon S3 para transferir dados para o banco de dados do Amazon Redshift. Para o AWS DMS criar um bucket, o console usa um perfil do IAM, dms-access-for-endpoint. Se você usa a API AWS CLI ou DMS para criar uma migração de banco de dados com o Amazon Redshift como banco de dados de destino, você deve criar essa função do IAM. Para obter mais informações sobre a criação do perfil, consulte Criando as IAM funções a serem usadas com AWS DMS.

  • AWS DMS converte BLOBs, CLOBs, e NCLOBs em um VARCHAR na instância de destino do Amazon Redshift. O Amazon Redshift não oferece suporte a tipos de dados VARCHAR maiores que 64 KB, então você não pode armazenar dados tradicionais no Amazon LOBs Redshift.

  • Defina a configuração da tarefa de metadados de destino como true for BatchApplyEnabled AWS DMS para lidar com alterações nas tabelas de destino do Amazon Redshift durante o CDC. É necessária uma chave primária na tabela de origem e de destino. Sem uma chave primária, as alterações são aplicadas instrução por instrução. E isso pode afetar negativamente o desempenho da tarefa durante a CDC, casando latência de destino e afetando a fila de confirmação do cluster.

Privilégios necessários para utilizar o Redshift como destino

Utilize o comando GRANT para definir os privilégios de acesso do usuário ou do grupo de usuários. Os privilégios incluem opções de acesso como leitura de dados em tabelas e exibições, gravação de dados e criação de tabelas. Para obter mais informações sobre como utilizar GRANT com o Amazon Redshift, consulte GRANT no Guia do desenvolvedor de banco de dados do Amazon Redshift.

Veja a seguir a sintaxe para fornecer privilégios específicos para uma tabela, banco de dados, esquema, perfil, procedimento ou privilégios em nível de linguagem em tabelas e visualizações do Amazon Redshift.

GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para privilégios de nível de coluna em tabelas e visualizações do Amazon Redshift.

GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | GROUP group_name | PUBLIC } [, ...]

A seguir está a sintaxe para o privilégio ASSUMEROLE concedido a usuários e grupos com um perfil especificado.

GRANT ASSUMEROLE ON { 'iam_role' [, ...] | ALL } TO { username | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD } [, ...]

Limitações no uso do Amazon Redshift como alvo para AWS Database Migration Service

As seguintes limitações se aplicam ao utilizar um banco de dados Amazon Redshift como destino:

  • Não ative o versionamento para o bucket do S3 utilizado como armazenamento intermediário para o destino do Amazon Redshift. Se o versionamento do S3 for necessário, utilize políticas de ciclo de vida para excluir ativamente as versões antigas. Caso contrário, é possível encontrar falhas na conexão de teste de endpoint devido ao tempo limite de uma chamada list-object do S3. Para criar uma política de ciclo de vida para um bucket do S3, consulte Gerenciar o ciclo de vida do armazenamento. Para excluir a versão de um objeto do S3, consulte Excluir versões de objetos de um bucket com versionamento ativado.

  • O DDL a seguir não tem suporte:

    ALTER TABLE table name MODIFY COLUMN column name data type;
  • AWS DMS não é possível migrar ou replicar alterações em um esquema com um nome que comece com sublinhado (_). Se você tiver esquemas com um nome que começa com um sublinhado, utilize transformações de mapeamento para renomear o esquema no destino.

  • O Amazon Redshift não oferece suporte a VARCHARs mais de 64 KB. LOBs dos bancos de dados tradicionais não podem ser armazenados no Amazon Redshift.

  • A aplicação de uma instrução DELETE a uma tabela com uma chave primária de várias colunas não tem suporte quando qualquer um dos nomes de coluna da chave primária usa uma palavra reservada. Acesse aqui para ver uma lista de palavras reservadas do Amazon Redshift.

  • Poderá haver problemas de desempenho se o sistema de origem executar operações UPDATE na chave primária de uma tabela de origem. Esses problemas de desempenho ocorrem ao aplicar alterações no destino. Isso ocorre porque as operações UPDATE (e DELETE) dependem do valor da chave primária para identificar a linha de destino. Se você atualizar a chave primária de uma tabela de origem, o log de tarefas conterá mensagens, como as seguintes:

    Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  • O DMS não é compatível com nomes DNS personalizados ao configurar um endpoint para um cluster do Redshift, e você precisa utilizar o nome DNS fornecido pela Amazon. Como o cluster do Amazon Redshift deve estar na mesma conta e região da AWS da instância de replicação, a validação falhará se você utilizar um endpoint de DNS personalizado.

  • O Amazon Redshift tem um tempo limite padrão de sessão ociosa de 4 horas. Quando não há nenhuma atividade na tarefa de replicação do DMS, o Redshift desconecta a sessão após 4 horas. Os erros podem resultar da incapacidade do DMS de se conectar e da possível necessidade de reinicialização. Como solução alternativa, defina um limite de SESSION TIMEOUT maior que 4 horas para o usuário de replicação do DMS. Ou consulte a descrição de ALTER USER no Guia do desenvolvedor do banco de dados Amazon Redshift.

  • Quando AWS DMS replica os dados da tabela de origem sem uma chave primária ou exclusiva, a latência do CDC pode ser alta, resultando em um nível de desempenho inaceitável.

Configurando um banco de dados do Amazon Redshift como destino para AWS Database Migration Service

AWS Database Migration Service deve ser configurado para funcionar com a instância do Amazon Redshift. A tabela a seguir descreve as propriedades de configuração disponíveis para o endpoint do Amazon Redshift.

Propriedade

Descrição

servidor

O nome do cluster do Amazon Redshift que você está utilizando.

porta

O número da porta do Amazon Redshift. O valor padrão é 5439.

username

Um nome de usuário do Amazon Redshift de um usuário registrado.

password

A senha do usuário nomeado na propriedade username.

banco de dados

O nome do data warehouse (serviço) do Amazon Redshift com o qual você está trabalhando.

Se quiser adicionar atributos de string de conexão adicional ao endpoint do Amazon Redshift, especifique os atributos maxFileSize e fileTransferUploadStreams. Para obter mais informações sobre esses atributos, consulte Configurações de endpoint ao usar o Amazon Redshift como destino para AWS DMS.

Usando o roteamento de VPC aprimorado com o Amazon Redshift como destino para AWS Database Migration Service

Se você utilizar o roteamento aprimorado da VPC com o destino do Amazon Redshift, todo o tráfego de COPY entre o cluster do Amazon Redshift e os repositórios de dados trafegarão pela VPC. Como o roteamento aprimorado da VPC afeta a maneira como o Amazon Redshift acessa outros recursos, os comandos COPY poderão falhar se você não configurar a VPC corretamente.

AWS DMS pode ser afetado por esse comportamento porque ele usa o comando COPY para mover dados no S3 para um cluster do Amazon Redshift.

A seguir estão as etapas AWS DMS necessárias para carregar dados em um destino do Amazon Redshift:

  1. AWS DMS copia dados da origem para arquivos.csv no servidor de replicação.

  2. AWS DMS usa o AWS SDK para copiar os arquivos.csv em um bucket do S3 na sua conta.

  3. AWS DMS em seguida, usa o comando COPY no Amazon Redshift para copiar dados dos arquivos.csv no S3 para uma tabela apropriada no Amazon Redshift.

Se o Enhanced VPC Routing não estiver habilitado, o Amazon Redshift roteará o tráfego pela Internet, incluindo o tráfego para outros serviços dentro da rede. AWS Se o recurso não estiver habilitado, não será necessário configurar o caminho de rede. Se o recurso estiver habilitado, você deverá criar especificamente um caminho de rede entre o cluster do VPC e os recursos de dados. Para obter mais informações sobre a configuração necessária, consulte Roteamento aprimorado da VPC na documentação do Amazon Redshift.

Criação e uso de AWS KMS chaves para criptografar dados de destino do Amazon Redshift

É possível criptografar os dados de destino enviados ao Amazon S3 antes que sejam copiados no Amazon Redshift. Para fazer isso, você pode criar e usar AWS KMS chaves personalizadas. É possível utilizar a chave criada para criptografar os dados de destino utilizando um dos seguintes mecanismos ao criar o endpoint de destino do Amazon Redshift:

Para criptografar dados de destino do Amazon Redshift usando uma chave KMS, você precisa de AWS Identity and Access Management uma função (IAM) que tenha permissões para acessar os dados do Amazon Redshift. Esse perfil do IAM é acessado em uma política (uma política de chaves) anexada à chave de criptografia criada. É possível fazer isso no console do IAM criando o seguinte:

  • Uma função do IAM com uma política AWS gerenciada.

  • A chave do KMS com uma política de chaves que faz referência a esse perfil.

Os procedimentos a seguir descrevem como fazer isso.

Para criar uma função do IAM com a política AWS gerenciada necessária
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, selecione Perfis. A página Roles (Funções) é aberta.

  3. Selecione Criar perfil. A página Create role (Criar função) é aberta.

  4. Com o Serviço da AWS escolhido como uma entidade confiável, escolha DMS como o serviço que utilizará esse perfil.

  5. Escolha Próximo: Permissões. A página Attach permissions policies (Anexar políticas de permissões) é exibida.

  6. Encontre e selecione a política AmazonDMSRedshiftS3Role.

  7. Escolha Próximo: tags. A página Adicionar tags é exibida. Aqui, você pode adicionar todas as tags desejadas.

  8. Escolha Next: Review (Próximo: revisar) e reveja os resultados.

  9. Se as configurações forem o que você precisa, insira um nome para o perfil (por exemplo, DMS-Redshift-endpoint-access-role), e qualquer descrição adicional e escolha Criar função. A página Roles (Funções) é aberta com uma mensagem indicando que o perfil foi criado.

Agora, você criou o perfil para acessar os recursos do Amazon Redshift para criptografia com um nome especificado, por exemplo DMS-Redshift-endpoint-access-role.

Para criar uma chave de AWS KMS criptografia com uma política de chaves que faça referência à sua função do IAM
nota

Para obter mais informações sobre como AWS DMS funciona com chaves de AWS KMS criptografia, consulteConfigurando uma chave de criptografia e especificando permissões AWS KMS.

  1. Faça login no console AWS Management Console e abra o AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms.

  2. Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.

  3. No painel de navegação, escolha Chaves gerenciadas pelo cliente.

  4. Escolha Criar chave. A página Configure key (Configurar chave) é aberta.

  5. Para Key type (Tipo de chave), escolha Symmetric (Simétrica).

    nota

    Ao criar essa chave, você só pode criar uma chave simétrica, porque todos os AWS serviços, como o Amazon Redshift, funcionam somente com chaves de criptografia simétricas.

  6. Escolha Opções avançadas. Para Key material origin (Origem do material da chave), certifique-se de que o KMS está escolhido e escolha Next (Próximo). A página Add labels (Adicionar rótulos) é aberta.

  7. Em Create alias and description (Criar alias e descrição), insira um alias para a chave (por exemplo, DMS-Redshift-endpoint-encryption-key) e qualquer descrição adicional.

  8. Em Tags, adicione todas as tags desejadas para ajudar a identificar a chave e controlar seu uso e escolha Next (Próximo). A página Define key administrative permissions (Definir permissões administrativas de chaves) é aberta mostrando uma lista de usuários e funções que podem ser escolhidos.

  9. Adicione os usuários e as funções desejados para gerenciar a chave. Certifique-se de que esses usuários e funções tenham as permissões necessárias para gerenciar a chave.

  10. Em Key deletion (Exclusão de chaves), escolha se os administradores de chaves podem excluir a chave e escolha Next (Próximo). A página Define key usage permissions (Definir permissões de uso de chaves) é aberta mostrando uma lista adicional de usuários e funções que podem ser escolhidos.

  11. Para Esta conta, escolha os usuários disponíveis que deseja que executem operações criptográficas em destinos do Amazon Redshift. Escolha também o perfil criado anteriormente em Perfis para ativar o acesso à criptografia dos objetos de destino do Amazon Redshift, por exemplo, DMS-Redshift-endpoint-access-role).

  12. Se você quiser adicionar outras contas não listadas para ter esse mesmo acesso, em Outras AWS contas, escolha Adicionar outra AWS conta e escolha Avançar. A página Review and edit key policy (Rever e editar política de chave) é aberta mostrando o JSON da política de chave que você pode revisar e editar digitando no JSON existente. Aqui, a política de chave que faz referência à função e aos usuários é mostrada (por exemplo, Admin e User1) que você escolheu na etapa anterior. Você também pode ver as diferentes ações de chaves permitidas para as várias entidades principais (usuários e perfis), conforme mostrado no exemplo a seguir.

    { "Id": "key-consolepolicy-3", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root" ] }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/Admin" ] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role", "arn:aws:iam::111122223333:role/Admin", "arn:aws:iam::111122223333:role/User1" ] }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } } ]
  13. Escolha Terminar. A página Chaves de criptografia é aberta com uma mensagem indicando que a sua AWS KMS key foi criada.

Agora, você criou uma nova chave do KMS com um alias especificado (por exemplo, DMS-Redshift-endpoint-encryption-key). Essa chave permite AWS DMS criptografar os dados de destino do Amazon Redshift.

Configurações de endpoint ao usar o Amazon Redshift como destino para AWS DMS

É possível utilizar as configurações de endpoint para configurar o destino do Amazon Redshift de forma semelhante à utilização de atributos de conexão adicional. Você especifica as configurações ao criar o endpoint de destino usando o AWS DMS console ou usando o create-endpoint comando no AWS CLI, com a sintaxe --redshift-settings '{"EndpointSetting": "value", ...}' JSON.

A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Amazon Redshift como destino.

Nome Descrição

MaxFileSize

Especifica o tamanho máximo (em KB) de um arquivo .csv utilizado para transferir dados para o Amazon Redshift.

Valor padrão: 32768 KB (32 MB)

Valores válidos: 1 a 1.048.576

Example: --redshift-settings '{"MaxFileSize": 512}'

FileTransferUploadStreams

Especifica o número de threads utilizados para fazer upload de um único arquivo.

Valor padrão: 10

Valores válidos: 1 a 64

Example: --redshift-settings '{"FileTransferUploadStreams": 20}'

Acceptanydate

Especifica se qualquer formato de data será aceito incluindo formatos de data inválidos, como 0000-00-00. Valor booleano.

Valor padrão: falso

Valores válidos: true | false

Example: --redshift-settings '{"Acceptanydate": true}'

Dateformat

Especifica o formato de data. Esta é uma sequência de entrada e, por padrão, está vazia. O formato padrão é YYYY-MM-DD, mas você pode alterá-lo para, por exemplo, DD-MM-YYYY. Se os valores de data ou hora utilizarem outros formatos, utilize o argumento auto com o parâmetro Dateformat. O argumento auto reconhece vários formatos não compatíveis ao utilizar uma string Dateformat. A palavra-chave auto diferencia maiúsculas de minúsculas.

Valor padrão: vazio

Valores válidos: "dateformat_string" ou auto

Exemplo: --redshift-settings '{"Dateformat": "auto"}'.

Timeformat

Especifica o formato de hora. Esta é uma sequência de entrada e, por padrão, está vazia. O argumento auto reconhece vários formatos que não são compatíveis com a utilização de uma string Timeformat Se os valores de data e hora utilizarem formatos diferentes um do outro, utilize o argumento auto com o parâmetro Timeformat.

Valor padrão: 10

Valores válidos: "Timeformat_string" | “auto” | “epochsecs” | “epochmillisecs”

Exemplo: --redshift-settings '{"Timeformat": "auto"}'.

Emptyasnull

Especifica se os campos CHAR e VARCHAR vazios AWS DMS devem ser migrados como nulos. Um valor de true define os campos CHAR e VARCHAR vazios como nulos.

Valor padrão: falso

Valores válidos: true | false

Example: --redshift-settings '{"Emptyasnull": true}'

TruncateColumns

Trunca dados em colunas no número apropriado de caracteres, de maneira que ele caiba na especificação da coluna. Aplica-se somente a colunas com um tipo de dados VARCHAR ou CHAR e linhas com 4 MB ou menos.

Valor padrão: falso

Valores válidos: true | false

Example: --redshift-settings '{"TruncateColumns": true}'

RemoveQuotes

Remove as aspas de strings nos dados recebidos. Todos os caracteres entre aspas, inclusive delimitadores, são mantidos. Para obter mais informações sobre como remover cotas de um destino do Amazon Redshift, consulte o Guia do desenvolvedor do Amazon Redshift.

Valor padrão: falso

Valores válidos: true | false

Example: --redshift-settings '{"RemoveQuotes": true}'

TrimBlanks

Remove os caracteres de espaço em branco à direita de uma string VARCHAR. Esse parâmetro se aplica somente a colunas com um tipo de dados VARCHAR.

Valor padrão: falso

Valores válidos: true | false

Example: --redshift-settings '{"TrimBlanks": true}'

EncryptionMode Especifica o modo de criptografia do lado do servidor que você deseja utilizar para enviar os dados para o S3 antes que sejam copiados no Amazon Redshift. Os valores válidos são SSE_S3 (criptografia no lado do servidor do S3) ou SSE_KMS (criptografia da chave do KMS). Se você escolher SSE_KMS, defina o parâmetro ServerSideEncryptionKmsKeyId como o Nome do recurso da Amazon (ARN) para a chave do KMS a ser usada para a criptografia.
nota

Você também pode utilizar o comando modify-endpoint da CLI para alterar o valor da configuração de EncryptionMode um endpoint existente de SSE_KMS para SSE_S3. Mas não é possível alterar o valor de EncryptionMode de SSE_S3 para SSE_KMS.

Valor padrão: SSE_S3

Valores válidos: SSE_S3 ou SSE_KMS

Exemplo: --redshift-settings '{"EncryptionMode": "SSE_S3"}'.

ServerSideEncryptionKmsKeyId Se você definir EncryptionMode como SSE_KMS, defina esse parâmetro como o ARN da chave do KMS. Você pode encontrar esse ARN selecionando o alias da chave na lista de AWS KMS chaves criadas para sua conta. Ao criar a chave, você deve associar políticas e perfis específicos a ela. Para obter mais informações, consulte Criação e uso de AWS KMS chaves para criptografar dados de destino do Amazon Redshift.

Example: --redshift-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'

EnableParallelBatchInMemoryCSVFiles A configuração de EnableParallelBatchInMemoryCSVFiles melhora o desempenho de tarefas de carga máxima maiores com vários threads, fazendo com que o DMS grave em disco em vez de na memória. O valor padrão é false.
CompressCsvFiles Utilize esse atributo para compactar dados enviados para um destino do Amazon Redshift durante a migração. O valor padrão é true, e a compactação é ativada por padrão.

Utilizar uma chave de criptografia de dados e um bucket do Amazon S3 como armazenamento intermediário

É possível utilizar as configurações de endpoint do Amazon Redshift para configurar o seguinte:

  • Uma chave de criptografia de AWS KMS dados personalizada. É possível utilizar essa chave para criptografar os dados enviados ao Amazon S3 antes que sejam copiados no Amazon Redshift.

  • Um bucket do S3 personalizado como armazenamento intermediário para dados migrados para o Amazon Redshift.

  • Mapeie um booleano como booleano de uma origem do PostgreSQL. Por padrão, um tipo BOOLEAN é migrado como varchar(1). É possível especificar MapBooleanAsBoolean para permitir que o destino do Redshift migre o tipo booleano como booleano, conforme mostrado no exemplo a seguir.

    --redshift-settings '{"MapBooleanAsBoolean": true}'

    Observe que você deve definir essa configuração nos endpoints de origem e de destino para que ela tenha efeito.

Configurações de chave do KMS para criptografia de dados

Os exemplos a seguir mostram como configurar uma chave personalizada do KMS para criptografar os dados enviados por push ao S3. Para começar, é possível fazer a seguinte chamada de create-endpoint utilizando a AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'

Aqui, o objeto JSON especificado pela opção --redshift-settings define dois parâmetros. Um é um parâmetro EncryptionMode com o valor SSE_KMS. O outro é um parâmetro ServerSideEncryptionKmsKeyId com o valor arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1. Esse valor é um Nome de recurso da Amazon (ARN) para a chave personalizada do KMS.

Por padrão, a criptografia dos dados do S3 ocorre usando a criptografia do lado do servidor do S3. Para o destino do Amazon Redshift do exemplo anterior, isso também é equivalente a especificar as configurações de endpoint, como no exemplo a seguir.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"EncryptionMode": "SSE_S3"}'

Para obter mais informações sobre como trabalhar com a criptografia do lado do servidor do S3, consulte Proteger dados utilizando criptografia do lado do servidor no Guia do usuário do Amazon Simple Storage Service.

nota

Também é possível utilizar o comando modify-endpoint na CLI para alterar o valor do parâmetro EncryptionMode para um endpoint existente de SSE_KMS para SSE_S3. Mas não é possível alterar o valor de EncryptionMode de SSE_S3 para SSE_KMS.

Configurações do bucket do Amazon S3

Quando você migra dados para um endpoint de destino do Amazon Redshift AWS DMS , usa um bucket padrão do Amazon S3 como armazenamento intermediário de tarefas antes de copiar os dados migrados para o Amazon Redshift. Por exemplo, os exemplos mostrados para a criação de um endpoint de destino do Amazon Redshift com uma chave de criptografia de dados do AWS KMS utilizam esse bucket padrão do S3 (consulte Configurações de chave do KMS para criptografia de dados).

Em vez disso, você pode especificar um bucket S3 personalizado para esse armazenamento intermediário incluindo os seguintes parâmetros no valor da sua --redshift-settings opção no AWS CLI create-endpoint comando:

  • BucketName: uma string que você especifica como o nome do armazenamento do bucket do S3. Se o perfil de acesso ao serviço for baseado na política AmazonDMSRedshiftS3Role, esse valor deverá ter um prefixo de dms-, por exemplo, dms-my-bucket-name.

  • BucketFolder: (opcional) uma string que é possível especificar como o nome da pasta de armazenamento no bucket do S3 especificado.

  • ServiceAccessRoleArn: o ARN de um perfil do IAM que permite acesso administrativo ao bucket do S3. Normalmente, você cria esse perfil com base na política AmazonDMSRedshiftS3Role. Para obter um exemplo, consulte o procedimento para criar um perfil do IAM com a política gerenciada pela AWS necessária em Criação e uso de AWS KMS chaves para criptografar dados de destino do Amazon Redshift.

    nota

    Se você especificar o ARN de outro perfil do IAM utilizando a opção --service-access-role-arn do comando create-endpoint, essa opção de perfil do IAM terá precedência.

O exemplo a seguir mostra como é possível utilizar esses parâmetros para especificar um bucket personalizado do Amazon S3 na seguinte chamada de create-endpoint utilizando a AWS CLI.

aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target --engine-name redshift --username your-username --password your-password --server-name your-server-name --port 5439 --database-name your-db-name --redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'

Configurações de tarefas de vários threads para o Amazon Redshift

É possível melhorar o desempenho de tarefas de carga máxima e captura de dados de alteração (CDC) para um endpoint de destino do Amazon Redshift utilizando configurações de tarefas de vários threads. Elas permitem especificar os threads simultâneos e o número de registros a serem armazenados em um buffer.

Configurações de tarefas de vários threads para o Amazon Redshift

Para promover o desempenho da carga máxima, é possível utilizar as seguintes configurações da tarefa ParallelLoad*:

  • ParallelLoadThreads: especifica o número de threads simultâneos que o DMS utiliza durante uma carga máxima para enviar registros de dados para um endpoint de destino do Amazon Redshift. O valor padrão é zero (0) e o valor máximo é 32. Para obter mais informações, consulte Configurações de tarefa de carregamento completo.

    É possível utilizar o atributo enableParallelBatchInMemoryCSVFiles definido como false ao utilizar a configuração da tarefa ParallelLoadThreads. O atributo melhora o desempenho de tarefas de carga máxima maiores com vários threads, fazendo com que o DMS grave em disco em vez de na memória. O valor padrão é true.

  • ParallelLoadBufferSize: especifica o máximo de solicitações de registros de dados ao utilizar threads de carga paralela com o destino do Redshift. O valor padrão é 100 e o valor máximo é 1.000. Recomendamos que você use essa opção quando ParallelLoadThreads > 1 (maior que um).

nota

Support para o uso de configurações de ParallelLoad* tarefas durante o FULL LOAD nos endpoints de destino do Amazon Redshift está disponível nas AWS DMS versões 3.4.5 e superiores.

A configuração de ReplaceInvalidChars do endpoint do Redshift não é compatível para utilização durante a captura de dados de alteração (CDC) ou durante uma tarefa de migração FULL LOAD ativada para carga paralela. Ela é compatível com a migração FULL LOAD quando a carga paralela não está ativada. Para obter mais informações, consulte RedshiftSettingsa Referência AWS Database Migration Service da API

Configurações de tarefas de CDC de vários threads para o Amazon Redshift

Para promover o desempenho da CDC, é possível utilizar as seguintes configurações da tarefa ParallelApply*:

  • ParallelApplyThreads— Especifica o número de threads simultâneos que são AWS DMS usados durante um carregamento do CDC para enviar registros de dados para um endpoint de destino do Amazon Redshift. O valor padrão é zero (0) e o valor máximo é 32. O valor mínimo recomendado é igual ao número de fatias no cluster.

  • ParallelApplyBufferSize: especifica o máximo de solicitações de registro de dados ao utilizar threads de aplicação paralelos com o destino do Redshift. O valor padrão é 100 e o valor máximo é 1.000. Recomendamos usar essa opção quando ParallelApplyThreads > 1 (maior que um).

    Para obter o máximo benefício do Redshift como destino, é recomendável que o valor de ParallelApplyBufferSize seja pelo menos duas vezes (o dobro ou mais) do número de ParallelApplyThreads.

nota

Support para o uso de configurações de ParallelApply* tarefas durante o CDC para endpoints de destino do Amazon Redshift está disponível AWS DMS nas versões 3.4.3 e superiores.

O nível de paralelismo aplicado depende da correlação entre o tamanho do lote e o tamanho máximo do arquivo utilizado para transferir dados. Ao utilizar configurações de tarefas CDC de vários threads com um destino do Redshift, os benefícios são obtidos quando o tamanho do lote é grande em relação ao tamanho máximo do arquivo. Por exemplo, é possível utilizar a seguinte combinação de configurações de endpoint e de tarefa para ajustar o desempenho ideal.

// Redshift endpoint setting MaxFileSize=250000; // Task settings BatchApplyEnabled=true; BatchSplitSize =8000; BatchApplyTimeoutMax =1800; BatchApplyTimeoutMin =1800; ParallelApplyThreads=32; ParallelApplyBufferSize=100;

Utilizando as configurações do exemplo anterior, um cliente com uma workload transacional pesada se beneficia com seu buffer de lote, contendo 8.000 registros, sendo preenchido em 1800 segundos, utilizando 32 threads paralelos com um tamanho máximo de arquivo de 250 MB.

Para obter mais informações, consulte Configurações de ajuste de processamento de alterações.

nota

As consultas do DMS executadas durante a replicação contínua em um cluster do Redshift podem compartilhar a mesma fila do WLM (gerenciamento da workload) com outras consultas de aplicações em execução. Portanto, considere configurar adequadamente as propriedades do WLM para influenciar o desempenho durante a replicação contínua para um destino do Redshift. Por exemplo, se outras consultas ETL paralelas estiverem em execução, o DMS será executado mais lentamente e os ganhos de desempenho serão perdidos.

Tipos de dados de destino do Amazon Redshift

O endpoint do Amazon Redshift é AWS DMS compatível com a maioria dos tipos de dados do Amazon Redshift. A tabela a seguir mostra os tipos de dados de destino do Amazon Redshift que são compatíveis com o uso AWS DMS e o mapeamento padrão dos tipos de AWS DMS dados.

Para obter informações adicionais sobre AWS DMS os tipos de dados, consulteTipos de dados do AWS Database Migration Service.

AWS DMS tipos de dados

Tipos de dados do Amazon Redshift

BOOLEAN

BOOL

BYTES

VARCHAR (tamanho)

DATA

DATA

TIME

VARCHAR(20)

DATETIME

Se a escala for => 0 e =< 6, dependendo do tipo de coluna de destino do Redshift, uma das seguintes opções:

TIMESTAMP (s)

TIMESTAMPTZ (s): se o timestamp de origem contiver um deslocamento de zona (como no SQL Server ou Oracle), ele será convertido em UTC na inserção/atualização. Se ele não contiver um deslocamento, a hora já será considerada em UTC.

Se a escala for => 7 e =< 9, use:

VARCHAR (37)

INT1

INT2

INT2

INT2

INT4

INT4

INT8

INT8

NUMERIC

Se a escala for => 0 e =< 37, use:

NUMERIC (p,s)

Se a escala for => 38 e =< 127, use:

VARCHAR (tamanho)

REAL4

FLOAT4

REAL8

FLOAT8

STRING

Se o tamanho for de 1 a 65.535, utilize VARCHAR (tamanho em bytes)

Se o tamanho for de 65.536 a 2.147.483.647, utilize VARCHAR (65535)

UINT1

INT2

UINT2

INT2

UINT4

INT4

UINT8

NUMERIC (20,0)

WSTRING

Se o tamanho for de 1 a 65.535, utilize NVARCHAR (tamanho em bytes)

Se o tamanho for de 65.536 a 2.147.483.647, utilize NVARCHAR (65535)

BLOB

VARCHAR (tamanho máximo de LOB *2)

O tamanho máximo de LOB não pode exceder 31 KB. O Amazon Redshift não oferece suporte a VARCHARs mais de 64 KB.

NCLOB

NVARCHAR (tamanho máximo de LOB)

O tamanho máximo de LOB não pode exceder 63 KB. O Amazon Redshift não oferece suporte a VARCHARs mais de 64 KB.

CLOB

VARCHAR (tamanho máximo de LOB)

O tamanho máximo de LOB não pode exceder 63 KB. O Amazon Redshift não oferece suporte a VARCHARs mais de 64 KB.

Usando AWS DMS com o Amazon Redshift Serverless como destino

AWS DMS suporta o uso do Amazon Redshift Serverless como um endpoint de destino. Para obter informações sobre como utilizar o Amazon Redshift sem servidor, consulte Amazon Redshift sem servidor no Guia de gerenciamento do Amazon Redshift.

Este tópico descreve como usar um endpoint sem servidor do Amazon Redshift com. AWS DMS

nota

Ao criar um endpoint sem servidor do Amazon Redshift, para o DatabaseNamecampo de configuração do seu RedshiftSettingsendpoint, use o nome do data warehouse do Amazon Redshift ou o nome do endpoint do grupo de trabalho. Para o ServerNamecampo, use o valor de Endpoint exibido na página Grupo de trabalho do cluster sem servidor (por exemplo,). default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com Para obter informações sobre como criar um endpoint, consulte Criar endpoints de origem e de destino. Para obter informações sobre o endpoint do grupo de trabalho, consulte Conexão com o Amazon Redshift sem servidor.

Política de confiança com o Amazon Redshift sem servidor como destino

Ao utilizar o Amazon Redshift sem servidor como um endpoint de destino, adicione a seguinte seção destacada à política de confiança. Essa política de confiança é anexada ao perfil dms-access-for-endpoint.

{ "PolicyVersion": { "CreateDate": "2016-05-23T16:29:57Z", "VersionId": "v3", "Document": { "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:ModifyNetworkInterfaceAttribute" ], "Resource": "arn:aws:service:region:account:resourcetype/id", "Effect": "Allow" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "IsDefaultVersion": true } }

Para obter mais informações sobre como usar uma política de confiança com AWS DMS, consulteCriando as IAM funções a serem usadas com AWS DMS.

Limitações ao utilizar o Amazon Redshift sem servidor como destino

A utilização do Redshift sem servidor como destino apresenta as seguintes limitações: