Importando, Exportando e Migrando Bancos de Dados

Migre dados de outro banco de dados PostgreSQL para um sistema de banco de dados OCI Database with PostgreSQL.

Usando Utilitários PostgreSQL, como pg_dump

O utilitário pg_dump vem com uma instalação PostgreSQL por padrão e pode ser utilizado para extrair um banco de dados PostgreSQL em um arquivo de script ou outro arquivo de arquivamento. Esses arquivos podem ser fornecidos a um OCI Database with PostgreSQL com comandos psql ou pg_restore para recriar um banco de dados no mesmo estado no momento de seu dump.

Ao criar um OCI Database with PostgreSQL, você especifica um usuário administrador. Esse usuário pode restaurar a partir de um arquivo criado usando esses utilitários. Como esses utilitários são aplicativos clientes PostgreSQL regulares, você pode executar esse procedimento de migração de qualquer host remoto que tenha acesso ao banco de dados.

Observação

Este guia usa pg_dump para criar os despejos em formato de texto sem formatação e o utilitário psql para restaurar o dump. Você também pode criar dumps em um formato diferente e usar pg_restore para restaurar os dumps.

Exemplo: Exportar e importar todos os bancos de dados de um sistema de banco de dados

O exemplo a seguir pressupõe que o sistema de banco de dados de origem seja um sistema PostgreSQL comum, com três bancos de dados: db_1, db_2 e db_3. O sistema de banco de dados de origem tem muitos usuários, alguns deles com privilégios SUPERUSER.

  1. Faça o dump somente do esquema de todos os bancos de dados. Despeje cada banco de dados em um arquivo individual com as informações de propriedade de objeto dos usuários.

    /usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -s -E 'UTF8' -d <db_1> -f <db_1_schema_dump>.sql
    • -U: Usuário que está criando o dump
    • -h: Endereço do host do banco de dados de origem
    • -s: Esquema somente de dump, sem dados
    • -E: Defina a codificação do cliente do arquivo de dump como UTF-8
    • -d: Banco de dados para dump
    • -f: Arquivo O/p para fazer dump do esquema do banco de dados

    Repita isso para os bancos de dados db_2 e db_3.

  2. Crie um dump somente de dados de cada banco de dados em arquivos individuais.

    /usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -a -E 'UTF8' -d db_1 -f <db_1_data_dump>.sql
    • -a: Dump somente os dados, não o esquema

    Repita isso para os bancos de dados db_2 e db_3.

  3. Dump de objetos globais sem informações de tablespace.

    /usr/lib/postgresql/bin/pg_dumpall -U psql -h <IP_of_Source_DB> -g --no-role-passwords --no-tablespaces -f <all_roles>.sql
    • -g: Dump somente objetos globais, sem bancos de dados
    • --no-role-passwords: use este sinalizador para evitar despejo de senhas.
    • --no-tablespaces: O OCI Database with PostgreSQL suporta apenas tablespaces no local.
  4. Como o usuário administrador do sistema de banco de dados do OCI Database with PostgreSQL não tem privilégios SUPERUSER, NOSUPERUSER, NOREPLICTION etc., precisa ser removido das instruções CREATE USER no dump.

    Faça as alterações necessárias no arquivo de dump global para remover quaisquer comandos que precisem de privilégios SUPERUSER. Por exemplo:

    ALTER ROLE/USER test WITH NOSUPERUSER NOINHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'test';
    

    Deveria ser modificado para:

    ALTER ROLE/USER test WITH LOGIN PASSWORD 'test';
  5. Restaure o dump global usando o usuário administrador do OCI Database with PostgreSQL no sistema de banco de dados do OCI Database with PostgreSQL para criar todas as atribuições/usuários:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <all_roles>.sql  
  6. Restaure os dumps do banco de dados somente do esquema:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_schema_dump>.sql

    Repita isso para os bancos de dados db_2 e db_3.

    Observação

    Corrija os erros com privilégios ou incompatibilidades de objeto antes de continuar.
  7. Restaure os dumps de banco de dados somente de dados:

    /usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_data_dump>.sql

    Repita isso para os bancos de dados db_2 e db_3.

  8. Verifique as contagens de linhas de todas as tabelas em relação ao banco de dados de origem.
  9. Certifique-se de que todos os níveis de permissão do sistema de banco de dados de origem sejam refletidos com precisão no sistema de banco de dados OCI Database with PostgreSQL.
  10. Defina senhas para os usuários criados no sistema de banco de dados do OCI Database with PostgreSQL.
  11. Execute VACUUM ANALYZE em cada banco de dados ou tabelas individuais para atualizar as estatísticas dos bancos de dados. Esse comando ajuda o planejador de consultas PostgreSQL a criar planos de consulta otimizados, resultando em melhor desempenho. Para acelerar a conclusão do VACUUM ANALYZE, recomendamos aumentar o maintenance_work_mem na sessão PSQL. O VACUUM ANALYZE também pode ser executado em sessões separadas em paralelo para reduzir o tempo de conclusão.

    SET maintenance_work_mem = '<a_few_gigabytes_depending_on_shape>';
    VACUUM ANALYZE <db_1>;

    Repita isso para os bancos de dados db_2 e db_3.

    Observação

    Recomendamos que você execute VACUUM ANALYZE e REINDEX periodicamente em tabelas e índices inchados para manter o desempenho do sistema de banco de dados. Execute esta operação fora do horário de pico para evitar qualquer impacto nos aplicativos.

Usando o GoldenGate

Você pode usar GoldenGate para configurar a replicação de um banco de dados PostgreSQL de origem para um sistema de banco de dados OCI Database with PostgreSQL.

As etapas a seguir abrangem a configuração de origem, destino e GoldenGate para manter os bancos de dados sincronizados. Você pode optar por transferir para o OCI Database with PostgreSQL a qualquer momento, sem tempo de inatividade, após a conclusão bem-sucedida do processo.

  1. Preparando o Banco de Dados de Origem
  2. Descarregando o Esquema do Banco de Dados de Origem
  3. Preparando o Sistema de Bancos de Dados de Destino
  4. Usando GoldenGate para Replicação

Pré-requisitos

Para usar o GoldenGate, certifique-se de que os seguintes pré-requisitos sejam atendidos:

Preparando o Banco de Dados de Origem

Os bancos de dados de origem devem atender aos requisitos de usuário e configuração para que GoldenGate extraia e replique dados.

Requisitos do Usuário

Os processos GoldenGate exigem um usuário de banco de dados que possa capturar dados de origem e entregá-los ao OCI Database with PostgreSQL. We recommend creating a dedicated PostgreSQL database user for both GoldenGate Extract and GoldenGate Replicat. Para obter mais informações sobre usuários de banco de dados e GoldenGate, consulte Privilégios de Banco de Dados do Oracle GoldenGate para PostgreSQL.

Requisitos de configuração

Qualquer banco de dados de origem precisa ser configurado para acomodar o processo de extração GoldenGate. Os parâmetros obrigatórios com seus valores para qualquer banco de dados de origem são os seguintes:

  • listen_addresses: Para conectividade remota de um Extract ou Replicat, defina "listen_addresses = * " para permitir conectividade remota de banco de dados.
  • wal_level: O log de gravação antecipada no banco de dados de origem deve ser definido como logical, que adiciona informações necessárias para suportar a decodificação de registros transacionais.
  • max_replication_slots: O número máximo de slots de replicação deve ser definido para acomodar um slot aberto por GoldenGate Extract. Em geral, não é necessário mais de um Extract GoldenGate por banco de dados.
    Observação

    Se o banco de dados de origem já estiver usando a replicação nativa PostgreSQL e todos os slots de replicação disponíveis, aumente o valor para permitir o registro de um Extract GoldenGate.
  • max_wal_senders: Defina o valor máximo de remetentes de write-ahead para corresponder ao valor máximo de slots de replicação.
  • track_commit_timestamp: Opcionalmente, os timestamps de commit podem ser ativados no log de write-ahead. Se ativado ao mesmo tempo em que o log lógico de gravação antecipada é ativado, os registros de commit DML desse ponto em diante são capturados com o valor de timestamp correto. Caso contrário, o primeiro registro capturado por GoldenGate terá um timestamp de commit incorreto.

Para usar a Comunidade PostgreSQL como um banco de dados de origem, o usuário pode fazer alterações de configuração no arquivo postgresql.conf e reiniciar o banco de dados para tornar as alterações efetivas:

listen_addresses = *
wal_level = logical                      
max_replication_slots = 1  (min required for GG)         
max_wal_senders = 1  (min required for GG)                       
track_commit_timestamp = on
Amazon Aurora PostgreSQL como fonte

No Amazon Aurora PostgreSQL, as definições do banco de dados são alteradas usando grupos de parâmetros. Revise a documentação do Amazon AWS para obter informações sobre como editar definições de banco de dados em um novo grupo de parâmetros e designá-las a uma instância de banco de dados.

Certifique-se de que os requisitos de configuração do banco de dados sejam atendidos verificando as definições no grupo de parâmetros designado à instância.

A definição wal_level do Amazon Aurora é configurada com um parâmetro chamado rds.logical_replication. Defina rds.logical_replication como 1 para usar o banco de dados como origem para o Extract GoldenGate.

O usuário do banco de dados que está sendo usado para migração deve ter privilégios de replicação. Conceda privilégios ao usuário no sistema de origem do Amazon Aurora usando o seguinte:

grant replication to <migration-user>;
Amazon RDS para PostgreSQL como origem

No Amazon RDS para PostgreSQL, as definições do banco de dados são alteradas usando grupos de parâmetros. Revise a documentação do Amazon AWS para obter informações sobre como editar definições de banco de dados em um novo grupo de parâmetros e designá-las a uma instância de banco de dados.

Certifique-se de que os requisitos de configuração do banco de dados sejam atendidos verificando as definições no grupo de parâmetros designado à instância.

A definição wal_level para serviços de banco de dados Amazon é configurada com um parâmetro chamadords.logical_replication. Defina rds.logical_replication como 1 para usar o banco de dados como origem para o Extract GoldenGate.

O usuário do banco de dados que está sendo usado para migração deve ter privilégios de replicação. Conceda privilégios ao usuário no sistema de origem do Amazon RDS usando o seguinte:

grant replication to <migration-user>;
Azure Database para PostgreSQL como Origem

No Banco de Dados do Azure para PostgreSQL, as definições do banco de dados são alteradas usando parâmetros do servidor para a instância do banco de dados. Revise a documentação do Banco de Dados do Azure para PostgreSQL para obter informações sobre como editar definições do banco de dados.

Certifique-se de que os requisitos de configuração do banco de dados sejam atendidos verificando as definições na instância de origem.

Ao configurar GoldenGate para um Extract PostgreSQL em um Banco de Dados do Azure para o banco de dados PostgreSQL, wal_level deve ser ativado e definido como LOGICAL.

O usuário do banco de dados que está sendo usado para migração deve ter privilégios de replicação. Conceda privilégios ao usuário no sistema de origem usando o seguinte:

ALTER ROLE <migration-user> WITH REPLICATION;

Descarregando o Esquema do Banco de Dados de Origem

Teste a conectividade da instância do serviço Compute com o sistema de banco de dados de origem e, em seguida, faça dump do esquema do banco de dados de origem usando o seguinte comando:

/<path-to-binary>/pg_dump -U <user-to-take-dump> -h <IP-of-source-DB> -s -E 'UTF8' -d <source-DB-name> -f schema_only.sql
  • -U: Usuário que está criando o dump
  • -h: Endereço do host do banco de dados de origem
  • -s: Esquema somente de dump, sem dados
  • -E: Defina a codificação do cliente do arquivo de dump como UTF-8
  • -d: Banco de dados para dump
  • -f: Arquivo O/p para fazer dump do esquema do banco de dados

Este esquema é usado ao Preparar o Sistema de Banco de Dados de Destino. Consulte Usando Utilitários PostgreSQL, como pg_dump, para obter mais informações sobre pg_dump e OCI Database with PostgreSQL.

Preparando o Sistema de Bancos de Dados de Destino

Certifique-se de que os pré-requisitos para usar o GoldenGate para replicar dados no OCI Database with PostgreSQL sejam atendidos, que o banco de dados de origem esteja preparado e, em seguida, restaure o esquema do banco de dados de origem para o destino do OCI Database with PostgreSQL usando o seguinte comando:

/<path-to-binary>/psql -U <user-to-load-dump> -d <target-DB-name> -h <Private_endpoint_of_target_database_system> -f schema_only.sql
  • -U: Usuário restaurando o dump
  • -h: Endereço do host do banco de dados de destino
  • -d: Banco de dados para dump
  • -f: Arquivo O/p para fazer dump do esquema do banco de dados

Consulte Usando Utilties PostgreSQL, como pg_dump, para obter mais informações sobre psql e OCI Database with PostgreSQL.

Dica

Para obter mais informações sobre como usar uma instância para estabelecer conexão com um sistema de banco de dados, consulte Estabelecendo Conexão com um Banco de Dados.

Usando GoldenGate para Replicação

Use as etapas a seguir para configurar o GoldenGate para uso com o OCI Database with PostgreSQL. Use o compartimento que contém o sistema de banco de dados OCI Database with PostgreSQL.

  1. Crie uma implantação e selecione PostgreSQL como tecnologia.
  2. Crie uma conexão de origem com base no banco de dados de origem e na conectividade de teste.
  3. Crie uma conexão de destino do servidor PostgreSQL e uma conectividade de teste.

    Observação

    Para conectividade de rede, selecione Ponto final dedicado como método de roteamento de tráfego.
  4. Designe as conexões de origem e destino à implantação.
  5. Adicione um Extract para PostgreSQL à implantação a ser executada na conexão de origem e extraia ou capture dados.
    1. Ative o registro em log complementar no nível da tabela para o banco de dados de origem. Use o nome do esquema criado quando você tiver despejado o esquema do banco de dados de origem. Para obter detalhes, consulte a etapa Ativar registro em log complementar em Adicionar um Extract para PostgreSQL: Antes de começar.
    2. Adicione uma Extração de Carga Inicial (INI).
      1. Forneça um Nome da trilha, por exemplo, xx. Este arquivo contém as alterações que ocorrem no banco de dados de origem.
      2. Na página Arquivo de Parâmetro, certifique-se de que as seguintes opções estejam incluídas no arquivo:

        exttrail xx
        INITIALLOADOPTIONS USESNAPSHOT
        TABLE *.*;

        INITIALLOADOPTIONS deve ser adicionado para garantir um snapshot consistente do banco de dados após a conclusão da extração de carga inicial, com o número LSN.

      3. Selecione Criar e Executar.
      4. Monitore o processo até a conclusão e, em seguida, verifique o arquivo de relatório para o número LSN. Registre o número LSN para uso futuro.
  6. Adicionar outro Extract à implantação. Desta vez, escolha Alterar Extração de Captura de Dados (CDC) como o tipo de extração.
    1. Para Iniciar, selecione Nenhum.
    2. Forneça um Nome da Trilha, por exemplo, yy.
    3. Na página Arquivo de Parâmetro, certifique-se de que as seguintes opções estejam incluídas no arquivo:

      exttrail yy
      TABLE public.*;

      INITIALLOADOPTIONS deve ser adicionado para garantir um snapshot consistente do banco de dados após a conclusão da extração de carga inicial, com o número LSN.

    4. Selecione Criar. Não execute a extração ainda.
    5. Na página de implantação, no menu Ação do novo CDC, selecione Iniciar com Opção.
    6. Para Ponto de Início, selecione No CSN
    7. Para CSN, digite o número do LSN da extração inicial e selecione Iniciar. As transações no banco de dados de origem serão capturadas e mostradas na guia Estatísticas da Extração CDC.
    Observação

    Até o momento, só estamos trabalhando com o banco de dados de origem. O início do Extract de Carga Inicial e do CDC registra alterações na origem nos respectivos arquivos de trilha na implantação. O processo Replicat entrega os dados desses arquivos de trilha para o sistema de banco de dados OCI Database with PostgreSQL.
  7. Adicione um processo de Replicat para PostgreSQL à implantação. Esse processo de Replicat é para o Initial Load Extract (REINI).
    1. Criar uma tabela de checkpoint. Para obter detalhes, consulte Adicionar um processo Replicate para PostgreSQL: Antes de começar.
    2. Ao criar o processo Replicat, forneça o Nome da Trilha do INI, por exemplo, xx.
    3. Forneça a Tabela de Checkpoint para o Replicat.
    4. Na página Arquivo de Parâmetro, certifique-se de que algo como o seguinte esteja incluído no arquivo:

      MAP public.* TARGET public.*;
    5. Selecione Criar e Executar. Verifique se os dados começaram a ser carregados no sistema de banco de dados OCI Database with PostgreSQL.
  8. Adicione um processo de Replicat para PostgreSQL à implantação. Este processo de Replicat é para o Change Data Capture Extract (RECDC).
    1. Ao criar o processo Replicat, forneça o Nome da Trilha do CDC, por exemplo, yy.
    2. Forneça a Tabela de Checkpoint para o Replicat.
    3. Na página Arquivo de Parâmetro, certifique-se de que algo como o seguinte esteja incluído no arquivo:

      MAP public.* TARGET public.*;
    4. Selecione Criar. Não execute o RECDC até que o REINI seja concluído. O GoldenGate deve ter dois processos Extract e dois processos Replicat.
    5. Na página de implantação, no menu Ação do novo RECDC, selecione Iniciar.
  9. Verifique o status no OCI Database with PostgreSQL e corresponda às contagens e valores de registros.