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.

  1. Conecte-se à implantação do Admin Client:

    CONNECT https://source:srvmgrport DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*
  2. 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 comando ALTER CREDENTIALSTORE do Cliente Admin.

    DBLOGIN USERIDALIAS *alias*

    Por exemplo, se o alias for ggeast, o comando será:

    DBLOGIN USERIDALIAS ggeast
  3. Adicione uma tabela de checkepoint ao banco de dados de origem.

    ADD CHECKPOINTTABLE *owner.table_name*

    Por exemplo:

    ADD CHECKPOINTTABLE ggs.checkpoint
  4. 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
  5. 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:

    1. Faça log-in no banco de dados PostgreSQL usando psql como usuário com a atribuição replicação.

    2. 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)
    3. Anote o `snapshot_name` e o `consistent_point`.
  6. Crie o snapshot usando o pg_dump (ou pg_dumpall para 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 nohup para 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_dumpall usa a snapshot_name recebida da saída na etapa 5c. No exemplo fornecido, a opção pg_dump pressupõ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.

  7. Adicione o Extract usando o comando ADD EXTRACT. O Extract deve ser posicionado no consistent_point rastreado na etapa 5c:

    ADD EXTRACT *extract_name*, TRANLOG, LSN *lsn_value*

    Por exemplo:

    ADD EXTRACT *extecdc*, TRANLOG, LSN 1/42332A6B0

    Posicionando 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.

  8. 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*
  9. Inicie a Extração.

    START EXTRACT *extract_name*
  10. (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*
  11. Restaure o banco de dados no servidor de destino usando o comando pg_restore. Assim como no pg_dump, se a sessão for perdida, a restauração falhará, portanto, é recomendável usar a opção nohup. 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 &
  12. (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 CONNECT do 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*
  13. 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 comando ALTER CREDENTIALSTORE do Cliente Admin.

  14. Adicionar uma tabela de checkpoint ao banco de dados de destino.

    ADD CHECKPOINTTABLE ggs.chkpoint
  15. 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
  16. Inicie o Replicat depois da conclusão da restauração, como é mostrado no seguinte exemplo:

    START REPLICAT *repecdc*