Nesta página, descrevemos como configurar as instâncias do banco de dados de origem
para migrações homogêneas contínuas do PostgreSQL para clusters do AlloyDB para PostgreSQL.
Para detalhes sobre as versões de origem compatíveis, consulte
Bancos de dados de origem e destino compatíveis.
Se você quiser usar as migrações de início rápido, siga o guia
Usar migrações de início rápido.
As migrações de início rápido oferecem um fluxo de migração simplificado que usa
a replicação do pgnative e a conectividade especializada com base nas
interfaces do Private Service Connect. Para mais informações, consulte
Sobre as migrações de início rápido na documentação principal do Database Migration Service.
Esta página inclui procedimentos independentes para cada origem compatível:
- PostgreSQL autogerenciado (no local ou em uma VM do Compute Engine)
- Amazon RDS para PostgreSQL
- Amazon Aurora para PostgreSQL
- Cloud SQL para PostgreSQL
Configurar uma origem do PostgreSQL auto-hospedada
Para configurar uma instância de origem do PostgreSQL autohospedada (no local ou hospedada em uma VM do Compute Engine) para migração contínua, conclua as seguintes etapas:
- Para origens do PostgreSQL auto-hospedadas, o Database Migration Service migra todos os bancos de dados na instância de origem,
exceto os bancos de dados de modelo
template0etemplate1. - Verifique se a instância de origem inclui o banco de dados
postgrespadrão. Se esse banco de dados não existir, crie-o antes de configurar a migração. - Configure a autenticação do cliente de rede no arquivo
pg_hba.conf. Adicione entradas que permitam conexões de replicação e acesso ao banco de dados pelo intervalo de endereços IP do cluster de destino do AlloyDB para PostgreSQL, pelo intervalo CIDR da VPC ou pelo bastion host de SSH reverso:# Allow replication connections host replication MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5 # Allow database access host all MIGRATION_USER_ACCOUNT_NAME DESTINATION_IP_OR_CIDR md5
Recarregue a configuração do PostgreSQL para aplicar as regras
pg_hba.conf:SELECT pg_reload_conf();
- Verifique as extensões do PostgreSQL instaladas nos bancos de dados de origem.
O Database Migration Service não migra
extensões que não são compatíveis com o AlloyDB para PostgreSQL.
Verifique se os objetos do banco de dados de origem e as consultas do aplicativo não fazem referência a extensões incompatíveis.
Remova as extensões e referências não compatíveis dos bancos de dados de origem antes de continuar.
A extensão
pg_cronnão é migrada automaticamente pelo Database Migration Service, mas é compatível com destinos do AlloyDB para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o no cluster de destino do AlloyDB para PostgreSQL depois de promover a migração. - Crie uma conta de usuário de migração dedicada na instância de origem
e conceda a ela os privilégios necessários:
- Conecte-se à instância de origem usando uma conta de administrador, crie o usuário e atribua a função de replicação:
CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
- Conceda à conta de usuário de migração as permissões necessárias para o
banco de dados
postgrespadrão e para todos os bancos de dados que você quer migrar. Execute os seguintes comandos em cada banco de dados para cada esquema, exceto o esquema de informações e os esquemas que começam compg_:GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conecte-se à instância de origem usando uma conta de administrador, crie o usuário e atribua a função de replicação:
- Instale a extensão
pglogicalem cada banco de dados que você quer migrar, excetotemplate0etemplate1:- Para o PostgreSQL versão 9.4: execute os seguintes comandos:
CREATE EXTENSION IF NOT EXISTS pglogical; CREATE EXTENSION IF NOT EXISTS pglogical_origin;
- Para o PostgreSQL versão 9.5 e mais recentes: execute o seguinte comando:
CREATE EXTENSION IF NOT EXISTS pglogical;
- Para o PostgreSQL versão 9.4: execute os seguintes comandos:
- Verifique se as tabelas têm chaves primárias. Para migrações contínuas,
a replicação lógica do PostgreSQL exige que as tabelas tenham chaves primárias para
replicar as operações
UPDATEeDELETEdurante a fase de captura de dados alterados (CDC):- As tabelas com uma chave primária replicam todas as operações
INSERT,UPDATEeDELETEautomaticamente. - Para tabelas sem chaves primárias, o Database Migration Service oferece suporte à migração apenas do snapshot inicial e das instruções
INSERTsubsequentes durante a fase de CDC. É preciso migrar as instruçõesUPDATEeDELETEmanualmente.Recomendamos que você adicione chaves primárias às tabelas que não as têm antes de iniciar a migração. Para saber como gerar uma consulta para listar tabelas em um banco de dados PostgreSQL sem chaves primárias ou como migrar manualmente as operações
UPDATEeDELETE, consulte Depuração e outras ferramentas.Como alternativa, tente usar o fluxo de migração de início rápido: um cenário de migração simplificado em que é possível usar
REPLICA IDENTITYpara migrar tabelas sem chaves primárias. Para mais informações, consulte o guia Usar migrações de início rápido.
- As tabelas com uma chave primária replicam todas as operações
- Origens que executam o PostgreSQL versão 9.5 e anteriores: a métrica de atraso de replicação não está disponível para instâncias de origem que executam versões do PostgreSQL anteriores à 9.6. Se você quiser usar essa métrica para acompanhar o progresso da migração, consulte Ativar o atraso de replicação.
- Instale o pacote
pglogicale configure os parâmetros de WAL e replicação no servidor PostgreSQL:- Instale o pacote
pglogicalno sistema operacional do host do servidor de banco de dados. Para pacotes e instruções de instalação da sua distribuição, consulte o repositório pglogical do GitHub. - Conecte-se à instância do PostgreSQL usando uma conta de administrador e defina os seguintes parâmetros:
- Defina
shared_preload_librariespara incluir'pglogical':ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
- Defina
wal_levelcomo'logical':ALTER SYSTEM SET wal_level = 'logical';
Consulte
wal_levelna documentação do PostgreSQL. - Defina
wal_sender_timeoutcomo0:ALTER SYSTEM SET wal_sender_timeout = 0;
O valor
0desativa o mecanismo de tempo limite que encerra conexões de replicação inativas. Consultewal_sender_timeout. - Defina
max_replication_slotscomo pelo menos o número de bancos de dados a serem migrados multiplicado pelo número de jobs de migração, além de reservas para sincronização de tabelas:Por exemplo, se houver cinco bancos de dados na instância de origem e você criar dois jobs de migração para essa origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados na origem por outras tarefas. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração ao criar o job de migração.
ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;
O valor padrão desse parâmetro é 10. Consulte
max_replication_slots. - Defina
max_wal_senderscomo pelo menos o valor demax_replication_slotsmais o número de remetentes já usados na sua instância:Por exemplo, se o parâmetro
max_replication_slotsestiver definido como10e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração ao criar o job de migração.ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;
O valor padrão desse parâmetro é 10. Consulte
max_wal_senders. - Defina
max_worker_processescomo, pelo menos, o número de bancos de dados a serem migrados mais os processos de worker atuais na instância. Se você planeja usar as configurações ajustadas de paralelismo de despejo de dados, considere dois processos de worker adicionais por conexão (até um máximo de 20 workers):ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;
O valor padrão desse parâmetro é 8. Consulte
max_worker_processes.
- Defina
- Instale o pacote
- Reinicie o servidor PostgreSQL para que as alterações de configuração entrem em vigor.
Configurar uma origem do Amazon RDS para PostgreSQL
Para configurar uma instância de origem do Amazon RDS para PostgreSQL para migração contínua, conclua as seguintes etapas:
- Para origens do Amazon RDS para PostgreSQL, o Database Migration Service migra todos os bancos de dados na instância de origem,
exceto os bancos de dados de modelo
template0,template1e o banco de dados interno da AWSrdsadmin. - Verifique se a instância de origem inclui o banco de dados
postgrespadrão. Se esse banco de dados não existir, crie-o antes de configurar a migração. - Configure as regras de entrada do grupo de segurança da VPC do Amazon RDS.
Permita conexões TCP de entrada na porta
5432do intervalo de endereços IP do cluster de destino do AlloyDB para PostgreSQL, do intervalo CIDR da VPC ou da VM do bastion host de SSH reverso. - Verifique as extensões do PostgreSQL instaladas nos bancos de dados de origem.
O Database Migration Service não migra
extensões que não são compatíveis com o AlloyDB para PostgreSQL.
Verifique se os objetos do banco de dados de origem e as consultas do aplicativo não fazem referência a extensões incompatíveis.
Remova as extensões e referências não compatíveis dos bancos de dados de origem antes de continuar.
A extensão
pg_cronnão é migrada automaticamente pelo Database Migration Service, mas é compatível com destinos do AlloyDB para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o no cluster de destino do AlloyDB para PostgreSQL depois de promover a migração. - Crie uma conta de usuário de migração dedicada na instância de origem
e conceda a ela os privilégios necessários:
- Conecte-se à instância de origem usando uma conta de administrador, crie o usuário e conceda o papel
rds_replicationgerenciado pela AWS:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Conceda à conta de usuário de migração as permissões necessárias para o
banco de dados
postgrespadrão e para todos os bancos de dados que você quer migrar. Execute os seguintes comandos em cada banco de dados para cada esquema, exceto o esquema de informações e os esquemas que começam compg_:GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conecte-se à instância de origem usando uma conta de administrador, crie o usuário e conceda o papel
- Instale a extensão
pglogicalem cada banco de dados que você quer migrar, excetotemplate0,template1erdsadmin. Execute este comando:CREATE EXTENSION IF NOT EXISTS pglogical;
Para mais detalhes sobre os requisitos, consulte Como usar extensões do PostgreSQL com o Amazon RDS para PostgreSQL na documentação da AWS.
- Verifique se as tabelas têm chaves primárias. Para migrações contínuas,
a replicação lógica do PostgreSQL exige que as tabelas tenham chaves primárias para
replicar as operações
UPDATEeDELETEdurante a fase de captura de dados alterados (CDC):- As tabelas com uma chave primária replicam todas as operações
INSERT,UPDATEeDELETEautomaticamente. - Para tabelas sem chaves primárias, o Database Migration Service oferece suporte à migração apenas do snapshot inicial e das instruções
INSERTsubsequentes durante a fase de CDC. É preciso migrar as instruçõesUPDATEeDELETEmanualmente.Recomendamos que você adicione chaves primárias às tabelas que não as têm antes de iniciar a migração. Para saber como gerar uma consulta para listar tabelas em um banco de dados PostgreSQL sem chaves primárias ou como migrar manualmente as operações
UPDATEeDELETE, consulte Depuração e outras ferramentas.Como alternativa, tente usar o fluxo de migração de início rápido: um cenário de migração simplificado em que é possível usar
REPLICA IDENTITYpara migrar tabelas sem chaves primárias. Para mais informações, consulte o guia Usar migrações de início rápido.
- As tabelas com uma chave primária replicam todas as operações
- Configure um grupo de parâmetros de banco de dados personalizado e anexe-o à instância:
- Crie um grupo de parâmetros personalizado (consulte
Como trabalhar com grupos de parâmetros de banco de dados na documentação da AWS) e configure os seguintes parâmetros:
- Defina
shared_preload_librariespara incluirpglogical. - Defina
rds.logical_replicationcomo1. Esse parâmetro ativa o registro lógico de WAL no Amazon RDS. Consulte Replicação lógica do Amazon RDS para PostgreSQL. - Defina
wal_sender_timeoutcomo0. O valor0desativa o mecanismo de tempo limite que encerra conexões de replicação inativas. - Defina
max_replication_slotscomo pelo menos o número de bancos de dados a serem migrados multiplicado pelo número de jobs de migração, além de reservas para sincronização de tabelas:Por exemplo, se houver cinco bancos de dados na instância de origem e você criar dois jobs de migração para essa origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados na origem por outras tarefas. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração ao criar o job de migração.
O valor padrão desse parâmetro é 10.
- Defina
max_wal_senderscomo pelo menos o valor demax_replication_slotsmais o número de remetentes já usados na sua instância:Por exemplo, se o parâmetro
max_replication_slotsestiver definido como10e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração ao criar o job de migração.O valor padrão desse parâmetro é 10.
- Defina
max_worker_processescomo, pelo menos, o número de bancos de dados a serem migrados mais os processos de worker atuais na instância. Se você planeja usar as configurações ajustadas de paralelismo de despejo de dados, considere dois processos de worker adicionais por conexão (até um máximo de 20 workers):O valor padrão desse parâmetro é 8.
- Defina
- Anexe o grupo de parâmetros à instância de banco de dados do RDS. Se você estiver criando uma nova instância, essa opção estará em Configuração adicional. Caso contrário, modifique a instância para anexar o grupo de parâmetros.
- Crie um grupo de parâmetros personalizado (consulte
Como trabalhar com grupos de parâmetros de banco de dados na documentação da AWS) e configure os seguintes parâmetros:
- Reinicie a instância do Amazon RDS para que as alterações no grupo de parâmetros entrem em vigor.
Configurar uma origem do Amazon Aurora PostgreSQL
Para configurar um cluster de origem do Amazon Aurora PostgreSQL para migração contínua, siga estas etapas:
- Para origens do Amazon Aurora para PostgreSQL, o Database Migration Service migra todos os bancos de dados no cluster de origem,
exceto os bancos de dados de modelo
template0,template1e o banco de dados interno da AWSrdsadmin. - Verifique se o cluster de origem inclui o banco de dados
postgrespadrão. Se esse banco de dados não existir, crie-o antes de configurar a migração. - Configure as regras de entrada do grupo de segurança da VPC do cluster do Amazon Aurora.
Permita conexões TCP de entrada na porta
5432do intervalo de endereços IP do cluster de destino do AlloyDB para PostgreSQL, do intervalo CIDR da VPC ou da VM do bastion host de SSH reverso. - Verifique as extensões do PostgreSQL instaladas nos bancos de dados de origem.
O Database Migration Service não migra
extensões que não são compatíveis com o AlloyDB para PostgreSQL.
Verifique se os objetos do banco de dados de origem e as consultas do aplicativo não fazem referência a extensões incompatíveis.
Remova as extensões e referências não compatíveis dos bancos de dados de origem antes de continuar.
A extensão
pg_cronnão é migrada automaticamente pelo Database Migration Service, mas é compatível com destinos do AlloyDB para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o no cluster de destino do AlloyDB para PostgreSQL depois de promover a migração. - Crie uma conta de usuário de migração dedicada no cluster de origem
e conceda a ela os privilégios necessários:
- Conecte-se ao cluster de origem usando uma conta de administrador, crie o usuário e conceda o papel
rds_replicationgerenciado pela AWS:CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD'; GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
- Conceda à conta de usuário de migração as permissões necessárias para o
banco de dados
postgrespadrão e para todos os bancos de dados que você quer migrar. Execute os seguintes comandos em cada banco de dados para cada esquema, exceto o esquema de informações e os esquemas que começam compg_:GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Conecte-se ao cluster de origem usando uma conta de administrador, crie o usuário e conceda o papel
- Instale a extensão
pglogicalem cada banco de dados que você quer migrar, excetotemplate0,template1erdsadmin:CREATE EXTENSION IF NOT EXISTS pglogical;
- Verifique se as tabelas têm chaves primárias. Para migrações contínuas,
a replicação lógica do PostgreSQL exige que as tabelas tenham chaves primárias para
replicar as operações
UPDATEeDELETEdurante a fase de captura de dados alterados (CDC):- As tabelas com uma chave primária replicam todas as operações
INSERT,UPDATEeDELETEautomaticamente. - Para tabelas sem chaves primárias, o Database Migration Service oferece suporte à migração apenas do snapshot inicial e das instruções
INSERTsubsequentes durante a fase de CDC. É preciso migrar as instruçõesUPDATEeDELETEmanualmente.Recomendamos que você adicione chaves primárias às tabelas que não as têm antes de iniciar a migração. Para saber como gerar uma consulta para listar tabelas em um banco de dados PostgreSQL sem chaves primárias ou como migrar manualmente as operações
UPDATEeDELETE, consulte Depuração e outras ferramentas.Como alternativa, tente usar o fluxo de migração de início rápido: um cenário de migração simplificado em que é possível usar
REPLICA IDENTITYpara migrar tabelas sem chaves primárias. Para mais informações, consulte o guia Usar migrações de início rápido.
- As tabelas com uma chave primária replicam todas as operações
- Configure um grupo de parâmetros personalizado do cluster de banco de dados e anexe-o ao cluster:
- Crie um grupo de parâmetros de cluster de banco de dados personalizado e configure os seguintes parâmetros:
- Defina
shared_preload_librariespara incluirpglogical. - Defina
rds.logical_replicationcomo1. Esse parâmetro ativa a geração de registros WAL lógica. - Defina
wal_sender_timeoutcomo0. O valor0desativa o mecanismo de tempo limite que encerra conexões de replicação inativas. - Defina
max_replication_slotscomo pelo menos o número de bancos de dados a serem migrados multiplicado pelo número de jobs de migração, além de reservas para sincronização de tabelas:Por exemplo, se houver cinco bancos de dados na instância de origem e você criar dois jobs de migração para essa origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados na origem por outras tarefas. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração ao criar o job de migração.
O valor padrão desse parâmetro é 10.
- Defina
max_wal_senderscomo pelo menos o valor demax_replication_slotsmais o número de remetentes já usados na sua instância:Por exemplo, se o parâmetro
max_replication_slotsestiver definido como10e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração ao criar o job de migração.O valor padrão desse parâmetro é 10.
- Defina
max_worker_processescomo, pelo menos, o número de bancos de dados a serem migrados mais os processos de worker atuais na instância. Se você planeja usar as configurações ajustadas de paralelismo de despejo de dados, considere dois processos de worker adicionais por conexão (até um máximo de 20 workers):O valor padrão desse parâmetro é 8.
- Defina
- Anexe o grupo de parâmetros do cluster de banco de dados ao cluster de banco de dados do Aurora.
- Crie um grupo de parâmetros de cluster de banco de dados personalizado e configure os seguintes parâmetros:
- Reinicie o cluster de banco de dados do Amazon Aurora para que as alterações no grupo de parâmetros entrem em vigor.
Configurar uma origem do Cloud SQL para PostgreSQL
Para configurar uma instância de origem do Cloud SQL para PostgreSQL para migração contínua, siga estas etapas:
- Para origens do Cloud SQL para PostgreSQL, o Database Migration Service migra todos os bancos de dados na instância de origem,
exceto os bancos de dados de modelo
template0etemplate1. - Verifique se a instância de origem inclui o banco de dados
postgrespadrão. Se esse banco de dados não existir, crie-o antes de configurar a migração. - Se você migrar de uma instância de origem do Cloud SQL configurada com um endereço IP privado para um cluster de destino do AlloyDB para PostgreSQL que usa um intervalo de endereços IP não RFC 1918, adicione o intervalo não RFC 1918 às redes autorizadas da instância de origem. Para mais informações, consulte Configurar redes autorizadas.
- Verifique as extensões do PostgreSQL instaladas nos bancos de dados de origem.
O Database Migration Service não migra
extensões que não são compatíveis com o AlloyDB para PostgreSQL.
Verifique se os objetos do banco de dados de origem e as consultas do aplicativo não
fazem referência a extensões incompatíveis. Remova as extensões e referências não compatíveis
dos bancos de dados de origem antes de continuar.
A extensão
pg_cronnão é migrada automaticamente pelo Database Migration Service, mas é compatível com destinos do AlloyDB para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o no cluster de destino do AlloyDB para PostgreSQL depois de promover a migração. - Crie uma conta de usuário de migração dedicada na instância de origem
e conceda a ela os privilégios necessários:
- Siga as etapas na página Criar um usuário na documentação do Cloud SQL para criar a conta de usuário.
- Conceda o papel
cloudsqlsuperuserà conta de usuário de migração:GRANT cloudsqlsuperuser TO "MIGRATION_USER_ACCOUNT_NAME";
- Conceda à conta de usuário de migração as permissões necessárias para o
banco de dados
postgrespadrão e para todos os bancos de dados que você quer migrar. Execute os seguintes comandos em cada banco de dados para cada esquema, exceto o esquema de informações e os esquemas que começam compg_:GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT USAGE ON SCHEMA pglogical TO PUBLIC; GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME"; GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
- Instale a extensão
pglogicalem cada banco de dados que você quer migrar, excetotemplate0etemplate1. Execute este comando:CREATE EXTENSION IF NOT EXISTS pglogical;
- Verifique se as tabelas têm chaves primárias. Para migrações contínuas,
a replicação lógica do PostgreSQL exige que as tabelas tenham chaves primárias para
replicar as operações
UPDATEeDELETEdurante a fase de captura de dados alterados (CDC):- As tabelas com uma chave primária replicam todas as operações
INSERT,UPDATEeDELETEautomaticamente. - Para tabelas sem chaves primárias, o Database Migration Service migra
o snapshot inicial e as instruções
INSERTsubsequentes durante a fase de CDC. É preciso migrar as instruçõesUPDATEeDELETEmanualmente.Recomendamos que você adicione chaves primárias às tabelas que não as têm antes de iniciar a migração. Para saber como gerar uma consulta para listar tabelas em um banco de dados PostgreSQL sem chaves primárias ou como migrar manualmente as operações
UPDATEeDELETE, consulte Depuração e outras ferramentas.Como alternativa, tente usar o fluxo de migração de início rápido: um cenário de migração simplificado em que é possível usar
REPLICA IDENTITYpara migrar tabelas sem chaves primárias. Para mais informações, consulte o guia Usar migrações de início rápido.
- As tabelas com uma chave primária replicam todas as operações
- Configure as seguintes flags de banco de dados na instância de origem do Cloud SQL:
- Defina
cloudsql.logical_decodingcomoon. - Defina
cloudsql.enable_pglogicalcomoon. - Defina
wal_sender_timeoutcomo0. O valor0desativa o mecanismo de tempo limite que encerra conexões de replicação inativas. - Defina
max_replication_slotscomo pelo menos o número de bancos de dados a serem migrados multiplicado pelo número de jobs de migração, além de reservas para sincronização de tabelas.Por exemplo, se houver cinco bancos de dados na instância de origem e você criar dois jobs de migração para essa origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados na origem por outras tarefas. Se você planeja usar as configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração ao criar o job de migração.
O valor padrão dessa flag é 10.
- Defina
max_wal_senderscomo pelo menos o valor demax_replication_slotsmais o número de remetentes já usados na sua instância.Por exemplo, se a flag
max_replication_slotsestiver definida como10e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12. Se você planeja usar as configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração ao criar o job de migração.O valor padrão dessa flag é 10.
- Defina
max_worker_processescomo, pelo menos, o número de bancos de dados a serem migrados mais os processos de worker atuais na instância. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, considere dois processos de worker adicionais por conexão (até um máximo de 20 workers).O valor padrão dessa flag é 8.
Para mais informações sobre como modificar flags, consulte Configurar flags de banco de dados na documentação do Cloud SQL.
- Defina
- Reinicie a instância de origem do Cloud SQL para que as alterações na flag de banco de dados entrem em vigor.
A seguir
Para ver tutoriais completos de migração, consulte Começar a usar as migrações do AlloyDB para PostgreSQL.
Para planejar a conectividade de rede entre as instâncias de origem e de destino, consulte Considerações sobre rede.