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á.
Usando um SQL banco de dados Postgre como fonte AWS DMS
Você pode migrar dados de um ou vários SQL bancos de dados Postgre usando o. AWS DMS Com um SQL banco de dados Postgre como fonte, você pode migrar dados para outro SQL banco de dados Postgre ou para um dos outros bancos de dados compatíveis.
Para obter informações sobre as versões do Postgre SQL que são AWS DMS suportadas como fonte, consulteFontes para AWS DMS.
AWS DMS suporta Postgre SQL para esses tipos de bancos de dados:
-
Bancos de dados on-premises
-
Bancos de dados em uma EC2 instância da Amazon
-
Bancos de dados em uma instância de RDS banco de dados Amazon
-
Bancos de dados em uma instância de banco de dados com base no Amazon Aurora SQL Postgre -Compatible Edition
-
Bancos de dados em uma instância de banco de dados com base no Amazon Aurora Postgre SQL -Compatible Serverless Edition
nota
DMSoferece suporte ao Amazon Aurora Postgre SQL — Serverless V1 como fonte somente para carga total. Mas você pode usar o Amazon Aurora Postgre SQL — Serverless V2 como fonte para carga total, carga total + e somente tarefas. CDC CDC
Versão SQL fonte do Postgre |
AWS DMS versão para usar |
---|---|
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. |
Você pode usar Secure Socket Layers (SSL) para criptografar conexões entre seu SQL endpoint Postgre e a instância de replicação. Para obter mais informações sobre como usar SSL com um SQL endpoint Postgre, consulte. Usando SSL com AWS Database Migration Service
Como requisito adicional de segurança ao usar o Postgre SQL como fonte, a conta de usuário especificada deve ser um usuário registrado no banco de dados do PostgreSQL.
Para configurar um SQL banco de dados Postgre como um endpoint de AWS DMS origem, faça o seguinte:
-
Crie um SQL usuário do Postgre com as permissões apropriadas para fornecer AWS DMS acesso ao seu banco de dados de SQL origem do Postgre.
nota
-
Se o banco de dados de SQL origem do Postgre for autogerenciado, consulte Trabalhando com SQL bancos de dados Postgre autogerenciados como fonte em AWS DMS para obter mais informações.
-
Se seu banco de dados de SQL origem do Postgre for gerenciado pela AmazonRDS, consulte Trabalhando com SQL bancos AWS de dados Postgre gerenciados como fonte DMS para obter mais informações.
-
-
Crie um endpoint de SQL origem Postgre que esteja em conformidade com a configuração de banco de dados SQL Postgre escolhida.
-
Crie uma tarefa ou um conjunto de tarefas para migrar as tabelas.
Para criar uma full-load-only tarefa, nenhuma configuração adicional de endpoint é necessária.
Antes de criar uma tarefa para captura de dados de alteração (uma CDC tarefa e CDC somente uma carga completa), consulte Habilitando CDC o uso de um SQL banco de dados Postgre autogerenciado como fonte AWS DMS ou. Habilitando CDC com uma instância AWS de SQL banco de dados Postgre gerenciada com AWS DMS
Tópicos
- Trabalhando com SQL bancos de dados Postgre autogerenciados como fonte em AWS DMS
- Trabalhando com SQL bancos AWS de dados Postgre gerenciados como fonte DMS
- Habilitando a captura de dados de alteração (CDC) usando replicação lógica
- Usando pontos de CDC partida nativos para configurar uma CDC carga de uma fonte Postgre SQL
- Migrando do Postgre SQL para o Postgre usando SQL AWS DMS
- Migração do Babelfish para o Amazon Aurora Postgre usando SQL AWS DMS
- Removendo AWS DMS artefatos de um banco de dados de origem do Postgre SQL
- Configurações adicionais ao usar um SQL banco de dados Postgre como fonte DMS
- Usando a configuração do SQL endpoint MapBooleanAsBoolean Postgre
- Configurações do endpoint e atributos extras de conexão (ECAs) ao usar o Postgre SQL como fonte DMS
- Limitações no uso de um SQL banco de dados Postgre como fonte DMS
- Tipos de dados de origem para Postgre SQL
Trabalhando com SQL bancos de dados Postgre autogerenciados como fonte em AWS DMS
Com um SQL banco de dados Postgre autogerenciado como fonte, você pode migrar dados para outro SQL banco de dados Postgre ou para um dos outros bancos de dados de destino suportados pelo. AWS DMS A fonte do banco de dados pode ser um banco de dados local ou um mecanismo autogerenciado em execução em uma instância da AmazonEC2. Você pode usar uma instância de banco de dados tanto para tarefas de carga completa quanto para tarefas de captura de dados de alteração (CDC).
Pré-requisitos para usar um banco de dados SQL Postgre autogerenciado como fonte AWS DMS
Antes de migrar dados de um banco de dados de SQL origem autogerenciado do Postgre, faça o seguinte:
-
Certifique-se de usar um SQL banco de dados Postgre com versão 9.4.x ou superior.
-
Para tarefas completas ou CDC somente CDC tarefas, conceda permissões de superusuário para a conta de usuário especificada para o banco de dados de origem do SQL Postgre. 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 com carga completa, a conta do usuário precisa de SELECT permissões 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 SQL de
pg_hba.conf
configuração do Postgre controla a autenticação do cliente. (HBAsignifica 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 CDC o uso de um SQL banco de dados Postgre autogerenciado como fonte AWS DMS
nota
Algumas AWS DMS transações ficam inativas por algum tempo antes que o DMS mecanismo as use novamente. Ao usar o parâmetro idle_in_transaction_session_timeout
nas SQL versões 9.6 e posteriores do Postgre, você pode 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 CDC o uso de um SQL banco de dados Postgre autogerenciado como fonte AWS DMS
AWS DMS suporta captura de dados de alteração (CDC) usando replicação lógica. Para habilitar a replicação lógica de um banco de dados de SQL origem autogerenciado do Postgre, defina os seguintes parâmetros e valores no postgresql.conf
arquivo de configuração:
-
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 descarta DMS automaticamente os slots de replicação quando a tarefa é excluída, se o slot for DMS criado. -
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 SQL banco de dados Postgre local é 60000 milissegundos (60 segundos). Definir o valor como 0 (zero) desativa o mecanismo de tempo limite e é uma configuração válida para. DMSAo
wal_sender_timeout
definir um valor diferente de zero, uma DMS tarefa CDC requer no mínimo 10.000 milissegundos (10 segundos) e falhará se o valor for menor que 10000. Mantenha o valor em menos de 5 minutos para evitar atrasos durante um failover Multi-AZ de uma instância de DMS replicação.
Alguns parâmetros são estáticos, e você só pode defini-los na inicialização do servidor. Quaisquer alterações em suas entradas no arquivo de configuração (para um banco de dados autogerenciado) ou no grupo de parâmetros do banco de dados (RDSpara um SQL banco de dados Postgre) são ignoradas até que o servidor seja reiniciado. Para obter mais informações, consulte a SQLdocumentação do Postgre
Para obter mais informações sobre como habilitarCDC, consulteHabilitando a captura de dados de alteração (CDC) usando replicação lógica.
Trabalhando com SQL bancos AWS de dados Postgre gerenciados como fonte DMS
Você pode usar uma instância AWS de SQL banco de dados Postgre gerenciada como fonte para. AWS DMS Você pode realizar tarefas de carga total e alterar tarefas de captura de dados (CDC) usando uma fonte AWS gerenciada do SQL Postgre.
Pré-requisitos para usar um banco de dados SQL Postgre AWS gerenciado como fonte DMS
Antes de migrar dados de um banco de dados de SQL origem AWS gerenciado pelo Postgre, faça o seguinte:
-
Recomendamos que você use uma conta de AWS usuário com as permissões mínimas necessárias para a SQL instância de banco de dados Postgre como a conta de usuário para o endpoint de SQL origem do Postgre. AWS DMS A utilização de uma conta mestre não é recomendada. A conta deve ter o perfil
rds_superuser
e o perfilrds_replication
. O perfilrds_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 Migração de um SQL banco de dados Amazon RDS para Postgre sem usar a conta de usuário principal.
-
Se seu banco de dados de origem estiver em uma nuvem privada virtual (VPC), escolha o grupo de VPC segurança 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 DMS replicação se conecte com êxito à instância de banco de dados de origem. Quando o banco de dados e a instância DMS de replicação estiverem no mesmo VPC lugar, 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 DMS mecanismo as use novamente. Ao usar o parâmetro idle_in_transaction_session_timeout
nas SQL versões 9.6 e posteriores do Postgre, você pode 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 CDC com uma instância AWS de SQL banco de dados Postgre gerenciada com AWS DMS
AWS DMS é compatível CDC com SQL bancos de dados Amazon RDS Postgre 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 Postgre. SQL
Você não pode usar réplicas de SQL leitura do RDS Postgre para CDC (replicação contínua).
Versão Postgre SQL |
AWS DMS suporte de carga total |
AWS DMS CDCapoio |
---|---|---|
Aurora Postgre SQL versão 2.1 com compatibilidade com Postgre SQL 10.5 (ou inferior) |
Sim |
Não |
Aurora Postgre SQL versão 2.2 com compatibilidade com Postgre SQL 10.6 (ou superior) |
Sim |
Sim |
RDSpara Postgre SQL com compatibilidade com Postgre SQL 10.21 (ou superior) |
Sim |
Sim |
Para habilitar a replicação lógica para uma instância de banco de RDS dados Postgre SQL
-
Use a conta de usuário AWS principal para a SQL instância de banco de dados Postgre como a conta de usuário para o endpoint de SQL origem do Postgre. A conta de usuário principal tem as funções necessárias que permitem sua configuraçãoCDC.
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 obter mais informações, consulte Migração de um SQL banco de dados Amazon RDS para Postgre sem usar a conta de usuário principal.
-
Defina o
rds.logical_replication
parâmetro em seu grupo de CLUSTER parâmetros de 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âmetroswal_level
,max_wal_senders
,max_replication_slots
emax_connections
. Essas alterações de parâmetros podem aumentar a geração de log (WAL) de gravação antecipada, portanto, só são definidasrds.logical_replication
quando você usa slots de replicação lógica. -
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 SQL banco AWS de dados Postgre gerenciado é 30.000 milissegundos (30 segundos). Definir o valor como 0 (zero) desativa o mecanismo de tempo limite e é uma configuração válida para. DMSAo
wal_sender_timeout
definir um valor diferente de zero, uma DMS tarefa CDC requer um mínimo de 10.000 milissegundos (10 segundos) e falhará se o valor estiver entre 0 e 10000. Mantenha o valor em menos de 5 minutos para evitar atrasos durante um failover Multi-AZ de uma instância de DMS replicação. -
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 demax_logical_replication_workers
autovacuum_max_workers
emax_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 demax_worker_processes
mais alto que o padrão. -
Ao usar o Aurora Postgre SQL como fonte comCDC, defina como.
synchronous_commit
ON
Migração de um SQL banco de dados Amazon RDS para Postgre sem usar a conta de usuário principal
Em alguns casos, você pode não usar a conta de usuário principal para a SQL instância de banco de dados Amazon RDS Postgre que você está usando como fonte. Nesses casos, você cria vários objetos para capturar 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
-
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
-
Faça login na SQL instância de banco de dados Postgre usando a conta de usuário que não seja a conta principal, aqui a
conta.OtherThanMaster
-
Crie a tabela
awsdms_ddl_audit
executando o comando a seguir, substituindo
no código seguinte pelo nome do esquema a ser utilizado.objects_schema
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 ); -
Crie o perfil
awsdms_intercept_ddl
executando o comando a seguir, substituindo
no código seguinte pelo nome do esquema a ser utilizado.objects_schema
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 intoobjects_schema
.awsdms_ddl_audit values ( default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry ); delete fromobjects_schema
.awsdms_ddl_audit; end if; END; $$; -
Faça logout da conta
e faça login com uma conta que tenha o perfilOtherThanMaster
rds_superuser
atribuído. -
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(); -
Certifique-se de que todos os usuários e funções que acessam esses eventos tenham as DDL permissões 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
.
Habilitando a captura de dados de alteração (CDC) usando replicação lógica
Você pode usar o recurso de replicação lógica nativa SQL do Postgre para permitir a captura de dados de alteração (CDC) durante a migração do banco de dados para fontes do SQL Postgre. Você pode usar esse recurso com uma instância de banco de dados Postgre autogerenciada SQL e também com uma instância de banco de dados Amazon RDS for Postgre SQLSQL. 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 Postgre SQL de origem.
AWS DMS suporta CDC SQL tabelas Postgre com chaves primárias. Se uma tabela não tiver uma chave primária, os registros de gravação antecipada (WAL) não incluirão uma imagem anterior da linha do banco de dados. Nesse caso, não é DMS possível 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 obter mais informações, consulte Configurações adicionais ao usar um SQL banco de dados Postgre como fonte DMS.
nota
REPLICAIDENTITYFULLé compatível com um plug-in de decodificação lógica, mas não é compatível com um plug-in pglogical. Para obter mais informações, consulte a Documentação do pglogical
Para carga total CDC e CDC somente tarefas, AWS DMS usa slots de replicação lógica para reter WAL os registros para replicação até que os registros sejam decodificados. Na reinicialização (não na retomada) de uma carga e CDC tarefa completas ou de uma CDC tarefa, o slot de replicação é recriado.
nota
Para decodificação lógica, DMS usa test_decoding ou plugin pglogical. Se o plug-in pglogical estiver disponível em um SQL banco de dados Postgre de origem, DMS cria um slot de replicação usando pglogical, caso contrário, um plug-in test_decoding será usado. Para obter mais informações sobre o plug-in test_decoding, consulte a documentação do Postgre. SQL
Se o parâmetro do banco de dados max_slot_wal_keep_size
for definido como um valor não padrão e o restart_lsn
de um slot de replicação ficar atrás do atual LSN em mais do que esse tamanho, a DMS tarefa falhará devido à remoção dos WAL arquivos necessários.
Configurar o plug-in pglogical
Implementado como uma SQL extensão do Postgre, o plug-in pglogical é um sistema de replicação lógica e modelo para replicação seletiva de dados. A tabela a seguir identifica as versões de origem do SQL banco de dados Postgre que suportam o plug-in pglogical.
Fonte Postger SQL |
Compatível com o pglogical |
---|---|
Postger SQL 9.4 autogerenciado ou superior |
Sim |
Amazon RDS Postger SQL 9.5 ou inferior |
Não |
Amazon RDS Postger SQL 9.6 ou superior |
Sim |
Aurora Postger SQL 1.x a 2.5.x |
Não |
Aurora Postgre SQL 2.6.x ou superior |
Sim |
Aurora Postgre SQL 3.3.x ou superior |
Sim |
Antes de configurar o pglogical para uso com AWS DMS, primeiro habilite a replicação lógica para alterar a captura de dados (CDC) em seu banco de dados de origem do Postgre. SQL
-
Para obter informações sobre como habilitar a replicação lógica CDC em bancos de dados de SQL origem Postgre autogerenciados, consulte Habilitando CDC o uso de um SQL banco de dados Postgre autogerenciado como fonte AWS DMS
-
Para obter informações sobre como habilitar a replicação lógica para CDC bancos de dados AWS de SQL origem Postgre não gerenciados, consulte. Habilitando CDC com uma instância AWS de SQL banco de dados Postgre gerenciada com AWS DMS
Depois que a replicação lógica for habilitada em seu banco de dados de SQL origem Postgre, use as etapas a seguir para configurar o pglogical para uso com. DMS
Para usar o plug-in pglogical para replicação lógica em um banco de dados de origem SQL Postgre com AWS DMS
-
Crie uma extensão pglógica em seu banco de dados SQL Postgre de origem:
-
Defina o parâmetro correto:
-
Para SQL bancos de dados Postgre autogerenciados, defina o parâmetro do banco de dados.
shared_preload_libraries= 'pglogical'
-
Para Postgre SQL nos bancos de dados Amazon RDS e Amazon Aurora SQL Postgre -Compatible Edition, defina o
shared_preload_libraries
parâmetro como no mesmo grupopglogical
de parâmetros. RDS
-
-
Reinicie seu banco de dados de SQL origem do Postgre.
-
No SQL banco de dados Postgre, execute o comando,
create extension pglogical;
-
-
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 SQL origem do Postgre.
nota
Se você não habilitar o pglogical em seu banco de dados de SQL origem do Postgre, AWS DMS usa o test_decoding
plug-in 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.
Usando pontos de CDC partida nativos para configurar uma CDC carga de uma fonte Postgre SQL
Para habilitar pontos CDC iniciais nativos com o Postgre SQL como fonte, defina o atributo de conexão slotName
extra com 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 Postgre SQL grava as alterações do banco de dados em WAL arquivos que são descartados somente depois de ler AWS DMS com êxito as alterações do slot de replicação lógica. 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. Recomendamos que você defina alarmes de uso de espaço na SQL instância de origem do Postgre ao usar slots de replicação lógica. Para obter mais informações sobre como definir o atributo de conexão adicional slotName
, consulte Configurações do endpoint e atributos extras de conexão (ECAs) ao usar o Postgre SQL como fonte DMS.
O procedimento a seguir demonstra essa abordagem com mais detalhes.
Para usar um ponto CDC inicial nativo para configurar uma CDC carga de um endpoint de SQL origem do Postgre
-
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
. -
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;
-
Crie uma nova tarefa CDC somente usando o console AWS CLI ou AWS DMS API. Por exemplo, usando o, CLI você pode executar o
create-replication-task
comando a seguir.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
ereplication-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çãopg_replication_slots
no banco de dados de origem ou visualize os detalhes do console da tarefa pai na etapa 1. Para obter mais informações, consulte Determinar um ponto de início nativo de CDC.
Para ativar o modo de CDC início personalizado ao criar uma nova tarefa CDC somente usando o AWS DMS console, faça o seguinte:
Na seção Configurações da tarefa, para o modo de CDC início das transações de origem, escolha Ativar modo de CDC início personalizado.
Em Ponto CDC inicial 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 CDC tarefa é 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 usar pontos de CDC partida nativos com o plug-in pglogical e quiser usar um novo slot de replicação, conclua as etapas de configuração a seguir antes de criar uma tarefa. CDC
Para usar um novo slot de replicação não criado anteriormente como parte de outra tarefa DMS
-
Crie um slot de replicação, conforme mostrado a seguir:
SELECT * FROM pg_create_logical_replication_slot('
replication_slot_name
', 'pglogical'); -
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 CDC inicial nativa de uma CDC tarefa criada após o slot de replicação não pode ser mais antiga do que o valor confirmed_flush_lsn.
Para obter informações sobre os valores de restart_lsn e de confirmed_flush_lsn, consulte pg_replication_slots
-
Crie um nó pglogical.
SELECT pglogical.create_node(node_name := '
node_name
', dsn := 'your_dsn_name
'); -
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); -
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); -
Defina o atributo de conexão extra (ECA) a seguir ao criar seu endpoint de origem.
PluginName=PGLOGICAL;slotName=
slot_name
;
Agora você pode criar uma CDC única tarefa com um ponto inicial SQL nativo do Postgre usando 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 Postgre SQL para o Postgre usando SQL AWS DMS
Quando você migra de um mecanismo de banco de dados diferente do Postgre SQL para um SQL banco de dados Postgre, AWS DMS é quase sempre a melhor ferramenta de migração a ser usada. Mas quando você está migrando de um banco de dados Postgre para um SQL banco de dados PostgreSQL, as SQL ferramentas do Postgre podem ser mais eficazes.
Usando ferramentas SQL nativas do Postgre para migrar dados
Recomendamos que você use as ferramentas de migração SQL de banco de dados Postgre, como pg_dump
nas seguintes condições:
-
Você tem uma migração homogênea, na qual você está migrando de um banco de dados Postgre de origem para um SQL banco de dados Postgre de destino. SQL
-
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 usa o COPY comando para criar um esquema e um despejo de dados de um banco de dados Postgre. SQL 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 você estiver migrando dados de um banco de dados de SQL origem do Postgre executado em EC2 um SQL destino do Amazon RDS for Postgre, poderá usar o plug-in pglogical.
Para obter mais informações sobre a importação de um SQL banco de dados Postgre na Amazon RDS para Postgre ou Amazon SQL Aurora Postgre -Compatible Edition, consulte. SQL https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html
Usando DMS para migrar dados do Postgre para o Postgre SQL SQL
AWS DMS pode migrar dados, por exemplo, de um SQL banco de dados Postgre de origem que está no local para uma instância Amazon RDS for Postgre ou SQL Aurora Postgre de destino. SQL Os tipos de SQL dados principais ou básicos do Postgre geralmente migram com sucesso.
nota
Ao replicar tabelas particionadas de uma SQL fonte do Postgre para o SQL destino do Postgre, você não precisa mencionar a tabela principal como parte dos critérios de seleção na tarefa. 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 eJSON, podem ser migrados com sucesso 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 Postgre SQL NUMERIC (p, s) não especifica nenhuma precisão e escala. Para DMS as versões 3.4.2 e anteriores, DMS usa 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 Postgre. SQL
-
Uma tabela com um tipo de ARRAY dados deve ter uma chave primária. Uma tabela com um tipo de ARRAY dados sem uma chave primária é suspensa durante o carregamento total.
A tabela a seguir mostra os tipos de SQL dados de origem do Postgre e se eles 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(ps, 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 | |||
DATE | 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 GIS pós-espaciais | ||
LINE | X | |||
LSEG | X | |||
BOX | X | |||
PATH | X | |||
POLYGON | X | Tipo de dados GIS pós-espaciais | ||
CIRCLE | X | |||
JSON | X | |||
ARRAY | X | Requer chave primária | ||
COMPOSITE | X | |||
RANGE | X | |||
LINESTRING | X | Tipo de dados GIS pós-espaciais | ||
MULTIPOINT | X | Tipo de dados GIS pós-espaciais | ||
MULTILINESTRING | X | Tipo de dados GIS pós-espaciais | ||
MULTIPOLYGON | X | Tipo de dados GIS pós-espaciais | ||
GEOMETRYCOLLECTION | X | Tipo de dados GIS pós-espaciais |
Migrando tipos de dados GIS espaciais pós-espaciais
Dados espaciais identificam a informação de geometria de um objeto ou local no espaço. Os bancos de dados SQL relacionais de objetos Postgre oferecem suporte a tipos de dados pós-espaciaisGIS.
Antes de migrar objetos de dados SQL espaciais do Postgre, certifique-se de que o GIS plug-in Post esteja ativado em 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 SQL destino do Postgre.
Para migrações SQL homogêneas do Postgre SQL para o Postgre, AWS DMS suporta a migração de tipos e subtipos de objetos de dados GIS geométricos e geográficos (coordenadas geodésicas) do Post, como os seguintes:
-
POINT
-
LINESTRING
-
POLYGON
-
MULTIPOINT
-
MULTILINESTRING
-
MULTIPOLYGON
-
GEOMETRYCOLLECTION
Migração do Babelfish para o Amazon Aurora Postgre usando SQL AWS DMS
Você pode migrar as tabelas de SQL origem do Babelfish for Aurora Postgre para qualquer endpoint de destino compatível usando o. AWS DMS
Ao criar seu endpoint de AWS DMS origem usando o DMS console ou os CLI comandosAPI, você define a origem como Amazon Aurora SQL Postgre 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 T- do Babelfish de origem. SQL Em vez de usar a porta Babelfish1433
, use a TCP porta Aurora Postgre. SQL TCP 5432
Você deve criar suas tabelas antes de migrar dados para garantir que DMS usa os tipos de dados e metadados de tabela corretos. Se você não criar suas tabelas no destino antes de executar a migraçã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 o DMS uso das tabelas de destino pré-criadas.
Se você definir o modo de migração de vários bancos de dados ao definir seu SQL cluster Babelfish para Postgre, adicione uma regra de transformação que renomeia o nome do esquema para o esquema T-. SQL Por exemplo, se o nome do SQL esquema T fordbo
, e o nome do esquema do Babelfish para Postgre formydb_dbo
, renomeie o SQL esquema para usar uma regra de transformação. dbo
Para encontrar o nome do SQL esquema Postgre, 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 SQL esquemas do Postgre têm um one-to-one 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 SQL origem Postgre com tabelas Babelfish
As seguintes limitações se aplicam ao usar um endpoint de SQL origem do Postgre com tabelas do Babelfish:
DMSsuporta apenas a migração do Babelfish versão 16.2/15.6 e posterior e da versão 3.5.3 e DMS posterior.
DMSnã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 BYTEA dados, DMS as converte para o tipo de
varbinary(max)
dados ao migrar para o SQL Server como destino.DMSnão suporta o LOB modo Completo para tipos de dados binários. Em vez disso, use o LOB modo limitado para tipos de dados binários.
DMSnão suporta 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, DMS pode criar as tabelas com tipos de dados incorretos.
Ao usar a replicação contínua (CDCou carga total eCDC), defina o atributo de conexão
PluginName
extra (ECA) comoTEST_DECODING
.-
DMSnão suporta replicação (CDCou carga total eCDC) da tabela particionada para o Babelfish como fonte.
Removendo AWS DMS artefatos de um banco de dados de origem do Postgre SQL
Para capturar DDL eventos, AWS DMS cria vários artefatos no SQL banco de dados Postgre 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}
Configurações adicionais ao usar um SQL banco de dados Postgre como fonte DMS
Você pode adicionar configurações adicionais ao migrar dados de um SQL banco de dados Postgre de duas maneiras:
-
Você pode adicionar valores ao atributo de conexão extra para capturar DDL eventos e especificar o esquema no qual os artefatos do DDL banco de dados operacional são criados. Para obter mais informações, consulte Configurações do endpoint e atributos extras de conexão (ECAs) ao usar o Postgre SQL como fonte 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.
-
-
Usando o parâmetro
REPLICA IDENTITY
em nível de tabela nas SQL versões 9.4 e posteriores do Postgre, você pode controlar as informações gravadas em registros de gravação antecipada (). WALs Em particular, ele faz isso para identificar linhas WALs que são atualizadas ou excluídas.REPLICA IDENTITY FULL
registra os valores antigos de todas as colunas na linha. UseREPLICA IDENTITY FULL
com cuidado para cada tabela, pois podeFULL
gerar um número extra WALs que pode não ser necessário. Para obter mais informações, consulte ALTERTABLE- REPLICA IDENTITY
Usando a configuração do SQL endpoint MapBooleanAsBoolean Postgre
Você pode usar as configurações de SQL endpoint do Postgre para mapear um booleano como booleano da sua fonte do Postgre para SQL um destino do Amazon Redshift. Por padrão, um BOOLEAN tipo é migrado como varchar (5). Você pode especificar MapBooleanAsBoolean
para permitir que o Postgre SQL 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 Meu SQL não tem um BOOLEAN tipo, use uma regra de transformação em vez dessa configuração ao migrar BOOLEAN dados para MeuSQL.
Configurações do endpoint e atributos extras de conexão (ECAs) ao usar o Postgre SQL como fonte DMS
Você pode usar configurações de endpoint e atributos extras de conexão (ECAs) para configurar seu banco de dados de SQL origem do Postgre. 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 --postgre-sql-settings '{"
JSON sintaxe.EndpointSetting"
:
"value"
, ...
}'
A tabela a seguir mostra as configurações do endpoint e ECAs que você pode usar com o Postgre SQL como fonte.
Nome do atributo | Descrição |
---|---|
|
Para capturar DDL eventos, AWS DMS cria vários artefatos no SQL banco de dados Postgre 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 Postgre SQL. Se o valor estiver definido como falso, você não precisará criar tabelas ou acionadores no banco de dados de origem. Os DDL eventos transmitidos são capturados. Valor padrão: Valores válidos: verdadeiro/falso Exemplo: |
|
Usado para controlar como as transações monolíticas com números de sequência de log duplicados (LSNs) são replicadas. Quando esse parâmetro é Valor padrão: Valores válidos: falso/verdadeiro Exemplo: |
|
Define o esquema no qual os artefatos do DDL banco de dados operacional são criados. Valor padrão: público Valores válidos: string Exemplo: |
|
Define o tempo limite da declaração do cliente para a SQL instância do Postgre, em segundos. O valor padrão é de 60 segundos. Exemplo: |
|
Quando definido como Se a tarefa estiver definida LOB no modo Limitado e essa opção for definida como verdadeira, a tarefa falhará em vez de truncar os LOB dados. Valor padrão: falso Valores válidos: booleano Exemplo: |
|
Esse atributo de conexão extra (ECA) define o número de linhas que o cursor buscará durante a operação de carga total. Dependendo dos recursos disponíveis na instância de replicação, é possível ajustar o valor para cima ou para baixo. Valor padrão: Valores válidos: número ECAExemplo: |
|
O recurso WAL heartbeat imita uma transação fictícia, para que os slots de replicação lógica ociosos não guardem WAL registros antigos, o que resulta em situações de armazenamento cheio na origem. Essa pulsação mantém Valor padrão: Valores válidos: verdadeiro/falso Exemplo: |
|
Define a frequência do WAL batimento cardíaco (em minutos). Valor padrão: Valores válidos: número Exemplo: |
|
Define o esquema no qual os artefatos de pulsação são criados. Valor padrão: Valores válidos: string Exemplo: |
|
Por padrão, AWS DMS mapeia JSONB paraNCLOB. Você pode especificar Exemplo: |
|
Por padrão, AWS DMS mapeia VARCHAR paraWSTRING. Você pode especificar
Exemplo: |
|
Esse parâmetro trata as colunas com tipos de NUMERIC dados ilimitados como STRING forma de migrar com sucesso sem perder a precisão do valor numérico. Use esse parâmetro somente para replicação da SQL origem do Postgre para o SQL destino do Postgre ou bancos de dados compatíveis com o Postgre. SQL Valor padrão: Valores válidos: Exemplo: 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 é suportado para uso pela DMS versão 3.4.4 e superior notaUse somente O uso de Não use |
|
Especifica o plug-in a ser utilizado para criar um slot de replicação. Valores válidos: Exemplo: |
|
Define o nome de um slot de replicação lógica criado anteriormente para uma CDC carga da instância de SQL origem do Postgre. Quando usado com o parâmetro de AWS DMS API Para obter mais informações sobre como configurar o parâmetro de solicitação Valores válidos: string Exemplo: |
|
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 no uso de um SQL banco de dados Postgre como fonte DMS
As seguintes limitações se aplicam ao usar o Postgre SQL como fonte para AWS DMS:
-
AWS DMS não funciona com o Amazon RDS for Postgre SQL 10.4 ou o Amazon Aurora SQL Postgre 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 DELETE e UPDATE registra as operações dessa tabela. Como solução alternativa, consulte Habilitar a captura de dados de alteração (CDC) usando a replicação lógica.
Observação: não recomendamos migrar sem uma chave primária/índice exclusivo, caso contrário, limitações adicionais se aplicam, como “NÃO”, capacidade de aplicação em lote, LOB capacidade completa, validação de dados e incapacidade de replicar para o 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 Postgre SQL 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 timestamp.
-
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 em que cada nome tem um caso diferente (por exemplo, tabela1 e Tabela1) pode TABLE1 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 de DROP DDL instruções CREATEALTER, e 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,
boolean
os tipos de dados em uma SQL fonte Postgre são migrados para um destino de SQL servidor como tipo debit
dados com valores inconsistentes. Como solução alternativa, pré-crie a tabela com um tipo deVARCHAR(1)
dados para a coluna (ou AWS DMS crie a tabela). Depois, deixe o processamento downstream tratar um "F" como Falso e um "T" como Verdadeiro. -
AWS DMS não suporta o processamento de alterações das TRUNCATE operações.
-
O tipo de OID LOB dados não é migrado para o destino.
AWS DMS suporta o tipo de GIS dados Post somente para migrações homogêneas.
-
Se sua fonte for um SQL banco de dados Postgre local ou em uma EC2 instância da Amazon, certifique-se de que o plug-in de saída test_decoding esteja instalado no seu endpoint de origem. Você pode encontrar esse plugin no pacote Postgre SQL contrib. Para obter mais informações sobre o plug-in de decodificação de teste, consulte a documentação do Postgre. SQL
-
AWS DMS não oferece suporte ao processamento de alterações para definir e desdefinir valores padrão da coluna (usando a ALTER COLUMN SET DEFAULT cláusula nas ALTER TABLE instruções).
-
AWS DMS não oferece suporte ao processamento de alterações para definir a nulidade da coluna (usando a NOT NULL cláusula ALTER COLUMN [SET|DROP] nas declaraçõ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 erestart_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 SQL versões 13 e posteriores do Aurora Postgre, você pode ajustar o
logical_decoding_work_mem
parâmetro para controlar quando os DMS derramamentos alteram os dados para o disco. Para obter mais informações, consulte Derrame arquivos no Aurora Postgre SQL. -
Uma tabela com um tipo de ARRAY dados deve ter uma chave primária. Uma tabela com um tipo de ARRAY dados sem uma chave primária é suspensa durante o carregamento total.
-
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 SQL fonte do Postgre para um SQL destino do Postgre, primeiro crie manualmente as tabelas principal e secundária 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 SQL
NUMERIC
dados do Postgre não tem tamanho fixo. Ao transferir dados que são de um tipo deNUMERIC
dados, mas sem precisão e escala, DMS usaNUMERIC(28,6)
(uma precisão de 28 e escala de 6) por padrão. Como exemplo, o valor 0,611111104488373 da origem é convertido em 0,611111 no destino do Postgre. SQL -
AWS DMS suporta o Aurora Postgre SQL Serverless V1 como fonte somente para tarefas de carga total. AWS DMS oferece suporte ao Aurora Postgre SQL Serverless V2 como fonte para tarefas de carga total, carga total e somente tarefas. CDC 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 usar o LOB modo, 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 DELETE e as operações de UPDATE registro serão imprevisíveis.
-
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 suporta restrições diferidas.
-
AWS DMS a versão 3.4.7 suporta o Postgre SQL 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 é compatível com CDC o Amazon RDS Proxy for Postgre SQL 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 seu banco de dados de origem também for o destino de outro sistema de replicação de terceiros, as DDL alterações talvez não sejam migradas durante o processo. 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 é compatível CDC com o cluster de banco de dados Amazon RDS Multi-AZ para Postgre SQL como fonte, pois RDS para o Postgre os clusters de banco de dados SQL Multi-AZ não oferecem suporte à replicação lógica.
Tipos de dados de origem para Postgre SQL
A tabela a seguir mostra os tipos de dados de SQL origem do Postgre que são suportados durante o uso AWS DMS e o mapeamento padrão para AWS DMS 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 SQL dados do Postgre |
DMStipos de dados |
---|---|
INTEGER |
INT4 |
SMALLINT |
INT2 |
BIGINT |
INT8 |
NUMERIC(ps, s) |
Se a precisão for de 0 a 38, useNUMERIC. Se a precisão for 39 ou maior, useSTRING. |
DECIMAL(PS, S) |
Se a precisão for de 0 a 38, useNUMERIC. Se a precisão for 39 ou maior, useSTRING. |
REAL |
REAL4 |
DOUBLE |
REAL8 |
SMALLSERIAL |
INT2 |
SERIAL |
INT4 |
BIGSERIAL |
INT8 |
MONEY |
NUMERIC(38,4) O tipo de MONEY dados é mapeado FLOAT no SQL Servidor. |
CHAR |
WSTRING(1) |
CHAR(N) |
WSTRING(n) |
VARCHAR(N) |
WSTRING(n) |
TEXT |
NCLOB |
CITEXT |
NCLOB |
BYTEA |
BLOB |
TIMESTAMP |
DATETIME |
TIMESTAMP WITH TIME ZONE |
DATETIME |
DATE |
DATE |
TIME |
TIME |
TIME WITH TIME ZONE |
TIME |
INTERVAL |
STRING(128) —1YEAR, 2MONTHS, 3DAYS, 4HOURS, 5MINUTES, 6 SECONDS |
BOOLEAN |
CHAR(5) falso ou verdadeiro |
ENUM |
STRING(64) |
CIDR |
STRING(50) |
INET |
STRING(50) |
MACADDR |
STRING(18) |
BIT(n) |
STRING(n) |
BITVARYING(n) |
STRING(n) |
UUID |
STRING |
TSVECTOR |
CLOB |
TSQUERY |
CLOB |
XML |
CLOB |
POINT |
STRING(25) “(x, y)” |
LINE |
STRING(25) “(x, y, z)” |
LSEG |
STRING(25) “(x1, y1), (x2, y2)” |
BOX |
STRING(25) “(x1, y1), (x2, y2)” |
PATH |
CLOB“((x1, y1), (xn, yn))” |
POLYGON |
CLOB“((x1, y1), (xn, yn))” |
CIRCLE |
STRING(25) “(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) |
Trabalhando com tipos LOB de dados de origem para o Postgre SQL
Os tamanhos das SQL colunas do Postgre afetam a conversão dos tipos de SQL LOB dados do Postgre em tipos de AWS DMS dados. Para trabalhar com isso, siga estas etapas para os seguintes tipos de dados do AWS DMS :
-
BLOB— Defina o LOB tamanho limite como o valor LOBdo tamanho máximo (KB) na criação da tarefa.
-
CLOB— A replicação trata cada personagem como um UTF8 personagem. Portanto, localize o tamanho do texto de caracteres mais longo na coluna, mostrado aqui como
max_num_chars_text
. Use esse comprimento para especificar o valor de Limitar o LOB tamanho para. Se os dados incluírem caracteres de 4 bytes, multiplique por 2 para especificar o valor do LOBtamanho limite, que está em bytes. Nesse caso, o LOBtamanho limite de é igual amax_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. Você faz isso para especificar o valor de Limitar LOB tamanho para. Nesse caso, o LOBtamanho limite de é igual amax_num_chars_text
multiplicado por 2. Se os dados incluírem caracteres de 4 bytes, multiplique por 2 novamente. Nesse caso, o LOBtamanho limite de é igual amax_num_chars_text
multiplicado por 4.