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
É possível migrar dados para bancos de dados Amazon Redshift utilizando o AWS Database Migration Service. O Amazon Redshift é um serviço de data warehouse totalmente gerenciado e em escala de petabytes na nuvem do . Com um banco de dados Amazon Redshift como destino, é possível migrar dados de todos os outros bancos de dados de origem compatíveis.
É possível utilizar o Amazon Redshift sem servidor como destino do AWS DMS. Para obter mais informações, consulte Utilizar o AWS DMS com o Amazon Redshift sem servidor como destino a seguir.
O cluster do Amazon Redshift deve estar na mesma conta da AWS e região da AWS que a instância de replicação.
Durante a migração de banco de dados para o Amazon Redshift, o AWS DMS primeiro move os dados para um bucket do Amazon S3. Quando os arquivos residem em um bucket do Amazon S3, o AWS DMS os transfere para as tabelas apropriadas no data warehouse do Amazon Redshift. O AWS cria o bucket do S3 na mesma região da AWS DMS que o banco de dados Amazon Redshift. A instância de replicação do AWS DMS deve estar na mesma região da AWS.
Se você utilizar a AWS CLI ou a API do DMS para migrar dados para o Amazon Redshift, configure um perfil do AWS Identity and Access Management (IAM) para permitir 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 o AWS CLI e AWS DMS API.
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).
O AWS Database Migration Service oferece suporte a operações de carregamento completo e de processamento de alterações. O AWS DMS lê os dados no banco de dados de origem e cria uma série de arquivos de valores separados por vírgula (.csv). Para operações de carga máxima, o AWS DMS cria arquivos para cada tabela. O AWS DMS copia os arquivos de cada tabela em uma pasta separada no Amazon S3. Quando os arquivos são carregados no Amazon S3, o AWS DMS envia um comando copy, e os dados nos arquivos são copiados no Amazon Redshift. Para operações de processamento de alterações, o AWS DMS copia as alterações líquidas nos arquivos .csv. O AWS DMS faz upload dos arquivos de alterações líquidas no Amazon S3 e copia os dados no Amazon Redshift.
Para obter mais detalhes sobre como trabalhar com o Amazon Redshift como destino para o AWS DMS, consulte as seguintes seções:
Tópicos
- Pré-requisitos para a utilização de um banco de dados Amazon Redshift como destino do AWS Database Migration Service.
- Privilégios necessários para utilizar o Redshift como destino
- Limitações ao utilizar o Amazon Redshift como destino do AWS Database Migration Service
- Configurar um banco de dados Amazon Redshift como destino do AWS Database Migration Service
- Utilizar o roteamento aprimorado da VPC com o Amazon Redshift como destino do AWS Database Migration Service
- Criar e utilizar as chaves do AWS KMS para criptografar os dados de destino do Amazon Redshift
- Configurações de endpoint ao utilizar o Amazon Redshift como destino do AWS DMS
- Utilizar uma chave de criptografia de dados e um bucket do Amazon S3 como armazenamento intermediário
- Configurações de tarefas de vários threads para o Amazon Redshift
- Tipos de dados de destino do Amazon Redshift
- Utilizar o AWS DMS com o Amazon Redshift sem servidor como destino
Pré-requisitos para a utilização de um banco de dados Amazon Redshift como destino do 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:
-
Utilize o console de gerenciamento da AWS para iniciar um cluster do Amazon Redshift. Observe as informações básicas sobre a sua conta da AWS e o cluster do Amazon Redshift, como a senha, o nome do usuário e o 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 conta da AWS e na mesma região da AWS que a instância de replicação.
-
A instância de replicação do AWS DMS precisa de conectividade de rede com o endpoint do Amazon Redshift (nome do host e porta) que o cluster utiliza.
-
O AWS DMS utiliza 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ê utilizar a AWS CLI ou a API do DMS para criar dados com o Amazon Redshift como o banco de dados de destino, é necessário criar esse perfil do IAM. Para obter mais informações sobre a criação do perfil, consulte Criando as IAM funções a serem usadas com o AWS CLI e AWS DMS API. -
O AWS DMS converte BLOBs, CLOBs e NCLOBs para VARCHAR na instância do Amazon Redshift de destino. O Amazon Redshift não oferece suporte a tipos de dados VARCHAR maiores que 64 KB. Portanto, você não pode armazenar LOBs tradicionais no Amazon Redshift.
-
Defina a tarefa de metadados de destino configurando BatchApplyEnabled como
true
para que o AWS DMS manipule as alterações nas tabelas de destino do Amazon Redshift durante a 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 ao utilizar o Amazon Redshift como destino do 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 COLUMNcolumn name
data type
; -
O AWS DMS não pode migrar ou replicar alterações para um esquema com um nome iniciado 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 maiores que 64 KB. LOBs de 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 o AWS DMS replica os dados da tabela de origem sem uma chave primária ou exclusiva, a latência da CDC pode ser alta, resultando em um nível de desempenho inaceitável.
Configurar um banco de dados Amazon Redshift como destino do AWS Database Migration Service
O AWS Database Migration Service deve estar configurado para trabalhar 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 utilizar o Amazon Redshift como destino do AWS DMS.
Utilizar o roteamento aprimorado da VPC com o Amazon Redshift como destino do 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.
O AWS DMS pode ser afetado por esse comportamento, já que utiliza o comando COPY para mover dados no S3 para um cluster do Amazon Redshift.
Veja a seguir as etapas que o AWS DMS realiza para carregar dados em um destino do Amazon Redshift:
-
O AWS DMS copia dados da origem para arquivos .csv no servidor de replicação.
-
O AWS DMS utiliza o SDK da AWS para copiar arquivos .csv em um bucket do S3 na conta.
-
O AWS DMS utiliza o comando COPY no Amazon Redshift para copiar dados dos arquivos .csv no S3 em uma tabela apropriada no Amazon Redshift.
Se o roteamento aprimorado da VPC não estiver ativado, o Amazon Redshift roteará o tráfego pela internet, incluindo o tráfego para outros serviços na rede da 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.
Criar e utilizar as chaves do AWS KMS para criptografar os 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 isso, é possível criar e utilizar as chaves personalizadas do AWS KMS. É 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:
-
Utilize a opção a seguir ao executar o comando
create-endpoint
utilizando a AWS CLI.--redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "
your-kms-key-ARN
"}'Aqui,
é o nome de recurso da Amazon (ARN) de sua chave do KMS. Para obter mais informações, consulte Utilizar uma chave de criptografia de dados e um bucket do Amazon S3 como armazenamento intermediário.your-kms-key-ARN
-
Defina o atributo de conexão adicional
encryptionMode
como o valorSSE_KMS
, e o atributo de conexão adicionalserverSideEncryptionKmsKeyId
como o ARN de sua chave do KMS. Para obter mais informações, consulte Configurações de endpoint ao utilizar o Amazon Redshift como destino do AWS DMS.
Para criptografar os dados de destino do Amazon Redshift utilizando uma chave do KMS, você precisa de um perfil do AWS Identity and Access Management (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:
-
Um perfil do IAM com uma política gerenciada pela AWS.
-
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.
Como criar um perfil do IAM com a política gerenciada pela AWS necessária
Abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação, escolha Funções. A página Roles (Funções) é aberta.
-
Selecione Criar perfil. A página Create role (Criar função) é aberta.
-
Com o Serviço da AWS escolhido como uma entidade confiável, escolha DMS como o serviço que utilizará esse perfil.
-
Escolha Próximo: permissões. A página Attach permissions policies (Anexar políticas de permissões) é exibida.
-
Encontre e selecione a política
AmazonDMSRedshiftS3Role
. -
Escolha Próximo: etiquetas. A página Adicionar tags é exibida. Aqui, você pode adicionar todas as tags desejadas.
-
Escolha Next: Review (Próximo: revisar) e reveja os resultados.
-
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
.
Como criar uma chave de criptografia do AWS KMS com uma política de chave que faz referência ao seu perfil do IAM
nota
Para obter mais informações sobre como AWS DMS funciona com chaves de criptografia do AWS KMS, consulte Configurando uma chave de criptografia e especificando permissões AWS KMS.
-
Faça login no AWS Management Console e abra o console do AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar a Região da AWS, use o Region selector (Seletor de regiões) no canto superior direito da página.
-
No painel de navegação, escolha Customer managed keys (Chaves gerenciadas pelo cliente).
-
Escolha Create key (Criar chave). A página Configure key (Configurar chave) é aberta.
-
Para Key type (Tipo de chave), escolha Symmetric (Simétrica).
nota
Ao criar essa chave, você só pode criar uma chave simétrica, pois todos os serviços da AWS, como o Amazon Redshift, funcionam somente com chaves de criptografia simétricas.
-
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.
-
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. -
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.
-
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.
-
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.
-
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
). -
Se quiser adicionar outras contas não listadas para ter esse mesmo acesso, em Outras contas da AWS, escolha Adicionar outra conta da AWS e escolha Próximo. 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
eUser1
) 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 } } } ]
-
Escolha Terminar. A página Chaves de criptografia é aberta com uma mensagem indicando que a 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 que o AWS DMS criptografe os dados de destino do Amazon Redshift.
Configurações de endpoint ao utilizar o Amazon Redshift como destino do 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 utilizando o console do AWS DMS ou o comando create-endpoint
na AWS CLI, com a sintaxe --redshift-settings '{"
do JSON.EndpointSetting"
:
"value"
, ...
}'
A tabela a seguir mostra as configurações de endpoint que é possível utilizar com o Amazon Redshift como destino.
Nome | Descrição |
---|---|
|
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 Exemplo: |
|
Especifica o número de threads utilizados para fazer upload de um único arquivo. Valor padrão: 10 Valores válidos: 1 a 64 Exemplo: |
|
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 Exemplo: |
|
Especifica o formato de data. Esta é uma sequência de entrada e, por padrão, está vazia. O formato padrão é AAAA-MM-DD, mas é possível alterá-lo para, por exemplo, DD-MM-AAAA. Se os valores de data ou hora utilizarem outros formatos, utilize o argumento Valor padrão: vazio Valores válidos: " Exemplo: |
|
Especifica o formato de hora. Esta é uma sequência de entrada e, por padrão, está vazia. O argumento Valor padrão: 10 Valores válidos: " Exemplo: |
|
Especifica se o AWS DMS deve migrar campos CHAR e VARCHAR vazios como nulos. Um valor de true define os campos CHAR e VARCHAR vazios como nulos. Valor padrão: falso Valores válidos: true | false Exemplo: |
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 Exemplo: |
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 Exemplo: |
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 Exemplo: |
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. notaVocê também pode utilizar o comando Valor padrão: Valores válidos: Exemplo: |
ServerSideEncryptionKmsKeyId |
Se você definir EncryptionMode como SSE_KMS , defina esse parâmetro como o ARN da chave do KMS. É possível encontrar esse ARN selecionando o alias da chave na lista de chaves do AWS KMS criada para a sua conta. Ao criar a chave, você deve associar políticas e perfis específicos a ela. Para obter mais informações, consulte Criar e utilizar as chaves do AWS KMS para criptografar os dados de destino do Amazon Redshift. Exemplo: |
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:
-
A chave de criptografia de dados personalizada do AWS KMS. É 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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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
Ao migrar dados para um endpoint de destino do Amazon Redshift, o AWS DMS utiliza um bucket padrão do Amazon S3 como armazenamento intermediário de tarefa 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).
É possível, em vez disso, especificar um bucket do S3 personalizado para esse armazenamento intermediário incluindo os seguintes parâmetros no valor da opção --redshift-settings
no comando create-endpoint
da AWS CLI:
-
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íticaAmazonDMSRedshiftS3Role
, esse valor deverá ter um prefixo dedms-
, 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íticaAmazonDMSRedshiftS3Role
. Para obter um exemplo, consulte o procedimento para criar um perfil do IAM com a política gerenciada pela AWS necessária em Criar e utilizar as chaves do AWS KMS para criptografar os 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 comandocreate-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
--passwordyour-password
--server-nameyour-server-name
--port 5439 --database-nameyour-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 comofalse
ao utilizar a configuração da tarefaParallelLoadThreads
. 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. É recomendável utilizar essa opção quando ParallelLoadThreads > 1 (maior que um).
nota
Compatibilidade com a utilização de configurações da tarefa ParallelLoad*
durante FULL LOAD para endpoints de destino do Amazon Redshift está disponível nas versões 3.4.5 e superiores do AWS DMS.
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 RedshiftSettings na Referência da API do AWS Database Migration Service.
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 o AWS DMS utiliza durante uma carga de 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. É recomendável utilizar 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 deParallelApplyThreads
.
nota
Compatibilidade com a utilização de configurações da tarefa ParallelApply*
durante a CDC para endpoints de destino do Amazon Redshift está disponível nas versões 3.4.3 e superiores do AWS DMS.
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 para o 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 compatíveis do Amazon Redshift ao utilizar o AWS DMS e o mapeamento padrão em tipos de dados do AWS DMS.
Para obter mais informações sobre os tipos de dados do AWS DMS, consulte Tipos de dados do AWS Database Migration Service.
Tipos de dados do AWS DMS |
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 maiores que 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 maiores que 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 maiores que 64 KB. |
Utilizar o AWS DMS com o Amazon Redshift sem servidor como destino
O AWS DMS é compatível com a utilização do Amazon Redshift sem servidor como 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 utilizar um endpoint do Amazon Redshift sem servidor com o AWS DMS.
nota
Ao criar um endpoint do Amazon Redshift sem servidor, para o campo DatabaseName da configuração de endpoint RedshiftSettings, utilize o nome do data warehouse do Amazon Redshift ou o nome do endpoint do grupo de trabalho. Para o campo ServerName, utilize o valor de endpoint exibido na página Grupo de trabalho do cluster com tecnologia 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 utilizar as políticas de confiança com o AWS DMS, consulte Criando as IAM funções a serem usadas com o AWS CLI e AWS DMS API.
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:
O AWS DMS só é compatível com o Amazon Redshift sem servidor como endpoint em regiões compatíveis com o Amazon Redshift sem servidor. Para obter informações sobre quais regiões são compatíveis com o Amazon Redshift sem servidor, consulte API do Redshift sem servidor no tópico Endpoints e cotas do Amazon Redshift na Referência geral do AWS.
Ao utilizar o roteamento aprimorado da VPC, crie um endpoint do Amazon S3 na mesma VPC do Redshift sem servidor ou no cluster provisionado pelo Redshift. Para obter mais informações, consulte Utilizar o roteamento aprimorado da VPC com o Amazon Redshift como destino do AWS Database Migration Service.
O AWS DMS com Tecnologia Sem Servidor não é compatível com o Amazon Redshift sem servidor.