Utilizar o banco de dados PostgreSQL como origem do AWS DMS - 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 o banco de dados PostgreSQL como origem do AWS DMS

Você pode migrar dados de um ou vários bancos de dados PostgreSQL usando o. AWS DMS Com um banco de dados PostgreSQL como origem, é possível migrar dados para outro banco de dados PostgreSQL ou para um dos outros bancos de dados compatíveis.

Para obter informações sobre as versões do PostgreSQL AWS DMS que oferecem suporte como fonte, consulte. Fontes para AWS DMS

AWS DMS oferece suporte ao PostgreSQL para esses tipos de bancos de dados:

  • Bancos de dados on-premises

  • Bancos de dados em uma instância do Amazon EC2

  • Bancos de dados em uma instância de banco de dados Amazon RDS

  • Bancos de dados em uma instância de banco de dados com base na edição do Amazon Aurora compatível com PostgreSQL

  • Bancos de dados em uma instância de banco de dados com base na edição Tecnologia Sem Servidor do Amazon Aurora compatível com o PostgreSQL

nota

O DMS é compatível com o Amazon Aurora PostgreSQL—com Tecnologia Sem Servidor V1 como origem somente para carga máxima. Mas é possível utilizar o Amazon Aurora PostgreSQL—com Tecnologia Sem Servidor V2 como origem para tarefas de carga máxima, carga máxima + CDC e CDC somente.

Versão da origem do PostgreSQL

AWS DMS versão a ser usada

9.x, 10.x, 11.x, 12.x

Use qualquer AWS DMS versão disponível.

13.x

Use a AWS DMS versão 3.4.3 e superior.

14.x

Use a AWS DMS versão 3.4.7 e superior.

15.x

Use a AWS DMS versão 3.5.1 e superior.

16.x

Use a AWS DMS versão 3.5.3 e superior.

É possível utilizar o Secure Socket Layers (SSL) para criptografar conexões entre o endpoint do PostgreSQL e a instância de replicação. Para obter mais informações sobre como utilizar o SSL com um endpoint do PostgreSQL, consulte Usando SSL com AWS Database Migration Service.

O único requisito de segurança ao utilizar o PostgreSQL como origem é que a conta de usuário especificada deve ser de um usuário registrado no banco de dados PostgreSQL.

Para configurar um banco de dados PostgreSQL como AWS DMS um endpoint de origem, faça o seguinte:

Trabalhando com bancos de dados PostgreSQL autogerenciados como fonte em AWS DMS

Com um banco de dados PostgreSQL autogerenciado como fonte, você pode migrar dados para outro banco de dados PostgreSQL ou para um dos outros bancos de dados de destino suportados pelo. AWS DMS A origem do banco de dados pode ser um banco de dados on-premises ou um mecanismo autogerenciado em execução em uma instância do Amazon EC2. É possível utilizar uma instância de banco de dados para tarefas de carga máxima e de captura de dados de alteração (CDC).

Pré-requisitos para usar um banco de dados PostgreSQL autogerenciado como fonte AWS DMS

Antes de migrar dados de um banco de dados PostgreSQL de origem autogerenciado, faça o seguinte:

  • Utilize um banco de dados PostgreSQL com a versão 9.4.x ou superior.

  • Para tarefas de carga máxima mais CDC ou tarefas de somente CDC, conceda permissões de superusuário para a conta de usuário especificada para o banco de dados de origem do PostgreSQL. A conta de usuário precisa de permissões de superusuário para acessar perfis específicos de replicação na origem. Para tarefas somente de carga máxima, a conta de usuário precisa das permissões SELECT nas tabelas para migrá-las.

  • Adicione o endereço IP do servidor de AWS DMS replicação ao arquivo de pg_hba.conf configuração e habilite a replicação e as conexões de soquete. Veja a seguir um exemplo.

    # Replication Instance host all all 12.3.4.56/00 md5 # Allow replication connections from localhost, by a user with the # replication privilege. host replication dms 12.3.4.56/00 md5

    O arquivo de configuração pg_hba.conf do PostgreSQL controla a autenticação do cliente. (HBA significa autenticação baseada em host.) O arquivo é tradicionalmente armazenado no diretório de dados do cluster de banco de dados.

  • Se você estiver configurando um banco de dados como fonte para replicação lógica usando consulte AWS DMS Habilitando o CDC usando um banco de dados PostgreSQL autogerenciado como fonte AWS DMS

nota

Algumas AWS DMS transações ficam inativas por algum tempo antes que o mecanismo do DMS as use novamente. Com a utilização do parâmetro idle_in_transaction_session_timeout no PostgreSQL versões 9.6 e superior é possível fazer com que as transações ociosas atinjam o tempo limite e falhem. Não encerre transações ociosas quando você usar o AWS DMS.

Habilitando o CDC usando um banco de dados PostgreSQL autogerenciado como fonte AWS DMS

AWS DMS suporta captura de dados de alteração (CDC) usando replicação lógica. Para ativar a replicação lógica de um banco de dados de origem do PostgreSQL autogerenciado, defina os seguintes parâmetros e valores no arquivo de configuração postgresql.conf:

  • Defina wal_level = logical.

  • Defina max_replication_slots como um valor maior que 1.

    Defina o valor de max_replication_slots de acordo com o número de tarefas a serem executadas. Por exemplo, para executar cinco tarefas, defina no mínimo cinco slots. Os slots são abertos automaticamente assim que uma tarefa é iniciada e permanecem abertos até mesmo quando a tarefa não está mais em execução. Exclua manualmente os slots abertos. Observe que o DMS descarta automaticamente os slots de replicação quando a tarefa é excluída, se o DMS tiver criado o slot.

  • Defina max_wal_senders como um valor maior que 1.

    O parâmetro max_wal_senders define o número de tarefas simultâneas que podem ser executadas.

  • O parâmetro wal_sender_timeout encerra as conexões de replicação que estão inativas por mais tempo do que o número de milissegundos especificado. O padrão para um banco de dados PostgreSQL on-premises é 60000 milissegundos (60 segundos). A definição do valor como 0 (zero) desativa o mecanismo de tempo limite e é uma configuração válida para o DMS.

    Ao definir wal_sender_timeout como um valor diferente de zero, uma tarefa do DMS com CDC requer um mínimo de 10000 milissegundos (10 segundos) e falha se o valor for menor que 10000. Mantenha o valor em menos de 5 minutos para evitar provocar um atraso durante um failover de multi-AZ de uma instância de replicação do DMS.

Alguns parâmetros são estáticos, e você só pode defini-los na inicialização do servidor. Quaisquer alterações nas entradas do arquivo de configuração (para um banco de dados autogerenciado) ou no grupo de parâmetros do banco de dados (para um banco de dados RDS para PostgreSQL) são ignoradas até que o servidor seja reiniciado. Para obter mais informações, consulte a Documentação do PostgreSQL.

Para obter mais informações sobre como ativar a CDC, consulte Ativar a captura de dados de alteração (CDC) utilizando replicação lógica.

Trabalhando com bancos AWS de dados PostgreSQL gerenciados como fonte de DMS

Você pode usar uma instância AWS de banco de dados PostgreSQL gerenciada como fonte para. AWS DMSÉ possível executar tarefas de carga máxima e tarefas de captura de dados de alteração (CDC) utilizando uma origem PostgreSQL gerenciado pela AWS.

Pré-requisitos para usar um banco de dados AWS PostgreSQL gerenciado como fonte de DMS

Antes de migrar dados de um banco de dados de origem AWS PostgreSQL gerenciado, faça o seguinte:

  • Recomendamos que você use uma conta de AWS usuário com as permissões mínimas necessárias para a instância de banco de dados PostgreSQL como a conta de usuário para o endpoint de origem do PostgreSQL. AWS DMS A utilização de uma conta mestre não é recomendada. A conta deve ter o perfil rds_superuser e o perfil rds_replication. O perfil rds_replication concede permissões para gerenciar slots lógicos e transmitir dados utilizando slots lógicos.

    Crie vários objetos da conta do usuário mestre para a conta que você utiliza. Para obter mais informações sobre como criar esses objetos, consulte Migrar um banco de dados Amazon RDS para PostgreSQL sem utilizar a conta de usuário mestre.

  • Se o banco de dados de origem estiver em uma nuvem privada virtual (VPC), selecione o grupo de segurança da VPC que fornece acesso à instância de banco de dados em que o banco de dados reside. Isso é necessário para que a instância de replicação do DMS se conecte com êxito à instância de banco de dados de origem. Quando o banco de dados e a instância de replicação do DMS estiverem na mesma VPC, adicione o grupo de segurança apropriado às suas próprias regras de entrada.

nota

Algumas AWS DMS transações ficam inativas por algum tempo antes que o mecanismo do DMS as use novamente. Com a utilização do parâmetro idle_in_transaction_session_timeout no PostgreSQL versões 9.6 e superior é possível fazer com que as transações ociosas atinjam o tempo limite e falhem. Não encerre transações ociosas quando você usar o AWS DMS.

Habilitando o CDC com uma instância de banco AWS de dados PostgreSQL gerenciada com AWS DMS

AWS DMS oferece suporte ao CDC nos bancos de dados PostgreSQL do Amazon RDS quando a instância de banco de dados está configurada para usar a replicação lógica. A tabela a seguir resume a compatibilidade de replicação lógica de cada versão AWS gerenciada do PostgreSQL.

Não é possível utilizar as réplicas de leitura RDS PostgreSQL para CDC (replicação contínua).

Versão do PostgreSQL

AWS DMS suporte de carga total

AWS DMS Suporte CDC

Aurora PostgreSQL versão 2.1 compatível com o PostgreSQL 10.5 (ou inferior)

Sim

Não

Compatibilidade do Aurora PostgreSQL versão 2.2 com o PostgreSQL 10.6 (ou superior)

Sim

Sim

Compatibilidade do RDS para PostgreSQL com o PostgreSQL 10.21 (ou superior)

Sim

Sim

Como ativar a replicação lógica para uma instância de banco de dados RDS PostgreSQL
  1. Use a conta de usuário AWS principal para a instância de banco de dados PostgreSQL como a conta de usuário para o endpoint de origem do PostgreSQL. A conta de usuário mestra tem as funções necessárias para permitir a configuração da captura de dados de alteração (CDC).

    Se você utilizar uma conta diferente da conta de usuário mestre, deverá criar vários objetos da conta mestre para a conta utilizada. Para ter mais informações, consulte Migrar um banco de dados Amazon RDS para PostgreSQL sem utilizar a conta de usuário mestre.

  2. Defina o parâmetro rds.logical_replication no grupo de parâmetros do CLUSTER do banco de dados como 1. Esse parâmetro estático requer uma reinicialização da instância de banco de dados para entrar em vigor. Como parte da aplicação desse parâmetro, o AWS DMS define os parâmetros wal_level, max_wal_senders, max_replication_slots e max_connections. Essas alterações de parâmetros podem aumentar o log de gravação antecipada (WAL), portanto, só defina rds.logical_replication ao utilizar slots de replicação lógica.

  3. O parâmetro wal_sender_timeout encerra as conexões de replicação que estão inativas por mais tempo do que o número de milissegundos especificado. O padrão para um banco AWS de dados PostgreSQL gerenciado é 30.000 milissegundos (30 segundos). A definição do valor como 0 (zero) desativa o mecanismo de tempo limite e é uma configuração válida para o DMS.

    Ao definir wal_sender_timeout como um valor diferente de zero, uma tarefa do DMS com CDC requer um mínimo de 10000 milissegundos (10 segundos) e falhará se o valor estiver entre 0 e 10000. Mantenha o valor em menos de 5 minutos para evitar provocar um atraso durante um failover de multi-AZ de uma instância de replicação do DMS.

  4. Verifique se o valor do parâmetro max_worker_processes no grupo de parâmetros do cluster do banco de dados é igual ou superior aos valores totais combinados de max_logical_replication_workersautovacuum_max_workers e max_parallel_workers. Um alto número de processos de trabalho em segundo plano pode impactar as workloads das aplicações em instâncias pequenas. Portanto, monitore o desempenho do banco de dados se você definir um valor de max_worker_processes mais alto que o padrão.

  5. Ao usar o Aurora PostgreSQL como fonte com o CDC, defina como. synchronous_commit ON

Migrar um banco de dados Amazon RDS para PostgreSQL sem utilizar a conta de usuário mestre

Em alguns casos, é possível não utilizar a conta de usuário mestre para a instância de banco de dados Amazon RDS PostgreSQL que você está utilizando como origem. Nesses casos, crie vários objetos para capturar os eventos da linguagem de definição de dados (DDL). Crie esses objetos utilizando uma conta diferente da conta mestrr e, depois, crie um acionador na conta de usuário mestre.

nota

Se você definir a configuração do endpoint captureDDLs como false no endpoint de origem, não precisará criar a tabela e o acionador a seguir no banco de dados de origem.

Utilize o procedimento a seguir para criar esses objetos.

Como criar objetos
  1. Escolha um esquema onde os objetos serão criados. O esquema padrão é public. Verifique se o esquema existe e pode ser acessado pela conta OtherThanMaster.

  2. Faça login na instância de banco de dados PostgreSQL utilizando uma conta de usuário diferente da conta mestre, aqui a conta OtherThanMaster.

  3. Crie a tabela awsdms_ddl_audit executando o comando a seguir, substituindo objects_schema no código seguinte pelo nome do esquema a ser utilizado.

    CREATE TABLE objects_schema.awsdms_ddl_audit ( c_key bigserial primary key, c_time timestamp, -- Informational c_user varchar(64), -- Informational: current_user c_txn varchar(16), -- Informational: current transaction c_tag varchar(24), -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE' c_oid integer, -- For future use - TG_OBJECTID c_name varchar(64), -- For future use - TG_OBJECTNAME c_schema varchar(64), -- For future use - TG_SCHEMANAME. For now - holds current_schema c_ddlqry text -- The DDL query associated with the current DDL event );
  4. Crie o perfil awsdms_intercept_ddl executando o comando a seguir, substituindo objects_schema no código seguinte pelo nome do esquema a ser utilizado.

    CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl() RETURNS event_trigger LANGUAGE plpgsql SECURITY DEFINER AS $$ declare _qry text; BEGIN if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then SELECT current_query() into _qry; insert into objects_schema.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete from objects_schema.awsdms_ddl_audit; end if; END; $$;
  5. Faça logout da conta OtherThanMaster e faça login com uma conta que tenha o perfil rds_superuser atribuído.

  6. Crie o trigger de evento awsdms_intercept_ddl executando o comando a seguir.

    CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
  7. Verifique se todos os usuários e perfis que acessam esses eventos têm as permissões de DDL necessárias. Por exemplo: .

    grant all on public.awsdms_ddl_audit to public; grant all on public.awsdms_ddl_audit_c_key_seq to public;

Ao concluir o procedimento anterior, você poderá criar o endpoint de origem do AWS DMS utilizando a conta OtherThanMaster.

nota

Esses eventos são acionados pelas instruções CREATE TABLE, ALTER TABLE e DROP TABLE.

Ativar a captura de dados de alteração (CDC) utilizando replicação lógica

É possível utilizar o recurso de replicação lógica nativa do PostgreSQL para ativar a captura de dados de alteração (CDC) durante a migração do banco de dados de origens do PostgreSQL. É possível utilizar esse recurso com o PostgreSQL autogerenciado e também com uma instância do banco de dados Amazon RDS para PostgreSQL. Essa abordagem reduz o tempo de inatividade e ajuda a garantir que o banco de dados de destino esteja sincronizado com o banco de dados PostgreSQL de origem.

AWS DMS suporta CDC para tabelas PostgreSQL com chaves primárias. Se uma tabela não tiver uma chave primária, os logs de gravação antecipada (WAL) não incluirão uma imagem anterior da linha do banco de dados. Nesse caso, o DMS não pode atualizar a tabela. Aqui, é possível utilizar configurações adicionais e utilizar a identidade da réplica da tabela como uma solução alternativa. No entanto, essa abordagem pode gerar logs adicionais. É recomendável utilizar a identidade da réplica da tabela como solução alternativa somente após testes cuidadosos. Para ter mais informações, consulte Definições de configuração adicionais ao utilizar um banco de dados PostgreSQL como origem do DMS.

nota

A REPLICA IDENTITY FULL é compatível com um plug-in de decodificação lógica, mas não com um plug-in pglogical. Para obter mais informações, consulte a Documentação do pglogical.

Para tarefas de carga total e somente CDC e CDC, AWS DMS usa slots de replicação lógica para reter os registros do WAL para replicação até que os registros sejam decodificados. Ao reiniciar (não ao retomar) para uma carga máxima e uma tarefa de CDC ou uma tarefa de somente de CDC, o slot de replicação é recriado.

nota

Para decodificação lógica, o DMS utiliza o plug-in test_decoding ou pglogical. Se o plug-in pglogical estiver disponível em um banco de dados PostgreSQL de origem, o DMS criará um slot de replicação utilizando pglogical, caso contrário, um plug-in test_decoding será utilizado. Para obter mais informações sobre o plug-in test_decoding, consulte a Documentação do PostgreSQL.

Se o parâmetro max_slot_wal_keep_size do banco de dados for definido como um valor não padrão e o restart_lsn de um slot de replicação ficar atrás do LSN atual em mais do que esse tamanho, a tarefa do DMS falhará devido à remoção dos arquivos WAL necessários.

Configurar o plug-in pglogical

Implementado como uma extensão do PostgreSQL, o plug-in pglogical é um sistema de replicação lógica e um modelo para replicação seletiva de dados. A tabela a seguir identifica as versões de origem do banco de dados PostgreSQL que são compatíveis com o plug-in pglogical.

Origem PostgreSQL

Compatível com o pglogical

PostgreSQL 9.4 autogerenciado ou superior

Sim

Amazon RDS PostgreSQL 9.5 ou inferior

Não

Amazon RDS PostgreSQL 9.6 ou superior

Sim

Aurora PostgreSQL 1.x até 2.5.x

Não

Aurora PostgreSQL 2.6.x ou superior

Sim

Aurora PostgreSQL 3.3.x ou superior

Sim

Antes de configurar o pglogical para uso com AWS DMS, primeiro habilite a replicação lógica para captura de dados de alteração (CDC) em seu banco de dados de origem do PostgreSQL.

Depois que a replicação lógica estiver ativada no banco de dados de origem PostgreSQL, utilize as etapas a seguir para configurar o pglogical para utilização com o DMS.

Para usar o plug-in pglogical para replicação lógica em um banco de dados de origem PostgreSQL com AWS DMS
  1. Crie uma extensão de pglogical no banco de dados de origem PostgreSQL:

    1. Defina o parâmetro correto:

      • Para bancos de dados PostgreSQL autogerenciados, defina o parâmetro shared_preload_libraries= 'pglogical' do banco de dados.

      • Para o PostgreSQL nos bancos de dados Amazon RDS e Amazon Aurora edição compatível com o PostgreSQL, defina o parâmetro shared_preload_libraries como pglogical no mesmo grupo de parâmetros do RDS.

    2. Reinicie o banco de dados de origem PostgreSQL.

    3. No banco de dados PostgreSQL, execute o comando create extension pglogical;.

  2. Execute o comando a seguir para verificar se a instalação do pglogical foi bem-sucedida:

    select * FROM pg_catalog.pg_extension

Agora você pode criar uma AWS DMS tarefa que realiza a captura de dados de alteração para o endpoint do banco de dados de origem do PostgreSQL.

nota

Se você não ativar o pglogical no banco de dados de origem PostgreSQL, o AWS DMS utilizará o plug-in test_decoding por padrão. Quando pglogical está habilitado para decodificação lógica, AWS DMS usa pglogical por padrão. Mas é possível definir o atributo de conexão adicional, para que o PluginName utilize o plug-in test_decoding em vez disso.

Utilizar pontos de início nativos da CDC para configurar uma carga de CDC de uma origem PostgreSQL

Para ativar os pontos de início nativos da CDC com o PostgreSQL como origem, defina o atributo de conexão adicional slotName como o nome de um slot de replicação lógica existente ao criar o endpoint. Esse slot de replicação lógica mantém as alterações contínuas desde a hora da criação do endpoint, portanto, ele é compatível com a replicação de um ponto no tempo.

O PostgreSQL grava as alterações do banco de dados em arquivos WAL que são descartados somente depois que o AWS DMS faz a leitura das alterações do slot de replicação lógica com êxito. O uso de slots de replicação lógica pode impedir que as alterações registradas sejam excluídas antes de serem consumidas pelo mecanismo de replicação.

No entanto, dependendo da taxa de alteração e consumo, as alterações mantidas em um slot de replicação lógica podem causar a utilização elevado do disco. É recomendável definir alarmes de utilização de espaço na instância de origem PostgreSQL ao utilizar slots de replicação lógica. Para obter mais informações sobre como definir o atributo de conexão adicional slotName, consulte Configurações de endpoint e atributos extras de conexão (ECAs) ao usar o PostgreSQL como fonte de DMS.

O procedimento a seguir demonstra essa abordagem com mais detalhes.

Como utilizar um ponto inide início nativo da CDC para configurar uma carga de CDC de um endpoint de origem PostgreSQL
  1. Identifique o slot de replicação lógica utilizado por uma tarefa de replicação anterior (uma tarefa pai) que você queira utilizar como ponto de partida. Consulte a visualização pg_replication_slots no banco de dados de origem para se certificar de que esse slot não tenha conexões ativas. Se isso acontecer, resolva-os e feche-os antes de continuar.

    Para as etapas a seguir, vamos supor que o slot de replicação lógica seja abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef.

  2. Crie um novo endpoint de origem que inclua a configuração de atributo de conexão adicional a seguir.

    slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
  3. Crie uma nova tarefa somente para CDC usando o console AWS CLI ou AWS DMS a API. Por exemplo, utilizando a CLI, é possível executar o seguinte comando create-replication-task.

    aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" --replication-task-settings "file://task-pg.json"

    No comando anterior, as seguintes opções são definidas:

    • A opção source-endpoint-arn é definida como o valor criado na etapa 2.

    • A opção replication-instance-arn é definida como o mesmo valor da tarefa pai da etapa 1.

    • As opções table-mappings e replication-task-settings são definidas como os mesmos valores da tarefa pai na etapa 1.

    • A opção cdc-start-position é definida como um valor de posição de início. Para localizar essa posição de início, consulte a visualização pg_replication_slots no banco de dados de origem ou visualize os detalhes do console da tarefa pai na etapa 1. Para ter mais informações, consulte Determinar um ponto de início nativo de CDC.

    Para ativar o modo de início personalizado do CDC ao criar uma nova tarefa somente para CDC usando o AWS DMS console, faça o seguinte:

    • Na seção Configurações da tarefa, em Modo de início da CDC para transações de origem, escolha Ativar o modo de início da CDC personalizado.

    • Em Ponto de início da CDC personalizado para transações de origem, escolha Especificar um número de sequência de log. Especifique o número de alteração do sistema ou escolha Especificar um ponto de verificação de recuperação e forneça um ponto de verificação de recuperação.

    Quando essa tarefa do CDC é AWS DMS executada, gera um erro se o slot de replicação lógica especificado não existir. Ele também gerará um erro se a tarefa não for criada com uma configuração válida para cdc-start-position.

Ao utilizar pontos de início nativos da CDC com o plug-in pglogical e quiser utilizar um novo slot de replicação, conclua as etapas de configuração a seguir antes de criar uma tarefa de CDC.

Como utilizar um novo slot de replicação não criado anteriormente como parte de outra tarefa do DMS
  1. Crie um slot de replicação, conforme mostrado a seguir:

    SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
  2. Depois que o banco de dados criar o slot de replicação, obtenha e anote os valores de restart_lsn e de confirmed_flush_lsn do slot:

    select * from pg_replication_slots where slot_name like 'replication_slot_name';

    Observe que a posição de início da CDC nativo para uma tarefa de CDC criada após o slot de replicação não pode ser mais antiga do que o valor de confirmed_flush_lsn.

    Para obter informações sobre os valores de restart_lsn e de confirmed_flush_lsn, consulte pg_replication_slots

  3. Crie um nó pglogical.

    SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
  4. Crie dois conjuntos de replicação utilizando o perfil pglogical.create_replication_set. O primeiro conjunto de replicação rastreia as atualizações e as exclusões das tabelas que têm chaves primárias. O segundo conjunto de replicação rastreia somente inserções e tem o mesmo nome do primeiro conjunto de replicação, com o prefixo 'i' adicionado.

    SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false); SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
  5. Adicione uma tabela ao conjunto de réplicas.

    SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true); SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
  6. Defina o atributo de conexão adicional (ECA) a seguir ao criar o endpoint de origem.

    PluginName=PGLOGICAL;slotName=slot_name;

Agora é possível criar uma tarefa somente de CDC com um ponto de início nativo do PostgreSQL utilizando o novo slot de replicação. Para obter mais informações sobre o plug-in pglogical, consulte a Documentação do pglogical 3.7

Migrando do PostgreSQL para o PostgreSQL usando AWS DMS

Quando você migra de um mecanismo de banco de dados diferente do PostgreSQL para um banco de dados PostgreSQL, é quase sempre a melhor ferramenta AWS DMS de migração a ser usada. No entanto, ao migrar de um banco de dados PostgreSQL para um banco de dados PostgreSQL, as ferramentas do PostgreSQL podem ser mais eficazes.

Utilize ferramentas nativas do PostgreSQL para migrar dados

É recomendável utilizar ferramentas nativas de migração do banco de dados PostgreSQL, como pg_dump, nas seguintes condições:

  • Quando há uma migração homogênea, na qual você migra de um banco de dados PostgreSQL de origem para um banco de dados PostgreSQL de destino.

  • Quando for migrar um banco de dados inteiro.

  • As ferramentas nativas permitem que você migre os dados com um tempo mínimo de inatividade.

O utilitário pg_dump utiliza o comando COPY para criar um esquema e um despejo de dados de um banco de dados PostgreSQL. O script de despejo gerado pelo pg_dump carrega os dados em um banco de dados com o mesmo nome e recria as tabelas, os índices e as chaves estrangeiras. Para restaurar os dados para um banco de dados com outro nome, utilize o comando pg_restore e o parâmetro -d.

Se estiver migrando dados de um banco de dados de origem PostgreSQL sendo executado no EC2 para um destino Amazon RDS para PostgreSQL, você poderá utilizar o plug-in pglogical.

Para obter mais informações sobre como importar de um banco de dados PostgreSQL para o Amazon RDS para PostgreSQL ou para a edição do Amazon Aurora compatível com PostgreSQL, consulte https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html.

Utilizar o DMS para migrar dados do PostgreSQL para o PostgreSQL

AWS DMS pode migrar dados, por exemplo, de um banco de dados PostgreSQL de origem que está no local para uma instância de destino do Amazon RDS for PostgreSQL ou do Aurora PostgreSQL. Os tipos de dados do PostgreSQL fundamentais ou básicos geralmente migram com êxito.

nota

Ao replicar tabelas particionadas de uma origem PostgreSQL para o destino PostgreSQL, você não precisa mencionar a tabela pai como parte dos critérios de seleção na tarefa do DMS. Mencionar a tabela principal faz com que os dados sejam duplicados nas tabelas filho no destino, possivelmente causando uma violação de PK. Ao selecionar apenas as tabelas filho nos critérios de seleção do mapeamento de tabelas, a tabela pai é preenchida automaticamente.

Os tipos de dados compatíveis com o banco de dados de origem, mas que não são compatíveis com o destino, podem não ser migrados com êxito. AWS DMS transmite alguns tipos de dados como cadeias de caracteres se o tipo de dados for desconhecido. Alguns tipos de dados, como XML e JSON, podem ser migrados com êxito como arquivos pequenos, mas podem falhar se forem documentos grandes.

Ao executar a migração do tipo de dados, lembre-se de que:

  • Em alguns casos, o tipo de dados PostgreSQL NUMERIC(p,s) não especifica nenhuma precisão e escala. Nas versões 3.4.2 e anteriores do DMS, o DMS utiliza uma precisão de 28 e uma escala de 6 por padrão, NUMERIC(28,6). Por exemplo, o valor 0,611111104488373 da origem é convertido em 0,611111 no destino do PostgreSQL.

  • Uma tabela com o tipo de dados ARRAY deve ter uma chave primária. Uma tabela com um tipo de dados ARRAY sem uma chave primária é suspensa durante a carga máxima.

A tabela a seguir mostra os tipos de dados do PostgreSQL de origem e se podem ser migrados com êxito.

Tipo de dados Será migrado com êxito Migra parcialmente Não migra Comentários
INTEGER X
SMALLINT X
BIGINT X
NUMERIC/DECIMAL(p,s) X Em que 0<p<39 e 0<s
NUMERIC/DECIMAL X Em que p>38 ou p=s=0
REAL X
DOUBLE X
SMALLSERIAL X
SERIAL X
BIGSERIAL X
MONEY X
CHAR X Sem precisão especificada
CHAR(n) X
VARCHAR X Sem precisão especificada
VARCHAR(n) X
TEXT X
BYTEA X
TIMESTAMP X Os valores infinitos positivos e negativos são truncados para '9999-12-31 23:59:59' e '4713-01-01 00:00:00 BC', respectivamente.
TIMESTAMP WITH TIME ZONE X
DATA X
TIME X
TIME WITH TIME ZONE X
INTERVAL X
BOOLEAN X
ENUM X
CIDR X
INET X
MACADDR X
TSVECTOR X
TSQUERY X
XML X
POINT X Tipo de dados espaciais do PostGIS
LINE X
LSEG X
BOX X
PATH X
POLYGON X Tipo de dados espaciais do PostGIS
CIRCLE X
JSON X
ARRAY X Requer chave primária
COMPOSITE X
RANGE X
LINESTRING X Tipo de dados espaciais do PostGIS
MULTIPOINT X Tipo de dados espaciais do PostGIS
MULTILINESTRING X Tipo de dados espaciais do PostGIS
MULTIPOLYGON X Tipo de dados espaciais do PostGIS
GEOMETRYCOLLECTION X Tipo de dados espaciais do PostGIS

Migrar tipos de dados espaciais do PostGIS

Dados espaciais identificam a informação de geometria de um objeto ou local no espaço. Os bancos de dados relacionais de objetos PostgreSQL são compatíveis com os tipos de dados espaciais do PostGIS.

Antes de migrar objetos de dados espaciais do PostgreSQL, verifique se o plug-in PostGIS está ativado no nível global. Isso garante a AWS DMS criação exata das colunas de dados espaciais de origem para a instância de banco de dados de destino do PostgreSQL.

Para AWS DMS migrações homogêneas de PostgreSQL para PostgreSQL, suporta a migração de tipos e subtipos de objetos de dados geométricos e geográficos (coordenadas geodésicas) PostGIS, como os seguintes:

  • POINT

  • LINESTRING

  • POLYGON

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

Migração do Babelfish para o Amazon Aurora PostgreSQL usando AWS DMS

Você pode migrar as tabelas de origem do PostgreSQL do Babelfish for Aurora para qualquer endpoint de destino compatível usando o. AWS DMS

Ao criar seu endpoint de AWS DMS origem usando o console do DMS, a API ou os comandos da CLI, você define a origem como Amazon Aurora PostgreSQL e o nome do banco de dados como. babelfish_db Na seção Configurações do Endpoint, verifique se o DatabaseModeestá definido como Babelfish e BabelfishDatabaseNameestá definido como o nome do banco de dados Babelfish T-SQL de origem. Em vez de usar a porta TCP do Babelfish1433, use a porta TCP do Aurora PostgreSQL. 5432

Você deve criar suas tabelas antes de migrar dados para garantir que o DMS use os tipos de dados e metadados de tabela corretos. Se você não criar suas tabelas no destino antes de executar a migração, o DMS poderá criar as tabelas com tipos de dados e permissões incorretos.

Adicionar regras de transformação à tarefa de migração

Ao criar uma tarefa de migração para uma fonte do Babelfish, você precisa incluir regras de transformação que garantam que o DMS use as tabelas de destino pré-criadas.

Se você definiu o modo de migração de vários bancos de dados ao definir seu cluster Babelfish para PostgreSQL, adicione uma regra de transformação que renomeia o nome do esquema para o esquema T-SQL. Por exemplo, se o nome do esquema T-SQL for e o nome do esquema do Babelfish para PostgreSQL fordbo, renomeie o esquema para usar uma regra de mydb_dbo transformação. dbo Para encontrar o nome do esquema PostgreSQL, consulte a arquitetura Babelfish no Guia do usuário do Amazon Aurora.

Se você usa o modo de banco de dados único, não precisa usar uma regra de transformação para renomear esquemas de banco de dados. Os nomes dos esquemas do PostgreSQL têm one-to-one um mapeamento para os nomes dos esquemas no banco de dados T-SQL.

O exemplo de regra de transformação a seguir mostra como renomear o nome do esquema de mydb_dbo back para: dbo

{ "rules": [ { "rule-type": "transformation", "rule-id": "566251737", "rule-name": "566251737", "rule-target": "schema", "object-locator": { "schema-name": "mydb_dbo" }, "rule-action": "rename", "value": "dbo", "old-value": null }, { "rule-type": "selection", "rule-id": "566111704", "rule-name": "566111704", "object-locator": { "schema-name": "mydb_dbo", "table-name": "%" }, "rule-action": "include", "filters": [] } ] }

Limitações para usar um endpoint de origem PostgreSQL com tabelas Babelfish

As seguintes limitações se aplicam ao usar um endpoint de origem do PostgreSQL com tabelas do Babelfish:

  • O DMS suporta apenas a migração do Babelfish versão 16.2/15.6 e posterior e do DMS versão 3.5.3 e posterior.

  • O DMS não replica as alterações na definição da tabela do Babelfish para o endpoint de destino. Uma solução alternativa para essa limitação é primeiro aplicar as alterações na definição da tabela no destino e, em seguida, alterar a definição da tabela na fonte do Babelfish.

  • Quando você cria tabelas do Babelfish com o tipo de dados BYTEA, o DMS as converte no tipo de varbinary(max) dados ao migrar para o SQL Server como destino.

  • O DMS não oferece suporte ao modo LOB completo para tipos de dados binários. Em vez disso, use o modo LOB limitado para tipos de dados binários.

  • O DMS não suporta a validação de dados para o Babelfish como fonte.

  • Para a configuração da tarefa do modo de preparação da tabela de destino, use somente os modos Não fazer nada ou Truncar. Não utilize o modo Abandonar tabelas no destino. Ao usar Drop tables on target, o DMS pode criar as tabelas com tipos de dados incorretos.

  • Ao usar a replicação contínua (CDC ou carga total e CDC), defina o atributo de conexão PluginName extra (ECA) como. TEST_DECODING

Removendo AWS DMS artefatos de um banco de dados de origem do PostgreSQL

Para capturar eventos DDL, AWS DMS cria vários artefatos no banco de dados PostgreSQL quando uma tarefa de migração é iniciada. Quando a tarefa é concluída, é recomendável remover esses artefatos.

Para remover os artefatos, execute os comandos a seguir (na ordem em que são exibidos), em que {AmazonRDSMigration} é o esquema no qual os artefatos foram criados: O descarte de um esquema deve ser feito com extremo cuidado. Nunca descarte um esquema operacional, especialmente um esquema que seja público.

drop event trigger awsdms_intercept_ddl;

O trigger do evento não pertence a um esquema específico.

drop function {AmazonRDSMigration}.awsdms_intercept_ddl() drop table {AmazonRDSMigration}.awsdms_ddl_audit drop schema {AmazonRDSMigration}

Definições de configuração adicionais ao utilizar um banco de dados PostgreSQL como origem do DMS

É possível adicionar definições de configuração ao migrar dados de um banco de dados PostgreSQL de duas maneiras:

  • É possível adicionar valores ao atributo de conexão adicional para capturar eventos de DDL e especificar o esquema no qual os artefatos de banco de dados DDL operacionais são criados. Para ter mais informações, consulte Configurações de endpoint e atributos extras de conexão (ECAs) ao usar o PostgreSQL como fonte de DMS.

  • É possível substituir os parâmetros da string de conexão. Escolha esta opção para realizar uma das seguintes ações:

    • Especifique AWS DMS os parâmetros internos. Esses parâmetros são raramente necessários e, portanto, não são expostos na interface do usuário.

    • Especifique valores de passagem (passthru) para o cliente de banco de dados específico. AWS DMS inclui parâmetros de passagem na cadeia de conexão passada para o cliente do banco de dados.

  • Ao utilizar o parâmetro REPLICA IDENTITY em nível de tabela nas versões 9.4 e superiores do PostgreSQL, é possível controlar as informações gravadas em logs de gravação antecipada (WALs). Em particular, ele faz isso para WALs que identificam linhas que são atualizadas ou excluídas. O REPLICA IDENTITY FULL registra os valores antigos de todas as colunas na linha. Utilize REPLICA IDENTITY FULL com cuidado para cada tabela, já que o FULL gera uma quantidade adicional de WALs que podem não ser necessários. Para obter mais informações, consulte ALTER TABLE-REPLICA IDENTITY

Usando a configuração de MapBooleanAsBoolean endpoint do PostgreSQL

É possível utilizar as configurações de endpoint do PostgreSQL para mapear um booleano como um booleano da origem PostgreSQL para um destino Amazon Redshift. Por padrão, um tipo BOOLEAN é migrado como varchar(5). É possível especificar MapBooleanAsBoolean para permitir que o PostgreSQL migre o tipo booleano como booleano, conforme mostrado no exemplo a seguir.

--postgre-sql-settings '{"MapBooleanAsBoolean": true}'

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

Como o MySQL não tem um tipo BOOLEAN, utilize uma regra de transformação em vez dessa configuração ao migrar dados BOOLEAN para o MySQL.

Configurações de endpoint e atributos extras de conexão (ECAs) ao usar o PostgreSQL como fonte de DMS

Você pode usar configurações de endpoint e atributos extras de conexão (ECAs) para configurar seu banco de dados de origem do PostgreSQL. Você especifica as configurações do endpoint ao criar o endpoint de origem usando o AWS DMS console ou usando o create-endpoint comando no AWS CLI, com a sintaxe --postgre-sql-settings '{"EndpointSetting": "value", ...}' JSON.

A tabela a seguir mostra as configurações de endpoint e ECAs que você pode usar com o PostgreSQL como fonte.

Nome do atributo Descrição

CaptureDDLs

Para capturar eventos DDL, AWS DMS cria vários artefatos no banco de dados PostgreSQL quando a tarefa é iniciada. É possível remover esses artefatos posteriormente, conforme descrito em Removendo AWS DMS artefatos de um banco de dados de origem do PostgreSQL.

Se o valor estiver definido como falso, você não precisará criar tabelas ou acionadores no banco de dados de origem.

Os eventos de DDL transmitidos são capturados.

Valor padrão: true

Valores válidos: verdadeiro/falso

Exemplo: --postgre-sql-settings '{"CaptureDDLs": true}'

ConsumeMonotonicEvents

Utilizado para controlar como as transações monolíticas com números de sequência de log (LSNs) duplicados são replicadas. Quando esse parâmetro é false, os eventos com LSNs duplicados são consumidos e replicados no destino. Quando esse parâmetro é true, somente o primeiro evento é replicado, enquanto eventos com LSNs duplicados não são consumidos nem replicados no destino.

Valor padrão: false

Valores válidos: falso/verdadeiro

Exemplo: --postgre-sql-settings '{"ConsumeMonotonicEvents": true}'

DdlArtifactsSchema

Define o esquema no qual os artefatos do banco de dados da DDL operacional são criados.

Valor padrão: público

Valores válidos: string

Exemplo: --postgre-sql-settings '{"DdlArtifactsSchema": "xyzddlschema"}'

ExecuteTimeout

Define o tempo limite da instrução do cliente para a instância do PostgreSQL, em segundos. O valor padrão é de 60 segundos.

Exemplo: --postgre-sql-settings '{"ExecuteTimeout": 100}'

FailTasksOnLobTruncation

Quando definido como true, esse valor causará uma falha na tarefa, se o tamanho real de uma coluna LOB for maior que o LobMaxSize especificado.

Se a tarefa for definida como modo LOB limitado e essa opção estiver definida como true, a tarefa falhará em vez de truncar os dados de LOB.

Valor padrão: falso

Valores válidos: booleano

Exemplo: --postgre-sql-settings '{"FailTasksOnLobTruncation": true}'

fetchCacheSize

Esse atributo de conexão adicional (ECA) define o número de linhas que o cursor buscará durante a operação de carga máxima. Dependendo dos recursos disponíveis na instância de replicação, é possível ajustar o valor para cima ou para baixo.

Valor padrão: 10000

Valores válidos: número

Exemplo de ECA: fetchCacheSize=10000;

HeartbeatFrequency

Define a frequência de pulsação WAL (em minutos).

Valor padrão: 5

Valores válidos: número

Exemplo: --postgre-sql-settings '{"HeartbeatFrequency": 1}'

HeartbeatSchema

Define o esquema no qual os artefatos de pulsação são criados.

Valor padrão: public

Valores válidos: string

Exemplo: --postgre-sql-settings '{"HeartbeatSchema": "xyzheartbeatschema"}'

MapJsonbAsClob

Por padrão, AWS DMS mapeia JSONB para NCLOB. É possível especificar MapJsonbAsClob para permitir que o PostgreSQL migre o tipo JSONB como CLOB.

Exemplo: --postgre-sql-settings='{"MapJsonbAsClob": "true"}'

MapLongVarcharAs

Por padrão, AWS DMS mapeia VARCHAR para WSTRING. É possível especificar MapLongVarcharAs para permitir que o PostgreSQL migre o tipo VARCHAR(N) (em que N é maior que 16387) para os seguintes tipos:

  • WSTRING

  • CLOB

  • NCLOB

Exemplo: --postgre-sql-settings='{"MapLongVarcharAs": "CLOB"}'

MapUnboundedNumericAsString

Esse parâmetro trata colunas com tipos de dados NUMERIC ilimitados como STRING para migrar com sucesso sem perder a precisão do valor numérico. Utilize esse parâmetro somente para replicação da origem do PostgreSQL para o destino do PostgreSQL ou bancos de dados compatíveis com o PostgreSQL.

Valor padrão: false

Valores válidos: false/true

Exemplo: --postgre-sql-settings '{"MapUnboundedNumericAsString": true}'

A utilização desse parâmetro pode resultar em alguma degradação do desempenho da replicação devido à transformação de numérico para string e de volta para numérico. Esse parâmetro é compatível para utilização pelo DMS versão 3.4.4 e superior

nota

Utilize MapUnboundedNumericAsString somente em endpoints de origem e de destino do PostgreSQL juntos.

A utilização de MapUnboundedNumericAsString em endpoints PostgreSQL de origem restringe a precisão a 28 durante a CDC. A utilização de MapUnboundedNumericAsString em endpoints de destino migra os dados com Precisão 28 Escala 6.

Não utilize MapUnboundedNumericAsString com destinos que não sejam do PostgreSQL.

PluginName

Especifica o plug-in a ser utilizado para criar um slot de replicação.

Valores válidos: pglogical, test_decoding

Exemplo: --postgre-sql-settings '{"PluginName": "test_decoding"}'

SlotName

Define o nome de um slot de replicação lógica criado anteriormente para uma carga CDC da instância do PostgreSQL de origem.

Quando usado com o parâmetro de CdcStartPosition solicitação de AWS DMS API, esse atributo também permite o uso de pontos iniciais nativos do CDC. O DMS verifica se o slot de replicação lógica especificado existe antes de iniciar a tarefa de carregamento da CDC. Ele também verifica se a tarefa foi criada com uma configuração válida de CdcStartPosition. Se o slot especificado não existir ou a tarefa não tiver uma configuração válida CdcStartPosition, o DMS gerará um erro.

Para obter mais informações sobre como configurar o parâmetro de solicitação CdcStartPosition, consulte Determinar um ponto de início nativo de CDC. Para obter mais informações sobre como utilizar CdcStartPosition, consulte a documentação das operações da API CreateReplicationTask, StartReplicationTask e ModifyReplicationTask na Referência da API do AWS Database Migration Service.

Valores válidos: string

Exemplo: --postgre-sql-settings '{"SlotName": "abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef"}'

unboundedVarcharMaxSize

Esse Atributo de Conexão Extra (ECA) define o tamanho máximo de uma coluna de dados definida como tipo VarChar sem um especificador de comprimento máximo. O padrão é 8000 bytes. O valor máximo é 10485760 bytes.

Limitações ao utilizar um banco de dados PostgreSQL como origem do DMS

As limitações a seguir se aplicam à utilização do PostgreSQL como uma origem do AWS DMS:

  • AWS DMS não funciona com o Amazon RDS for PostgreSQL 10.4 ou o Amazon Aurora PostgreSQL 10.4 como origem ou destino.

  • Uma tabela capturada deve ter uma chave primária. Se uma tabela não tiver uma chave primária, AWS DMS ignora as operações de registro DELETE e UPDATE dessa tabela. Como solução alternativa, consulte Ativar a captura de dados de alteração (CDC) utilizando a replicação lógica.

    Observação: não é recomendável migrar sem uma chave primária/índice exclusivo, caso contrário, limitações adicionais se aplicarão, como a capacidade de aplicação em “NÃO” lote, a capacidade de LOB completo, a validação de dados e a incapacidade de replicar para o destino do Redshift de forma eficiente.

  • AWS DMS ignora uma tentativa de atualizar um segmento de chave primária. Nesses casos, o destino identifica a atualização como uma que não atualizou nenhuma linha. No entanto, como os resultados da atualização de uma chave primária no PostgreSQL são imprevisíveis, nenhum registro é gravado na tabela de exceções.

  • AWS DMS não suporta a opção Iniciar alterações do processo a partir da execução do carimbo de data/hora.

  • AWS DMS não replica as alterações resultantes de operações de partição ou subpartição (ADD,DROP, ouTRUNCATE).

  • A replicação de várias tabelas com o mesmo nome, onde cada nome tem maiúsculas e minúsculas diferentes (por exemplo, table1, TABLE1 e Table1), pode causar um comportamento imprevisível. Devido a esse problema, AWS DMS não oferece suporte a esse tipo de replicação.

  • Na maioria dos casos, AWS DMS oferece suporte ao processamento de alterações das instruções DDL CREATE, ALTER e DROP para tabelas. AWS DMS não suporta esse processamento de alterações se as tabelas forem mantidas em uma função interna ou bloco de corpo de procedimento ou em outras construções aninhadas.

    Por exemplo, a seguinte alteração não é capturada.

    CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void LANGUAGE plpgsql AS $$ BEGIN create table attu.distributors1(did serial PRIMARY KEY,name varchar(40) NOT NULL); END; $$;
  • Atualmente, os tipos de dados boolean em uma origem do PostgreSQL são migrados para um destino do SQL Server como o tipo de dados bit com valores inconsistentes. Como solução alternativa, pré-crie a tabela com um tipo de VARCHAR(1) dados para a coluna (ou faça com que o AWS DMS crie a tabela). Depois, deixe o processamento downstream tratar um "F" como Falso e um "T" como Verdadeiro.

  • AWS DMS não oferece suporte ao processamento de alterações das operações TRUNCATE.

  • O tipo de dados OID LOB não é migrado para o destino.

  • AWS DMS suporta o tipo de dados PostGIS somente para migrações homogêneas.

  • Se a origem for um banco de dados PostgreSQL on-premises ou em uma instância do Amazon EC2, verifique se o plug-in de saída test_decoding está instalado no endpoint de origem. É possível encontrar esse plug-in no pacote contrib do PostgreSQL. Para obter mais informações sobre o plug-in de teste de decodificação, consulte a documentação do PostgreSQL.

  • AWS DMS não oferece suporte ao processamento de alterações para definir e cancelar a definição dos valores padrão da coluna (usando a cláusula ALTER COLUMN SET DEFAULT nas instruções ALTER TABLE).

  • AWS DMS não oferece suporte ao processamento de alterações para definir a nulidade da coluna (usando a cláusula ALTER COLUMN [SET|DROP] NOT NULL nas instruções ALTER TABLE).

  • Quando a replicação lógica está ativada, o número máximo de alterações mantidas na memória por transação é de 4 MB. Depois disso, as alterações são transferidas para o disco. Como resultado, ReplicationSlotDiskUsage aumenta e restart_lsn não avança até que a transação seja concluída ou interrompida e a reversão seja concluída. Como é uma transação longa, ela pode demorar muito tempo para reverter. Portanto, evite transações de longa duração ou muitas subtransações quando a replicação lógica estiver habilitada. Em vez disso, divida a transação em várias transações menores.

    Nas versões 13 e posteriores do Aurora PostgreSQL, você pode ajustar o logical_decoding_work_mem parâmetro para controlar quando o DMS derrama dados alterados para o disco. Para ter mais informações, consulte Derrame arquivos no Aurora PostgreSQL.

  • Uma tabela com o tipo de dados ARRAY deve ter uma chave primária. Uma tabela com um tipo de dados ARRAY sem uma chave primária é suspensa durante a carga máxima.

  • AWS DMS não oferece suporte à replicação de tabelas particionadas. Quando uma tabela particionada é detectada, ocorre o seguinte:

    • O endpoint relata uma lista de tabelas pai e filho.

    • AWS DMS cria a tabela no destino como uma tabela normal com as mesmas propriedades das tabelas selecionadas.

    • Se a tabela pai do banco de dados de origem tiver o mesmo valor de chave primária que suas tabelas filhas, um erro de "chave duplicada" será gerado.

  • Para replicar tabelas particionadas de uma origem PostgreSQL para um destino PostgreSQL, primeiro crie manualmente as tabelas pai e filho no destino. Defina uma tarefa separada a fim de replicar nessas tabelas. Nesse caso, defina a configuração da tarefa como Truncar antes de carregar.

  • O tipo de dados NUMERIC do PostgreSQL não tem um tamanho fixo. Na transferência de dados do tipo NUMERIC sem precisão e escala, o DMS utiliza NUMERIC(28,6) (uma precisão de 28 e escala 6) por padrão. Por exemplo, o valor 0,611111104488373 da origem é convertido em 0,611111 no destino do PostgreSQL.

  • AWS DMS oferece suporte ao Aurora PostgreSQL Serverless V1 como fonte somente para tarefas de carga total. AWS DMS oferece suporte ao Aurora PostgreSQL Serverless V2 como fonte para carga total, carga total e tarefas CDC e somente CDC.

  • AWS DMS não suporta a replicação de uma tabela com um índice exclusivo criado com uma função de coalescência.

  • Ao utilizar o modo LOB, tanto a tabela de origem quanto a tabela de destino correspondente devem ter uma chave primária idêntica. Se uma das tabelas não tiver uma chave primária, o resultado das operações de registro DELETE e UPDATE será imprevisível.

  • Ao utilizar o recurso Carga paralela, a segmentação de tabelas de acordo com partições ou subpartições não é compatível. Para obter mais informações sobre Carga paralela, consulte Utilizar carga paralela para tabelas, visualizações e coleções selecionadas.

  • AWS DMS não oferece suporte a restrições diferidas.

  • AWS DMS a versão 3.4.7 suporta o PostgreSQL 14.x como fonte com estas limitações:

    • AWS DMS não suporta o processamento de alterações de confirmações em duas fases.

    • AWS DMS não oferece suporte à replicação lógica para transmitir transações longas em andamento.

  • AWS DMS não oferece suporte ao CDC para Amazon RDS Proxy for PostgreSQL como fonte.

  • Ao utilizar filtros de origem que não contêm uma coluna de chave primária, as operações DELETE não serão capturadas.

  • Se o banco de dados de origem também for um destino para outro sistema de replicação de terceiros, as alterações de DDL podem não ser migradas durante a CDC. Porque essa situação pode impedir que o acionador de eventos awsdms_intercept_ddl seja acionado. Para contornar a situação, modifique esse acionador no banco de dados de origem da seguinte maneira:

    alter event trigger awsdms_intercept_ddl enable always;
  • AWS DMS não oferece suporte ao CDC para o cluster de banco de dados Multi-AZ do Amazon RDS para PostgreSQL como fonte, pois os clusters de banco de dados Multi-AZ do RDS for PostgreSQL não oferecem suporte à replicação lógica.

Tipos de dados de origem para o PostgreSQL

A tabela a seguir mostra os tipos de dados de origem do PostgreSQL que são compatíveis com o AWS DMS uso e o mapeamento AWS DMS padrão para os tipos de dados.

Para obter informações sobre como visualizar o tipo de dados mapeado no destino, consulte a seção relativa ao endpoint de destino que você está usando.

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

Tipos de dados do PostgreSQL

Tipos de dados do DMS

INTEGER

INT4

SMALLINT

INT2

BIGINT

INT8

NUMERIC (p,s)

Se a precisão estiver entre 0 e 38, use NUMERIC.

Se a precisão for maior ou igual a 39, use STRING.

DECIMAL(P,S)

Se a precisão estiver entre 0 e 38, use NUMERIC.

Se a precisão for maior ou igual a 39, use STRING.

REAL

REAL4

DOUBLE

REAL8

SMALLSERIAL

INT2

SERIAL

INT4

BIGSERIAL

INT8

MONEY

NUMERIC(38,4)

O tipo de dados MONEY é mapeado para FLOAT no SQL Server.

CHAR

WSTRING (1)

CHAR(N)

WSTRING (n)

VARCHAR(N)

WSTRING (n)

TEXT

NCLOB

CITEXTO

NCLOB

BYTEA

BLOB

TIMESTAMP

DATETIME

TIMESTAMP WITH TIME ZONE

DATETIME

DATA

DATA

TIME

TIME

TIME WITH TIME ZONE

TIME

INTERVAL

STRING (128)—1 YEAR, 2 MONTHS, 3 DAYS, 4 HOURS, 5 MINUTES, 6 SECONDS

BOOLEAN

CHAR (5) falso ou verdadeiro

ENUM

STRING (64)

CIDR

STRING (50)

INET

STRING (50)

MACADDR

STRING (18)

BIT (n)

STRING (n)

BIT VARYING (n)

STRING (n)

UUID

STRING

TSVECTOR

CLOB

TSQUERY

CLOB

XML

CLOB

POINT

STRING (255) "(x,y)"

LINE

STRING (255) "(x,y,z)"

LSEG

STRING (255) "((x1,y1),(x2,y2))"

BOX

STRING (255) "((x1,y1),(x2,y2))"

PATH

CLOB "((x1,y1),(xn,yn))"

POLYGON

CLOB "((x1,y1),(xn,yn))"

CIRCLE

STRING (255) "(x,y),r"

JSON

NCLOB

JSONB

NCLOB

ARRAY

NCLOB

COMPOSITE

NCLOB

HSTORE

NCLOB

INT4RANGE

STRING (255)

INT8RANGE

STRING (255)

NUMRANGE

STRING (255)

STRRANGE

STRING (255)

Como trabalhar com tipos de dados de origem LOB para PostgreSQL

Os tamanhos de colunas do PostgreSQL afetam a conversão de tipos de dados LOB do PostgreSQL em tipos de dados do AWS DMS . Para trabalhar com isso, siga estas etapas para os seguintes tipos de dados do AWS DMS :

  • BLOB: defina Limitar tamanho de LOB em o valor de Tamanho máximo de LOB (KB) na criação da tarefa.

  • CLOB: a replicação trata cada caractere como um caractere UTF8. Portanto, localize o tamanho do texto de caracteres mais longo na coluna, mostrado aqui como max_num_chars_text. Utilize esse tamanho para especificar o valor de Limitar o tamanho do LOB em. Se os dados incluírem caracteres de 4 bytes, multiplique por 2 para especificar o valor de Limitar o valor de LOB em, que é em bytes. Nesse caso, Limitar o tamanho de LOB para será igual a max_num_chars_text multiplicado por 2.

  • NCLOB: a replicação trata cada caractere como um caractere de byte duplo. Portanto, localize o tamanho do texto de caracteres mais longo na coluna (max_num_chars_text) e multiplique por 2. Faça isso para especificar o valor de Limitar o tamanho do LOB em. Nesse caso, Limitar o tamanho de LOB para será igual a max_num_chars_text multiplicado por 2. Se os dados incluírem caracteres de 4 bytes, multiplique por 2 novamente. Nesse caso, Limitar o tamanho de LOB para será igual a max_num_chars_text multiplicado por 4.