Instanciação Precisa entre Ambientes PostgreSQL Usando o Utilitário pg_dump
Ao usar o Oracle GoldenGate para replicar entre dois ou mais bancos de dados compatíveis com PostgreSQL, você pode usar o utilitário de backup pg_dump (pg_dumpall)/pg_restore incluído no PostgreSQL. Isso criará um backup ou um snapshot do banco de dados de origem, que será restaurado no sistema de destino.
Consulte pg_dump (pg_dumpall) e pg_restore na documentação da PostgreSQL.
As etapas a seguir descrevem como usar esse backup em conjunto com o Oracle GoldenGate para garantir uma instanciação inicial precisa, que não exige que a origem seja colocada off-line ou o uso de HANDLECOLLISIONS.
Essas etapas usam o Admin Client, mas você pode executar as mesmas etapas na interface Web do Oracle GoldenGate Microservices e nos pontos finais do serviço Rest API.
Antes de começar essas etapas, certifique-se de ter concluído a preparação de PostgreSQL para o Oracle GoldenGate. Consulte a seção Preparar PostgreSQL para obter detalhes.
-
Conecte-se à implantação do Admin Client:
CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Estabeleça conexão com o banco de dados de origem PostgreSQL usando o comando
DBLOGIN. Se você não tiver configurado uma conexão de banco de dados com o banco de dados de origem, poderá configurar usando as etapas de Adicionar Conexões de Banco de Dados ou usando o comandoALTER CREDENTIALSTOREdo Cliente Admin.DBLOGIN USERIDALIAS *alias*Por exemplo, se o alias for ggeast, o comando será:
DBLOGIN USERIDALIAS ggeast -
Adicione uma tabela de checkepoint ao banco de dados de origem.
ADD CHECKPOINTTABLE *owner.table_name*Por exemplo:
ADD CHECKPOINTTABLE ggs.checkpoint -
Crie seu arquivo de parâmetros de Extract para capturar as tabelas que você deseja replicar e registre um novo Extract no banco de dados PostgreSQL de origem usando o comando
REGISTER EXTRACT, mas não adicione o Extract.REGISTER EXTRACT *extract_name*Por exemplo:
REGISTER EXTRACT extcdc -
Crie um slot de replicação temporário que será usado para criar um ponto de partida para nosso processo Extract e para posicionar o snapshot PostgreSQL. Isso pode ser feito com o comando
CREATE_REPLICATION_SLOT. Estas são as etapas para configurar o slot de replicação temporária:-
Faça log-in no banco de dados PostgreSQL usando
psqlcomo usuário com a atribuição replicação. -
Use a opção
replication=database. Esse é o mesmo usuário que você criou na etapa 2.Por exemplo:
$ psql "dbname=pgsource replication=database user=ggeast" Password for user ggadmin: psql (16.3) Type "help" for help. pgsource=# CREATE_REPLICATION_SLOT tslot TEMPORARY LOGICAL test_decoding EXPORT_SNAPSHOT; slot_name | consistent_point | snapshot_name | output_plugin ----------+------------------+---------------------+--------------- tslot | 1/4232A6B0 | 00000007-00001142-1 | test_decoding (1 row) -
Anote o `snapshot_name` e o `consistent_point`.
-
-
Crie o snapshot usando o
pg_dump(oupg_dumpallpara bancos de dados em cluster), conforme mostrado no seguinte exemplo:Observação:
Este comando pode levar algum tempo para ser executado. Recomenda-se emitir este comando usando uma opção
nohuppara evitar que o comando seja interrompido se a sessão for fechada.$ nohup /u01/pgsql-16/bin/pg_dump -h pgsource -p 5432 -U ggeast -snapshot=00000007-00001142-1 -F c -b -v -f latestdump.db pgsource &A
pg_dump/pg_dumpallusa asnapshot_namerecebida da saída na etapa 5c. No exemplo fornecido, a opçãopg_dumppressupõe que todo o banco de dados será replicado. No entanto, se você estiver replicando um subconjunto do banco de dados, poderá fazer dump apenas desses objetos. -
Adicione o Extract usando o comando
ADD EXTRACT. O Extract deve ser posicionado noconsistent_pointrastreado na etapa 5c:ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*Por exemplo:
ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0Posicionando a Extração neste valor LSN, certifique-se de que a Extração não irá capturar nenhum dado que foi incluído no dump.
-
Adicione a trilha de Extract usando o comando
ADD EXTTRAIL.ADD EXTTRAIL *trail_name*, EXTRACT *extract_name*Por exemplo:
ADD EXTTRAIL *east/ea*, EXTRACT *extecdc* -
Inicie a Extração.
START EXTRACT *extract_name* -
(Opcional) Se você precisar configurar um caminho de distribuição para enviar os arquivos de trilha para outro servidor, use o comando
ADD DISTPATH.ADD DISTPATH *name* SOURCE *source_uri* TARGET *target_uri*Por exemplo:
ADD DISTPATH *dpecdc* SOURCE *trail://localhost:9002/services/v2/sources?trail=ea* TARGET *wss://localhost:9003/services/v2/targets?trail=ea* -
Restaure o banco de dados no servidor de destino usando o comando
pg_restore. Assim como nopg_dump, se a sessão for perdida, a restauração falhará, portanto, é recomendável usar a opçãonohup. Neste exemplo, foram utilizadas as seguintes opções:$ nohup /u01/pgsql-16/bin/pg_restore -h pgtarget -p 6432 -U ggadmin -d pgtarget -v latestdump.db & -
(Opcional) Se você tiver criado um caminho de distribuição para um serviço Receiver em outra implantação, talvez seja necessário usar o comando
CONNECTdo Admin Client para estabelecer conexão com a implantação de destino.CONNECT https://*target:srvmgrport* *DEPLOYMENT* *deployment_name* AS *deployment_user* PASSWORD *deployment_password* -
Estabeleça conexão com o banco de dados de destino PostgreSQL usando o comando
DBLOGIN USERIDALIAS. Se você não tiver configurado uma conexão de banco de dados com o banco de dados de origem, poderá configurar usando as etapas de Adicionar Conexões de Banco de Dados ou usar o comandoALTER CREDENTIALSTOREdo Cliente Admin. -
Adicionar uma tabela de checkpoint ao banco de dados de destino.
ADD CHECKPOINTTABLE ggs.chkpoint -
Adicionar um processo Replicat que aplicará as alterações ao banco de dados de destino após a conclusão da restauração do banco de dados.
ADD REPLICAT *replicat_name*Por exemplo:
ADD REPLICAT repecdc -
Inicie o Replicat depois da conclusão da restauração, como é mostrado no seguinte exemplo:
START REPLICAT *repecdc*