Observação:

Sincronização entre regiões do OCI Database with PostgreSQL usando a extensão pglógica

Introdução

A extensão pglógica permite a replicação lógica em vários bancos de dados da Oracle Cloud Infrastructure (OCI) com instâncias PostgreSQL. Ele suporta a replicação PostgreSQL entre versões e facilita a sincronização de dados entre bancos de dados implantados nos Domínios de Disponibilidade Regional e Local no OCI. Além disso, ele permite a replicação entre bancos de dados hospedados no serviço PostgreSQL gerenciado do provedor multinuvem e instâncias da comunidade PostgreSQL autogerenciada, seja em execução na nuvem ou on-premises, oferecendo uma solução de replicação altamente flexível e interoperável.

Utilizando um modelo de publicação-assinatura, a linguagem pglógica permite a replicação de fluxo lógico para replicar alterações em tabelas, sequências e outros objetos de um editor para um assinante. Esta extensão é ideal para uma variedade de casos de uso, incluindo:

Limitações

A extensão pglógica pode não ser adequada para certos casos de uso devido às seguintes limitações:

Para mais informações, consulte Limitações e Restrições.

Objetivos

Pré-requisitos

Tarefa 1: Estabelecer a Comunicação entre Bancos de Dados

Para estabelecer conexão com o sistema de banco de dados entre regiões, o pareamento de VCN deve ser configurado.

Para criar o Pareamento de VCN usando o Gateway de Roteamento Dinâmico (DRG), siga as subtarefas:

Tarefa 1.1: Anexar o DRG a VCNs

  1. Crie a VCN na região de origem e na região de destino de acordo com seu requisito.

  2. Crie gateways de roteamento dinâmico (DRG) nas regiões de origem e destino de acordo com sua necessidade.

  3. Para anexar o DRG à VCN, selecione seu DRG na região de origem. Clique em Anexos da VCN e em Criar anexo da rede virtual na nuvem.

  4. Na página Criar anexo de VCN, informe o nome do anexo e selecione VCN-A (VCN da Região de Origem) e clique em Criar anexo da VCN.

  5. Repita as mesmas etapas para anexar sua VCN de destino.

Para obter mais informações, consulte Gateways de Roteamento Dinâmico.

Tarefa 1.2: Criar Conexão de Pareamento Remoto (RPC)

  1. Crie a RPC da região de origem (SOR-RPC).

  2. Vá para a página de detalhes SOURCE DRG e clique em Anexos de conexão de pareamento remoto.

  3. Clique em Criar conexão de pareamento remoto.

  4. Na página Criar conexão de pareamento remoto, informe o nome da conexão e selecione o compartimento. Em seguida, clique em Criar conexão de pareamento remoto.

  5. Para criar a RPC da região de destino (TAR-RPC), repita o mesmo procedimento feito acima para criar a RPC da região de destino.

Tarefa 1.3: Estabelecer Conexão RPC

Estabeleça a conexão da região Origem com a região Destino por meio da conexão SOR-RPC.

  1. Vá para a página de detalhes SOURCE DRG e clique em Anexos de conexão de pareamento remoto.

  2. Exiba os detalhes de SOR-RPC clicando no nome da conexão na coluna Conexão de Pareamento Remoto.

  3. Na página de detalhes da conexão, clique em Estabelecer Conexão, informe o nome da conexão e selecione o compartimento.

  4. Na página Estabelecer conexão, selecione a região nome da sua região de destino e digite o OCID da RPC de destino (TAR-RPC). Quando a conexão é estabelecida, o estado da RPC muda para PEERED.

    Portanto, o estado de pareamento TAR-RPC também muda para PEERED.

Tarefa 1.4: Configurar a Tabela de Roteamento em VCNs para Enviar Tráfego Destinado ao Anexo do DRG

  1. Configure a tabela de roteamento em Source-VCN para enviar tráfego para o CIDR de sub-rede privada Target-VCN.

  2. Vá para a página de detalhes Source-VCN e clique em Tabelas de Roteamento.

  3. Na lista de tabelas de roteamento, clique em tabela de roteamento para subnet-Source-VCN privada.

  4. Na página da tabela de roteamento, clique em Adicionar Regras de Roteamento e especifique as informações da regra de roteamento de acordo com seu requisito.

  5. Para configurar a tabela de roteamento em Target-VCN para enviar tráfego ao CIDR de sub-rede privada da VCN de Origem, repita as mesmas etapas feitas acima para configurar a tabela de roteamento da sub-rede privada da VCN de Origem.

Tarefa 1.5: Adicionar Regra de Entrada de segurança para Permitir Tráfego entre Sub-redes Privadas de VCNs por meio do DRG

  1. Adicione a regra de entrada à lista de segurança para sub-rede privada-Origem-VCN da VCN de origem para permitir o tráfego proveniente da sub-rede Target-VCN-private para a sub-rede Source-VCN-private

  2. Vá para a página de detalhes Source-VCN e clique em Security List e Security list for private subnet-Source-VCN.

  3. Na página Lista de Segurança, clique em Adicionar Regras de Entrada e especifique informações sobre a regra de entrada de acordo com seu requisito.

  4. Para adicionar a regra de entrada à lista de segurança para a sub-rede privada - VCN de Destino do Target-VCN para permitir o tráfego proveniente da sub-rede Source-VCN-private para a sub-rede Target-VCN-private, repita as mesmas etapas executadas acima para adicionar a regra de Entrada para a VCN de Destino, mas use a regra de Entrada apropriada.

Tarefa 1.6: Teste e Validação de Conectividade de Banco de Dados entre Regiões

Conecte-se ao Source-VM para verificar a conectividade com o banco de dados de destino e, simultaneamente, valide a conectividade do banco de dados de origem da VM de destino para garantir a comunicação bidirecional.

Tarefa 2: Configurar entrada de registro A

Uma entrada de registro A deve ser configurada para resolver o FQDN (Nome de Domínio Totalmente Qualificado) do sistema de banco de dados entre regiões. Neste tutorial, a região de Mumbai serve como a região de destino.

  1. Alterne para a região de destino (Mumbai), digite DNS na barra de pesquisa e selecione Views Privadas.

  2. A lista de VCN da região atual será exibida. Selecione a VCN em que o DRG já está configurado.

  3. A lista de zonas DNS aparecerá, incluindo o FQDN do sistema de banco de dados em Mumbai.

  4. Adicione uma entrada para o sistema de banco de dados remoto.

    1. Clique em Criar Zona.

      image

    2. Em Nome da Zona, informe o FQDN do sistema de banco de dados na outra região (Ashburn).

    3. Clique em Criar para adicionar a nova entrada de zona.

  5. Configure a entrada de registro A.

    1. Abra a zona recém-criada, clique em Gerenciar Registros e selecione Adicionar Registro.

    2. Digite as seguintes informações.

      • Nome: Informe um nome.

      • Tipo: Selecione A (IPv4 Address).

      • TTL: Informe 3600 segundos (modifique de acordo com o requisito do seu aplicativo).

      • Modo RDATA: Selecione Básico.

      • Endereço: Informe o endereço IP do ponto final principal do sistema de banco de dados na outra região.

  6. Clique em Salvar Alterações e, em seguida, em Publicar Alterações para aplicar a configuração.

    Com essa configuração, o sistema de banco de dados B (Mumbai) agora pode resolver e se conectar ao sistema de banco de dados A (Ashburn) usando o FQDN, permitindo uma comunicação perfeita entre regiões do banco de dados.

Tarefa 3: Criar Sistemas de Banco de Dados na Região

Implemente um banco de dados PostgreSQL em regiões na OCI para estabelecer uma estratégia robusta de DR (Recuperação de Desastres). Para obter mais informações sobre como criar um banco de dados PostgreSQL no OCI, consulte Criando um Sistema de Banco de Dados.

Tarefa 4: Ativar a Extensão pglógica em toda a Região

Este tutorial demonstra a implementação da DR designando Ashburn como a região de origem e Mumbai como a região de destino.

  1. Na região Ashburn, faça log-in na Console do OCI, navegue até o banco de dados PostgreSQL, selecione seu sistema de banco de dados e modifique as definições de configuração acessando o arquivo de configuração.

    image

  2. Você será redirecionado para o arquivo de configuração completo. Selecione Copiar Configuração para continuar, o que exibirá a página a seguir.

    image

  3. Insira as informações necessárias com base em suas especificações. Em seguida, navegue até Variáveis do Usuário (Leitura/Gravação), clique em Adicionar Outra Variável e selecione Nome da variável como wal_level e track_commit_timestamp e Valor da variável como logical e 1, respectivamente.

  4. Em Configurar Extensões, selecione pglogical como extensões PostgreSQL.

  5. Clique em Criar para gerar o arquivo de configuração.

    image

  6. Navegue até o sistema de banco de dados, selecione Editar em Configuração e aplique a configuração criada anteriormente ao sistema de banco de dados.

  7. O sistema de banco de dados mostrará o estado Atualizando. Aguarde até que ele se torne Ativo antes de continuar.

  8. Depois de ativar, faça logon no sistema de banco de dados e verifique as extensões ativadas usando a consulta a seguir.

    SHOW oci.admin_enabled_extensions;
    
  9. Crie a extensão pglógica usando o comando a seguir.

    CREATE EXTENSION pglogical;
    

    Veja a seguir uma amostra de saída dos comandos.

    pglogical_source=> show oci.admin_enabled_extensions ;
    oci.admin_enabled_extensions
    ------------------------------
    pglogical
    (1 row)
    
    pglogical_source=> create extension pglogical;
    CREATE EXTENSION
    
  10. Repita o mesmo procedimento no outro banco de dados da região (Mumbai) para ativar a extensão pglógica.

Tarefa 5: Configurar o Banco de Dados de Origem

Execute a consulta a seguir para conceder permissões no banco de dados de origem para ativar a replicação lógica.

alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;

Observe que 'psql' é o exemplo de usuário criado durante o processo de configuração do banco de dados.

Tarefa 6: Configurar a Replicação de Extensão pglógica no Banco de Dados de Origem

  1. Crie o nó do editor no banco de dados de origem.

    SELECT pglogical.create_node(node_name := 'provider1',dsn :='host=primary.xxxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_source');
    
    • node_name: Especifique o nome do editor a ser criado no banco de dados de origem.
    • host: Informe o nome de domínio totalmente qualificado (FQDN) do banco de dados de origem.
    • port_number: Forneça a porta na qual o banco de dados de origem está em execução.
    • database_name: Especifique o banco de dados no qual a publicação será criada.
  2. Inclua todas as tabelas no esquema público no conjunto de replicação padrão.

    SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
    

Tarefa 7: Configurar Banco de Dados de Destino

Execute a consulta a seguir para conceder permissões no banco de dados de destino para ativar a replicação lógica.

alter role psql with replication;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_reset() to psql ;
grant EXECUTE on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql ;
grant all on FUNCTION pg_catalog.pg_replication_origin_session_setup to psql;

Observe que 'psql' é o exemplo de usuário criado durante o processo de configuração do banco de dados.

Após conceder as permissões necessárias, replique todos os objetos necessários no banco de dados de destino para corresponder à estrutura do banco de dados de origem.

Tarefa 8: Configurar a Replicação pglógica no Banco de Dados de Destino

  1. Crie o nó do assinante no banco de dados de destino.

    SELECT pglogical.create_node(node_name := 'subscriber1',dsn :='host=primary.xxxxxxx.postgresql.ap-mumbai-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxx dbname=pglogical_target');
    
    • node_name: Defina o nome do assinante no banco de dados de destino.
    • host: Informe o nome de domínio totalmente qualificado (FQDN) do banco de dados de destino.
    • port_number: Informe a porta na qual o banco de dados de destino está sendo executado.
    • database_name: Forneça o nome do banco de dados em que a assinatura será criada.
  2. Crie a assinatura no nó do assinante, que iniciará os processos de sincronização e replicação em segundo plano.

    SELECT pglogical.create_subscription(subscription_name := 'subscription1',provider_dsn := 'host=primary.xxxxxxxx.postgresql.us-ashburn-1.oci.oraclecloud.com port=5432 user=xxxx password=xxxxxx dbname=pglogical_source sslmode=verify-full sslrootcert=/etc/opt/postgresql/ca-bundle.pem');
    
    SELECT pglogical.wait_for_subscription_sync_complete('subscription1');
    
    • subscription_name: Forneça o nome da assinatura.
    • host: Fornecer o FQDN do banco de dados de origem.
    • port_number: Forneça a porta na qual o banco de dados de destino está em execução.
    • database_name: Informe o nome do banco da dados de origem.

    Observação: use sslmode=verify-full e sslrootcert = /etc/opt/postgresql/ca-bundle.pem na string de criação de assinatura para evitar falhas de conexão.

Tarefa 9: Verificar o Status da Assinatura

Execute a instrução a seguir para verificar o status da sua assinatura no banco de dados de destino.

select * from pglogical.show_subscription_status();

Tarefa 10: Verificar se a Replicação de Dados está em Execução

Execute a instrução a seguir para verificar o status da replicação no banco de dados de origem.

SELECT * FROM pg_stat_replication;

Tarefa 11: (Opcional) Interromper ou Iniciar a Replicação

Observação: em subscription_name, informe o nome da assinatura criada no destino.

Tarefa 12: (Opcional) Eliminar a Assinatura

Para eliminar a assinatura no seu banco de dados de destino, execute o comando a seguir.

select pglogical.drop_subscription('subscription_name');

Observação: em subscription_name, informe o nome da assinatura criada no destino.

Diagnosticando e Solucionando Problemas

Próximas Etapas

Este tutorial fornece uma abordagem abrangente na implementação de uma solução de DR entre regiões no OCI Database with PostgreSQL usando a extensão pglógica. Ele aborda o processo de configuração, a replicação de dados e a solução de problemas comuns.

Além disso, esse método pode ser aplicado às atualizações do PostgreSQL, garantindo o mínimo de tempo de inatividade e permitindo um cutover suave do aplicativo quando o banco de dados de destino estiver totalmente sincronizado com a origem.

Confirmações

Mais Recursos de Aprendizado

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.