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.
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.
-
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.
-
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.
-
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.
-
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';
-
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
-h
: Alvo do OCI Database with PostgreSQL. Consulte Obtendo Detalhes sobre um Sistema de Banco de Dados para obter instruções sobre como localizar o endereço IP de um sistema de banco de dados.
-
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. -
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.
- Verifique as contagens de linhas de todas as tabelas em relação ao banco de dados de origem.
- 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.
- Defina senhas para os usuários criados no sistema de banco de dados do OCI Database with PostgreSQL.
-
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 doVACUUM ANALYZE
, recomendamos aumentar omaintenance_work_mem
na sessão PSQL. OVACUUM 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ê executeVACUUM ANALYZE
eREINDEX
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.
Pré-requisitos
Para usar o GoldenGate, certifique-se de que os seguintes pré-requisitos sejam atendidos:
- Verifique se os recursos necessários do IAM e a rede do OCI estão em vigor. Para obter mais informações, consulte Conceitos Básicos do OCI Database with PostgreSQL.
-
Crie um sistema de banco de dados que possa ser usado como destino para a replicação GoldenGate.
- Crie instâncias de computação para hospedar o cliente PostgreSQL que pode estabelecer conexão com os sistemas de banco de dados de origem e de destino. Ao criar as instâncias:
-
Faça download do par da chave SSH.
Cuidado
Qualquer pessoa que tenha acesso à chave privada pode se conectar à instância. Guarde a chave privada em um local seguro. - Selecione a VCN e a sub-rede privada usadas quando você criou o sistema de banco de dados.
- Instale uma versão do cliente PostgreSQL compatível com a versão PostgreSQL do sistema de banco de dados seguindo as instruções em https://www.postgresql.org/download/.
-
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 comological
, 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
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>;
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>;
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.
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.
- Crie uma implantação e selecione PostgreSQL como tecnologia.
- Crie uma conexão de origem com base no banco de dados de origem e na conectividade de teste.
-
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. - Designe as conexões de origem e destino à implantação.
- Adicione um Extract para PostgreSQL à implantação a ser executada na conexão de origem e extraia ou capture dados.
- 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.
- Adicione uma Extração de Carga Inicial (INI).
- Forneça um Nome da trilha, por exemplo,
xx
. Este arquivo contém as alterações que ocorrem no banco de dados de origem. -
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. - Selecione Criar e Executar.
- 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.
- Forneça um Nome da trilha, por exemplo,
- Adicionar outro Extract à implantação. Desta vez, escolha Alterar Extração de Captura de Dados (CDC) como o tipo de extração.
- Para Iniciar, selecione Nenhum.
- Forneça um Nome da Trilha, por exemplo,
yy
. -
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. - Selecione Criar. Não execute a extração ainda.
- Na página de implantação, no menu Ação do novo CDC, selecione Iniciar com Opção.
- Para Ponto de Início, selecione No CSN
- 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. - Adicione um processo de Replicat para PostgreSQL à implantação. Esse processo de Replicat é para o Initial Load Extract (REINI).
- Criar uma tabela de checkpoint. Para obter detalhes, consulte Adicionar um processo Replicate para PostgreSQL: Antes de começar.
- Ao criar o processo Replicat, forneça o Nome da Trilha do INI, por exemplo,
xx
. - Forneça a Tabela de Checkpoint para o Replicat.
-
Na página Arquivo de Parâmetro, certifique-se de que algo como o seguinte esteja incluído no arquivo:
MAP public.* TARGET public.*;
- Selecione Criar e Executar. Verifique se os dados começaram a ser carregados no sistema de banco de dados OCI Database with PostgreSQL.
- Adicione um processo de Replicat para PostgreSQL à implantação. Este processo de Replicat é para o Change Data Capture Extract (RECDC).
- Ao criar o processo Replicat, forneça o Nome da Trilha do CDC, por exemplo,
yy
. - Forneça a Tabela de Checkpoint para o Replicat.
-
Na página Arquivo de Parâmetro, certifique-se de que algo como o seguinte esteja incluído no arquivo:
MAP public.* TARGET public.*;
- 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.
- Na página de implantação, no menu Ação do novo RECDC, selecione Iniciar.
- Ao criar o processo Replicat, forneça o Nome da Trilha do CDC, por exemplo,
- Verifique o status no OCI Database with PostgreSQL e corresponda às contagens e valores de registros.