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.
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:
- Nome de usuário da console do OCI GoldenGate:
oggadmin
. - OCI GoldenGate versão:
23ai
. - Nome do administrador do OCI Database with PostgreSQL:
admin
.
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
-
Crie o OCI Database with PostgreSQL.
-
Provisionar implantação do OCI GoldenGate.
-
Crie banco de dados on-premises e conexão de banco de dados do OCI na implantação e designe conexões.
-
Preparar o servidor e o banco de dados de origem.
-
Crie o processo Extract de carga inicial.
-
Faça backup dos metadados do banco de dados de origem usando o utilitário
pg_dump
. -
Importe metadados para o OCI Database with PostgreSQL.
-
Criar Replicat de carga inicial usando arquivo de trilha.
-
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.
-
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.
-
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
-
Crie ou selecione um vault para a senha do administrador do banco de dados. Para obter mais informações, consulte Gerenciando Vaults.
-
Crie uma chave para a senha do banco de dados. Para obter mais informações, consulte Gerenciando Chaves.
-
Crie um segredo para a senha do banco de dados. Para obter mais informações, consulte Gerenciando Segredos do Vault.
-
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.
-
Selecione Configuração de hardware.
-
Selecione Rede Virtual na Nuvem e Sub-rede e informe Credenciais do administrador do sistema de banco de dados. Neste exemplo, Username será admin.
Depois que a criação for concluída, o sistema de banco de dados mostrará o estado Ativo.
-
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
-
Vá para a Console do OCI, navegue até Oracle Database, GoldenGate, Implantações e clique em Criar Implantação.
-
Especifique as informações necessárias especificadas nas imagens a seguir e selecione PostgreSQL como Selecionar uma Tecnologia.
-
Em Configurar sua implantação, use
oggadmin
como Nome do Usuário para fazer log-in na Console GoldenGate do OCI como administrador. -
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.
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.
-
Crie uma conexão de banco do dados de origem.
-
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. -
Selecione Tipo como PostgreSQL Server, Protocolo de Segurança como Simples e clique em Criar.
-
-
Criar conexão com o banco de dados de destino.
-
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.
-
Selecione Tipo como OCI PostgreSQL.
-
Selecione Security Protocol como TLS e SSL Mode como Require.
-
-
Atribua as conexões de banco de dados à implantação.
-
Vá para Implantações, clique no nome da implantação (
PG_Mig_deployment
), selecione Designar conexões e clique em Designar Conexão. -
Insira as informações necessárias conforme mostrado nas imagens a seguir.
Você verá o estado Ativo após a conclusão da designação da conexão.
-
Tarefa 4: Preparar o Servidor e o Banco de Dados de Origem
-
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 comandosudo 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.
-
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.
-
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.
-
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.
-
Clique em Iniciar Console e informe as credenciais de log-in.
-
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.
Uma conexão bem-sucedida é boa para iniciar a carga inicial neste estágio.
-
Vá para a Console do OCI GoldenGate, navegue até Extrair e clique em +.
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.
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
-
Vá para a Console do OCI GoldenGate, navegue até Replicats e clique em + para criar o Replicat.
-
Clique em Criar e executar para iniciar o processo Replicate de carga inicial. Depois de concluído, verifique as contagens de linhas da tabela.
-
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.
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.
-
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.
-
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.
Podemos ver atraso de zero segundos no CDC Extract após algum tempo.
Tarefa 10: Criar Replicação On-line fornecendo o Arquivo de Trilha de Extração CDC
-
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.
-
Clique em Criar e Executar após modificar o comando
MAP
.Podemos ver atraso de zero segundos no Replicat On-line após algum tempo.
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.
Contagem e dados da tabela de verificação do lado de destino.
Links Relacionados
-
Preparar Usuários e Privilégios do Banco de Dados para PostgreSQL
-
Instanciação Precisa entre Ambientes PostgreSQL Usando pg_dump
Confirmação
- Autor - Sivakrishna Burle (Engenheira Sênior de Nuvem, Oracle North America Cloud Services - NACIE)
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.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39915-02
Copyright ©2025, Oracle and/or its affiliates.