Provisione o OCI Database with PostgreSQL e Migre do Local com Tempo de Inatividade Mínimo usando o OCI GoldenGate

Introdução

O Oracle Cloud Infrastructure Database com PostgreSQL (OCI Database with PostgreSQL) é um serviço totalmente gerenciado compatível com PostgreSQL que oferece desempenho 3 vezes maior por meio de armazenamento otimizado para banco de dados, metade do custo em comparação com o Amazon Web Service (AWS), fornece backups automatizados, alta disponibilidade, manutenção programada, escala de armazenamento dinâmica, dimensionamento vertical e assim por diante.

Exemplo: Continuidade de Negócios

O serviço OCI Database with PostgreSQL oferece um SLA (Service Level Agreement) de 99,99% de tempo de atividade, um RTO (Recovery Time Objective) de menos de 2 minutos para sistemas de banco de dados com vários nós e um RPO (Recovery Point Objective) de 0 sem perda de dados. Para sistemas de banco de dados de nó único em regiões de Domínios de Disponibilidade (AD) únicos, o serviço oferece um SLA de tempo de atividade de 99,9%, um RTO de menos de 20 minutos e um RPO de 0.

O OCI Database with PostgreSQL aproveita o OCI Block Volumes para armazenar dados do usuário. Portanto, as mesmas garantias de durabilidade, segurança e desempenho se aplicam. Para obter mais informações, consulte Visão Geral do OCI Database with PostgreSQL e Primeiros Princípios: Otimizando o PostgreSQL para a nuvem.

informar descrição da imagem aqui

Este tutorial se concentra na migração de um banco de dados PostgreSQL on-premises para o OCI Database with PostgreSQL usando o OCI GoldenGate com tempo de inatividade mínimo.

Detalhes de Ambiente:

  Origem no Local OCI de Destino
Nome BD product_inventory alvodb
Usuário gerenciador de pedidos admin
Esquema data_analyze data_analyze
Versão BD 15.12 15.6

Objetivos

  1. Crie o OCI Database with PostgreSQL.

  2. Provisionar implantação do OCI GoldenGate.

  3. Crie banco de dados on-premises e conexão de banco de dados do OCI na implantação e designe conexões.

  4. Preparar o servidor e o banco de dados de origem.

  5. Crie o processo Extract de carga inicial.

  6. Faça backup dos metadados do banco de dados de origem usando o utilitário pg_dump.

  7. Importe metadados para o OCI Database with PostgreSQL.

  8. Criar Replicat de carga inicial usando arquivo de trilha.

  9. Crie on-line ou Extração de Captura de Dados de Alteração (CDC) alterando para iniciar o Número de Sequência de Log (LSN) para captura.

  10. Criar Replicat on-line fornecendo o arquivo de trilha de Extração CDC.

Tarefa 1: Provisionar o OCI Database with PostgreSQL

Esta tarefa explica como criar o sistema de banco de dados e as políticas a seguir são necessárias antes do provisionamento. Para obter mais informações, consulte Gerenciando um Sistema de Banco de Dados.

  1. Adicione as políticas do Oracle Cloud Infrastructure Identity and Access Management (IAM) a seguir.

    Allow group <postgresql-admin-group> to read compartments in tenancy
    Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ]
    Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
    
  2. Crie ou selecione um vault para a senha do administrador do banco de dados. Para obter mais informações, consulte Gerenciando Vaults.

  3. Crie uma chave para a senha do banco de dados. Para obter mais informações, consulte Gerenciando Chaves.

  4. Crie um segredo para a senha do banco de dados. Para obter mais informações, consulte Gerenciando Segredos do Vault.

  5. Faça log-in na Console do OCI, navegue até Banco de Dados, PostgreSQL, Sistemas de BD, Criar novo sistema de banco de dados e clique em Próximo.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  6. Selecione Configuração de hardware.

    informar descrição da imagem aqui

  7. Selecione Rede Virtual na Nuvem e Sub-rede e informe Credenciais do administrador do sistema de banco de dados. Neste exemplo, Username será admin.

    informar descrição da imagem aqui

    Depois que a criação for concluída, o sistema de banco de dados mostrará o estado Ativo.

    informar descrição da imagem aqui

  8. Execute o comando a seguir para verificar a conexão com o OCI Database with PostgreSQL no nó de computação.

    -bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address>  user=admin dbname=postgres"
    Password for user admin:
    psql (15.12, server 15.6)
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
    Type "help" for help.
    postgres=>
    

Tarefa 2: Criar uma Implantação do OCI GoldenGate para Migração

  1. Vá para a Console do OCI, navegue até Oracle Database, GoldenGate, Implantações e clique em Criar Implantação.

  2. Especifique as informações necessárias especificadas nas imagens a seguir e selecione PostgreSQL como Selecionar uma Tecnologia.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  3. Em Configurar sua implantação, use oggadmin como Nome do Usuário para fazer log-in na Console GoldenGate do OCI como administrador.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  4. Clique em Criar para iniciar a criação e a implantação. Quando a operação for concluída com sucesso, o estado de Active será mostrado.

    informar descrição da imagem aqui

Tarefa 3: Criar Conexão de Banco de Dados Local, Conexões de Banco de Dados do OCI na Implantação e Atribuir Conexões

O OCI GoldenGate requer a conexão de banco de dados de origem e de destino e designa ambas as conexões à implantação.

  1. Crie uma conexão de banco do dados de origem.

    1. Clique no nome da implantação (PG_Mig_deployment), selecione Conexões e clique em Criar Conexão. Insira as informações necessárias conforme mostrado nas imagens a seguir.

      informar descrição da imagem aqui

    2. Selecione Tipo como PostgreSQL Server, Protocolo de Segurança como Simples e clique em Criar.

      informar descrição da imagem aqui

  2. Criar conexão com o banco de dados de destino.

    1. Clique no nome da implantação, selecione Conexões e clique em Criar Conexão. Insira as informações necessárias conforme mostrado nas imagens a seguir.

      informar descrição da imagem aqui

    2. Selecione Tipo como OCI PostgreSQL.

      informar descrição da imagem aqui

    3. Selecione Security Protocol como TLS e SSL Mode como Require.

      informar descrição da imagem aqui

  3. Atribua as conexões de banco de dados à implantação.

    1. Vá para Implantações, clique no nome da implantação (PG_Mig_deployment), selecione Designar conexões e clique em Designar Conexão.

      informar descrição da imagem aqui

    2. Insira as informações necessárias conforme mostrado nas imagens a seguir.

      informar descrição da imagem aqui

      Você verá o estado Ativo após a conclusão da designação da conexão.

      informar descrição da imagem aqui

Tarefa 4: Preparar o Servidor e o Banco de Dados de Origem

  1. Instale o pacote postgresql15-contrib.

    O OCI GoldenGate requer o pacote postgresql14-contrib no servidor de banco de dados de origem para extrair do banco de dados do servidor PostgreSQL. O pacote pode ser instalado usando o comando sudo yum install postgresql15-contrib (a versão do banco de dados de origem é 15).

    Observação: É recomendável que a versão das bibliotecas cliente corresponda à versão do banco de dados PostgreSQL. Versões de cliente abaixo de 10 não são suportadas.

  2. Prepare a criação de usuários do banco de dados no banco de dados de origem e os privilégios necessários.

    product_inventory=# create user  ggreplication with password 'abc1234';
    ERROR:  role "ggreplication" already exists
    product_inventory=#
    product_inventory=#  select current_database();
     current_database
    -------------------
     product_inventory
    (1 row)
    
    product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication;
    GRANT
    product_inventory=# ALTER USER ggreplication WITH 	REPLICATION;
    ALTER ROLE
    product_inventory=# ALTER USER ggreplication WITH SUPERUSER;
    ALTER ROLE
    product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE ON DATABASE product_inventory  TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication;
    GRANT
    product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication;
    GRANT
    product_inventory=#
    

    Para obter mais informações sobre a finalidade específica de cada privilégio, consulte Preparar Usuários e Privilégios do Banco de Dados para PostgreSQL.

  3. A seguir estão os parâmetros no arquivo de configuração do banco de dados PostgreSQL. O local do arquivo de configuração é $PGDATA/postgresql.conf.

    wal_level = logical   **# set to logical for Capture**
    
    max_replication_slots = 1 **# max number of replication and one slot for Extract/Client**
    
    max_wal_senders = 1 **# one sender per max repl slot**
    
    track_commit_timestamp = on **# optional, correlates tx commit time**  with begin tx log record (useful for  # timestamp-	based positioning)
    

    Observação:

    • Após fazer qualquer uma das alterações anteriores, reinicie o banco de dados.
    • A replicação do OCI GoldenGate suportou tipos de dados PostgreSQL e a limitação nos tipos de dados, objetos e operações suportados podem ser verificados na documentação. Para obter mais informações, consulte Preparar Bancos de Dados.

Tarefa 5: Criar Extração de Carga Inicial

Precisamos criar o Extract de carga inicial e isso fornecerá a seção de relatório LSN no OCI GoldenGate Extract.

  1. Vá para a Console do OCI, navegue até Banco de Dados, GoldenGate, Implantações e clique no nome da implantação criado na Tarefa 2.

    informar descrição da imagem aqui

  2. Clique em Iniciar Console e informe as credenciais de log-in.

    informar descrição da imagem aqui

  3. Vá para Conexões de BD e isso deverá exibir as conexões de banco de dados de origem e OCI Database with PostgreSQL e verificar a verificação de conectividade.

    informar descrição da imagem aqui

    Uma conexão bem-sucedida é boa para iniciar a carga inicial neste estágio.

  4. Vá para a Console do OCI GoldenGate, navegue até Extrair e clique em +.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    Depois que o Extract de carga inicial for interrompido, verifique os arquivos de relatório do OCI GoldenGate e anote os detalhes do LSN e mantenha-o acessível para uso na Tarefa 9.

    informar descrição da imagem aqui

Tarefa 6: Fazer Backup dos Metadados do Banco de Dados de Origem usando o Comando pg_dump

O comando pg_dump é usado apenas para fazer dump dos metadados do banco de dados de origem product_inventory.

pg_dump -h localhost  -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump

Tarefa 7: Importar Metadados no OCI Database with PostgreSQL

Use o binário pg_restore para importar para o OCI Database with PostgreSQL. Aqui, o nome do banco de dados do OCI é targetdb.

Execute o comando de restauração no nó do OCI Compute no qual executamos com sucesso o comando de conexão na Tarefa 1.8.

pg_restore -h <OCI IP address>  -U admin -d targetdb  -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
         List of schemas
     Name     |       Owner
--------------+-------------------
 data_analyze | admin
 ordermanager | admin
 public       | pg_database_owner
(3 rows)

Observação: use a consulta select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name; para verificar os nomes das tabelas após a importação de metadados no destino.

Tarefa 8: Criar Replicação de Carga Inicial usando Arquivo de Trilha

  1. Vá para a Console do OCI GoldenGate, navegue até Replicats e clique em + para criar o Replicat.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  2. Clique em Criar e executar para iniciar o processo Replicate de carga inicial. Depois de concluído, verifique as contagens de linhas da tabela.

  3. Vá para Relatórios e verifique os relatórios Replicate de carga inicial. Verificar as poucas linhas da tabela conta em ambos os bancos de dados.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

Tarefa 9: Criar Extração CDC Alterando para LSN Inicial para Captura

A Extração CDC é uma extração on-line usada para capturar alterações contínuas no banco de dados existente e a Extração CDC inicia a captura do número LSN coletado.

  1. Vá para a Console do OCI GoldenGate, navegue até Extrações, clique em + e digite as informações necessárias, conforme mostrado nas imagens a seguir.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  2. Depois que o CDC for registrado e criado, clique em Iniciar com Opções para instruir a leitura do LSN específico que é coletado na Tarefa 5.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

    Podemos ver atraso de zero segundos no CDC Extract após algum tempo.

    informar descrição da imagem aqui

Tarefa 10: Criar Replicação On-line fornecendo o Arquivo de Trilha de Extração CDC

  1. Vá para a Console do OCI GoldenGate, navegue até Replicats, clique em + e digite as informações necessárias, conforme mostrado nas imagens a seguir.

    informar descrição da imagem aqui

    informar descrição da imagem aqui

  2. Clique em Criar e Executar após modificar o comando MAP.

    informar descrição da imagem aqui

    Podemos ver atraso de zero segundos no Replicat On-line após algum tempo.

    informar descrição da imagem aqui

Verificação

Execute as consultas a seguir para inserir na tabela de origem data_analyze.table3 replica para a tabela data_analyze.table3 do banco de dados de destino.

informar descrição da imagem aqui

Contagem e dados da tabela de verificação do lado de destino.

informar descrição da imagem aqui

Confirmação

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.