Nesta página, descrevemos como configurar as instâncias de banco de dados de origem
para migrações homogêneas padrão do PostgreSQL. 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 seções para cada origem compatível:
- PostgreSQL autogerenciado (no local ou em uma VM do Compute Engine)
- Amazon RDS para PostgreSQL
- Amazon Aurora para PostgreSQL
- Banco de dados do Microsoft Azure para servidor flexível do PostgreSQL
- Cloud SQL para PostgreSQL
Configurar uma origem do PostgreSQL autogerenciada
Para configurar uma instância de origem do PostgreSQL autogerenciada (no local ou hospedada em uma VM do Compute Engine) para o processo de migração, faça o seguinte:
- Para origens autogerenciadas do 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. - 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 endereço IP de saída do Cloud SQL de destino, 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 Cloud SQL.
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 Cloud SQL para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o na instância de destino 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 o seguinte comando:
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 o seguinte comando:
- 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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste do job de migraçã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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração executando o teste do job de migraçã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 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 no processo de migração, faça o seguinte:
- 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 endereço IP de saída do Cloud SQL de destino, 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 Cloud SQL.
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 Cloud SQL para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o na instância de destino 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:- Para o PostgreSQL versão 9.4:execute o seguinte comando:
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 mais detalhes sobre os requisitos, consulte Como usar extensões do PostgreSQL com o Amazon RDS para PostgreSQL na documentação da AWS.
- Para o PostgreSQL versão 9.4:execute o seguinte comando:
- 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.
- 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 a geração de registros WAL lógicos 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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste do job de migraçã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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração executando o teste do job de migraçã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 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 para PostgreSQL
Para configurar um cluster de origem do Amazon Aurora PostgreSQL para o processo de migração, faça o seguinte:
- 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 endereço IP de saída do Cloud SQL de destino, 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 Cloud SQL.
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 Cloud SQL para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o na instância de destino 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 lógicos do WAL. - 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 executando o teste do job de migraçã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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração executando o teste do job de migraçã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 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 Microsoft Azure Database para PostgreSQL Flexible Server
Para configurar uma instância de origem do Microsoft Azure Database para PostgreSQL Flexible Server no processo de migração, faça o seguinte:
- Para origens do Banco de Dados do Microsoft Azure para PostgreSQL Flexible Server, o Database Migration Service migra todos os bancos de dados na instância de origem, exceto os bancos de dados de sistema e de modelo do Azure:
azure_maintenance,azure_sys,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. - Defina as configurações de firewall e SSL/TLS do Azure:
- Nas configurações de rede do Azure, adicione regras de firewall que permitam conexões TCP de entrada na porta
5432do endereço IP de saída do Cloud SQL de destino, do intervalo CIDR da VPC ou da VM do Bastion Host de SSH reverso. - Verifique o valor do parâmetro de servidor
require_secure_transport. Por padrão, os bancos de dados do Azure exigem criptografia SSL/TLS para conexões de entrada. Dependendo da configuração derequire_secure_transport, selecione uma das seguintes configurações de criptografia ao criar o perfil de conexão de origem:- Se
require_secure_transportestiver definido comoon, selecione Basic, TLS ou mTLS. - Se
require_secure_transportestiver definido comooff, selecione Nenhum.
- Se
- Nas configurações de rede do Azure, adicione regras de firewall que permitam conexões TCP de entrada na porta
- 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 Cloud SQL.
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 Cloud SQL para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o na instância de destino 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, excetoazure_maintenance,azure_sys,template0etemplate1:- Para o PostgreSQL versão 9.4:execute o seguinte comando:
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 o seguinte comando:
- 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.
- Configure os seguintes parâmetros de servidor no Azure. Para mais informações,
consulte
Configurar parâmetros de servidor no Banco de Dados do Azure para PostgreSQL.
- Defina
shared_preload_librariespara incluirpglogical. - Defina
azure.extensionspara incluirpglogical. - Defina
wal_levelcomological. - 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 executando o teste do job de migraçã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 as configurações ajustadas de paralelismo de despejo de dados, aumente o número de remetentes e verifique sua configuração executando o teste do job de migraçã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 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.
Para mais detalhes sobre os parâmetros, consulte a lista de todos os parâmetros de servidor no Banco de Dados do Azure para PostgreSQL na documentação da Microsoft.
- Defina
- Reinicie a instância do Microsoft Azure Database para PostgreSQL Flexible Server para que as alterações nos parâmetros do servidor entrem em vigor.
Configurar uma origem do Cloud SQL para PostgreSQL
Para configurar uma instância de origem do Cloud SQL para PostgreSQL no processo de migração, faça o seguinte:
- 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 uma instância de destino do Cloud SQL 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 Cloud SQL.
Verifique se os objetos do banco de dados de origem e as consultas do aplicativo não
fazem referência a extensões sem suporte. 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 Cloud SQL para PostgreSQL. Se você usarpg_cronno banco de dados de origem, reinstale e configure-o na instância de destino 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.
- 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:- Para o PostgreSQL versão 9.4:execute o seguinte comando:
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 o seguinte comando:
- 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
- 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.
- 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 configurações ajustadas de paralelismo de despejo de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste do job de migraçã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 executando o teste do job de migraçã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 Cloud SQL para PostgreSQL.
Para planejar a conectividade de rede entre as instâncias de origem e de destino, consulte Visão geral da rede.