Visão geral
O Database Migration Service oferece suporte a migrações contínuas de bancos de dados de origem para bancos de dados de destino AlloyDB.
Os bancos de dados de origem suportados para PostgreSQL incluem:
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15
- Amazon Aurora 10.11+, 11.6+, 12.4+, 13.3+, 14, 15
- PostgreSQL autogerenciado (no local ou em qualquer VM na nuvem que você controle totalmente) 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15
- Nuvem SQL 9.6, 10, 11, 12, 13, 14, 15
A configuração da sua origem requer a configuração da instância de origem e dos bancos de dados de origem subjacentes.
Configure sua instância de origem
Para configurar sua instância de origem, siga as etapas abaixo:
- Sua instância de origem deve incluir o banco de dados
postgres
. Se você não possui esse banco de dados, crie-o. - Instale o pacote
pglogical
na instância de origem e certifique-se de que ele esteja incluído na variávelshared_preload_libraries
.- Consulte Instalar o pacote
pglogical
na instância de origem do seu ambiente.
- Consulte Instalar o pacote
Configure seus bancos de dados de origem
O Database Migration Service migra todos os bancos de dados em sua instância de origem, exceto os seguintes bancos de dados:
- Para fontes locais: bancos de dados de modelo
template0
etemplate1
- Para fontes do Amazon RDS:
template0
,template1
erdsadmin
- Para origens do Cloud SQL: bancos de dados de modelo
template0
etemplate1
Faça o seguinte em cada banco de dados da instância de origem que não foi mencionado acima:
Somente para fontes do PostgreSQL versão 9.4 , instale as seguintes extensões
pglogical
em cada banco de dados em sua instância de origem:-
CREATE EXTENSION IF NOT EXISTS pglogical;
-
CREATE EXTENSION IF NOT EXISTS pglogical_origin;
-
Para todas as outras versões , instale apenas a extensão
pglogical
em cada banco de dados na sua instância de origem:CREATE EXTENSION IF NOT EXISTS pglogical
.Para tabelas que não possuem chaves primárias, o Database Migration Service oferece suporte à migração do snapshot inicial e das instruções
INSERT
durante a fase CDC . Você deve migrar as instruçõesUPDATE
eDELETE
manualmente.O USER que você está usando para se conectar à instância de origem (que será configurado como o usuário na página Perfis de conexão ) deve ter determinados privilégios em cada um dos bancos de dados migrados, bem como no banco de dados
postgres
padrão. Você pode criar um novo usuário ou reutilizar um existente. Para definir esses privilégios, conecte-se à instância e execute os seguintes comandos:-
GRANT USAGE on SCHEMA SCHEMA to USER
em todos os esquemas (exceto o esquema de informações e os esquemas que começam com "pg_") em cada banco de dados a ser migrado. -
GRANT USAGE on SCHEMA pglogical to PUBLIC;
em cada banco de dados para migrar. -
GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER
em todos os bancos de dados para obter informações de replicação dos bancos de dados de origem. -
GRANT SELECT on ALL TABLES in SCHEMA SCHEMA to USER
em todos os esquemas (exceto o esquema de informações e os esquemas que começam com "pg_") em cada banco de dados a ser migrado. -
GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA to USER
em todos os esquemas (exceto o esquema de informações e os esquemas que começam com "pg_") em cada banco de dados a ser migrado. - Se sua origem for Amazon RDS , execute o seguinte comando:
-
GRANT rds_replication to USER
-
- Se sua fonte não for o Amazon RDS , execute o seguinte comando:
-
ALTER USER USER with REPLICATION
-
-
Instale o pacote pglogical
na instância de origem
Esta seção descreve como configurar o pacote pglogical
, incluindo a configuração dos parâmetros max_replication_slots
, max_wal_senders
e max_worker_processes
. Você também pode obter os valores corretos para esses parâmetros executando um teste de trabalho de migração ao criar o trabalho de migração. Durante esse teste, o Database Migration Service pode verificar suas configurações e sugerir os valores corretos.
PostgreSQL local ou autogerenciado
- Instale o pacote pglogical no servidor.
- Conecte-se à instância e defina os seguintes parâmetros, conforme necessário:
shared_preload_libraries
deve incluirpglogical
.Para definir este parâmetro, execute
ALTER SYSTEM SET shared_preload_libraries = 'pglogical, [any other libraries in your instance] ';
comando.Defina
wal_level
comological
.Para definir este parâmetro, execute
ALTER SYSTEM SET wal_level = 'logical';
comando.Defina
wal_sender_timeout
como0
.Para definir este parâmetro, execute
ALTER SYSTEM SET wal_sender_timeout = 0;
comando, onde0
desativa o mecanismo de tempo limite usado para encerrar conexões de replicação inativas.max_replication_slots define o número máximo de slots de replicação que a instância de origem pode suportar. Deve ser definido pelo menos para o número de assinaturas esperadas para conexão, além de algumas reservas para sincronização de tabelas.
O Database Migration Service requer um slot para cada banco de dados migrado (que são todos os bancos de dados na instância de origem).
Por exemplo, se houver cinco bancos de dados na instância de origem e se houver dois trabalhos de migração criados para a origem, o número de slots de replicação deverá ser pelo menos 5 * 2 = 10, mais o número de slots de replicação já usados por você. Se você planeja usar configurações ajustadas de paralelismo de dump de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste de tarefa de migração ao criar a tarefa de migração.
Para definir este parâmetro, execute
ALTER SYSTEM SET max_replication_slots = # ;
comando, onde # representa o número máximo de slots de replicação.max_wal_senders deve ser definido pelo menos como
max_replication_slots
, mais o número de remetentes já usados em sua instância.Por exemplo, se o parâmetro
Para definir este parâmetro, executemax_replication_slots
estiver definido como10
e você já estiver usando 2 remetentes, o número de processos de remetente WAL em execução ao mesmo tempo seria 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 executando o teste de trabalho de migração ao criar o trabalho de migração.ALTER SYSTEM SET max_wal_senders = # ;
comando, onde # representa o número de processos do remetente WAL em execução simultaneamente.max_worker_processes deve ser definido como pelo menos o mesmo número de bancos de dados que o Database Migration Service irá migrar (que é todos os bancos de dados na instância de origem), mais o número de
max_worker_processes
já usados em sua instância.Se você planeja usar configurações ajustadas de paralelismo de dump de dados, aumente o número de processos de trabalho e verifique sua configuração executando o teste de tarefa de migração ao criar a tarefa de migração.
Para definir este parâmetro, execute
ALTER SYSTEM SET max_worker_processes = # ;
comando, onde # representa o número de bancos de dados que serão migrados.
- Para aplicar as alterações de configuração, reinicie a instância de origem .
PostgreSQL do Amazon RDS
- Instale a extensão
pglogical
no seu banco de dados de origem. Para obter mais informações, consulte Usar extensões do PostgreSQL com o Amazon RDS para PostgreSQL na documentação do Amazon RDS. Configure a instância de origem usando grupos de parâmetros .
- Crie um novo grupo de parâmetros . No grupo de parâmetros:
- Certifique-se de que o parâmetro
shared_preload_libraries
incluapglogical
. - Configure o parâmetro
rds.logical_replication
como1
. Isso habilitará os logs do WAL no nível lógico. - Defina o parâmetro
wal_sender_timeout
como 0. Isso desabilitará o mecanismo de tempo limite usado para encerrar conexões de replicação inativas. Configure o parâmetro max_replication_slots . Este parâmetro define o número máximo de slots de replicação que a instância de origem pode suportar. Deve ser definido pelo menos para o número de assinaturas esperadas para conexão, além de algumas reservas para sincronização de tabelas.
O Database Migration Service requer um slot para cada banco de dados migrado (que são todos os bancos de dados na instância de origem).
Por exemplo, se houver 5 bancos de dados na instância de origem e se houver 2 trabalhos de migração criados para a origem, o número de slots de replicação deverá ser pelo menos 5 * 2 = 10, mais o número de slots de replicação já usados por você. Se você planeja usar configurações ajustadas de paralelismo de dump de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste de tarefa de migração ao criar a tarefa de migração.
O valor padrão para esse parâmetro é 10 .
Defina o parâmetro max_wal_senders como pelo menos igual a
max_replication_slots
, mais o número de remetentes já usados em sua instância.Por exemplo, se o parâmetro
max_replication_slots
estiver definido como10
e você já estiver usando 2 remetentes, o número de processos de remetente WAL em execução ao mesmo tempo seria 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 executando o teste de trabalho de migração ao criar o trabalho de migração.O valor padrão para esse parâmetro é 10 .
Defina o parâmetro de origem max_worker_processes para pelo menos o mesmo número de bancos de dados que o Database Migration Service irá migrar (que é todos os bancos de dados na instância de origem), mais o número de
max_worker_processes
já usados em sua instância. Se você planeja usar configurações ajustadas de paralelismo de dump de dados, aumente o número de processos de trabalho e verifique sua configuração executando o teste de tarefa de migração ao criar a tarefa de migração.O valor padrão para esse parâmetro é 8 .
Anexe o grupo de parâmetros à instância. Se estiver criando uma nova instância, você poderá encontrar essa opção em Configuração Adicional . Caso contrário, modifique a instância para anexar o grupo de parâmetros.
Para aplicar as alterações de configuração, reinicie a instância de origem .
Cloud SQL para PostgreSQL
Habilite a replicação lógica e a decodificação para o banco de dados de origem configurando os sinalizadores a seguir.
- Defina os sinalizadores
cloudsql.logical_decoding
ecloudsql.enable_pglogical
comoon
. Configure o sinalizador max_replication_slots . Esse sinalizador define o número máximo de slots de replicação que a instância de origem pode suportar. Deve ser definido pelo menos para o número de assinaturas esperadas para conexão, além de algumas reservas para sincronização de tabelas.
O Database Migration Service requer um slot para cada banco de dados migrado (que são todos os bancos de dados na instância de origem).
Por exemplo, se houver 5 bancos de dados na instância de origem e se houver 2 trabalhos de migração criados para a origem, o número de slots de replicação deverá ser pelo menos 5 * 2 = 10, mais o número de slots de replicação já usados por você. Se você planeja usar configurações ajustadas de paralelismo de dump de dados, aumente o número de slots de replicação e verifique sua configuração executando o teste de tarefa de migração ao criar a tarefa de migração.
O valor padrão para esse sinalizador é 10 .
Defina o sinalizador max_wal_senders como pelo menos igual a
max_replication_slots
, mais o número de remetentes já usados em sua instância.Por exemplo, se o sinalizador
max_replication_slots
estiver definido como10
e você já estiver usando 2 remetentes, o número de processos de remetente WAL em execução ao mesmo tempo seria 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 executando o teste de trabalho de migração ao criar o trabalho de migração.O valor padrão para esse sinalizador é 10 .
Defina o sinalizador de origem max_worker_processes para pelo menos o mesmo número de bancos de dados que o Database Migration Service irá migrar (que é todos os bancos de dados na instância de origem), mais o número de
max_worker_processes
já usados em sua instância. Se você planeja usar configurações ajustadas de paralelismo de despejo de dados, considere dois processos de trabalho adicionais por conexão (até um máximo de 20 trabalhadores).O valor padrão para esse sinalizador é 8 .
- Reinicie sua instância de origem para que as alterações de configuração feitas nos sinalizadores possam entrar em vigor.
Habilitar monitoramento de atraso de replicação para versão PostgreSQL inferior a 9.6
Se você estiver migrando de uma versão do PostgreSQL anterior à 9.6, a métrica de atraso de replicação não estará disponível por padrão. Existem três alternativas que permitem rastrear essa métrica para garantir um tempo de inatividade mínimo ao promover o banco de dados:
Opção 1: Habilite o Database Migration Service para rastrear o atraso de replicação concedendo acesso a uma consulta específica. Usando um usuário com privilégio
SUPERUSER
, faça o seguinte:Defina a função a seguir para permitir que o Database Migration Service consulte o atraso de replicação.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Conceda a permissão
EXECUTE
ao USER executando os seguintes comandos:-
REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
-
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
-
Opção 2: conceda o privilégio
SUPERUSER
diretamente ao USER usado para conectar-se à instância de origem. Isso permitirá que o Database Migration Service leia diretamente o atraso de replicação.Opção 3: Rastreie o atraso de replicação de forma independente usando a seguinte consulta:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
Nesta opção, o Database Migration Service não refletirá a métrica de atraso de replicação nos gráficos ou nas respostas da API.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-05-15 UTC.