Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Automatize o Switchover e o Failover do Banco de Dados PostgreSQL com o Oracle Cloud Infrastructure Full Stack Disaster Recovery
Introdução
O Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) orquestra a transição de computação, banco de dados e aplicativos entre regiões da Oracle Cloud Infrastructure (OCI) de todo o mundo com um único clique. Os clientes podem automatizar as etapas necessárias para recuperar um ou mais sistemas de negócios sem reprojetar ou rearquitetar a infraestrutura, bancos de dados ou aplicativos existentes e sem precisar de servidores especializados de gerenciamento ou conversão.
O OCI Full Stack DR é um serviço altamente flexível. Podemos aproveitar os grupos de planos definidos pelo usuário no plano de DR (Recuperação de Desastres) para tratar as operações de DR do bucket do OCI Object Storage.
Arquitetura da Implantação
Observação: A região principal é Frankfurt e a região de DR é Londres.
Objetivos
- Automatize o switchover e o failover para o banco de dados PostgreSQL com o OCI Full Stack DR.
Pré-requisitos
-
Privilégios de administrador ou configurar as políticas necessárias do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) para o OCI Full Stack DR. Para obter mais informações, consulte Configurando políticas do IAM (Identity and Access Management) para usar o OCI Full Stack DR e Políticas para o OCI Full Stack DR.
-
Você precisa ativar o plug-in Compute Instance Run Command no principal e no stand-by, pois o OCI Full Stack DR executará comandos
sudo
para montar e desmontar comandos durante o switchover. Para obter mais informações sobre comandos de execução na instância do OCI Compute, consulte Executando Comandos na instância do OCI Compute. -
Usar o comando de execução com o OCI Full Stack DR. Para obter mais informações, consulte Chamar scripts personalizados usando o comando de execução com o Oracle Cloud Infrastructure Full Stack Disaster Recovery.
-
Estabeleça uma Conexão de Pareamento Remoto (RPC) entre dois Gateways de Roteamento Dinâmico (DRG) localizados nas mesmas tenancies. Para obter mais informações, consulte Peering VCN Remoto por meio de um DRG Atualizado.
-
Certifique-se de que ambas as máquinas possam se comunicar na porta PostgreSQL
5432
para replicação do banco de dados, configurando a respectiva lista de segurança ou grupo de segurança de rede. -
Use o Bastion as a Service ou um Bastion host para estabelecer conexão com os Servidores PostegreSQL.
-
Bucket do OCI Object Storage (um em cada região).
Tarefa 1: Instalar e Configurar PostgreSQL
-
Para instalar o PostgreSQL, conecte-se ao host usando seu cliente SSH favorito e execute o comando a seguir.
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
Ative o firewall Linux para receber conexões.
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
Edite o arquivo
postgresql.conf
(encontrado em xxxxx) para permitir conexão e altere os parâmetroswal
da seguinte forma.... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
Conecte-se ao banco de dados e crie o usuário de replicação.
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
Adicione esse usuário ao arquivo
pg_hba.conf
(localizado em xxxxx).host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
Reinicie o banco de dados PostgreSQL para aplicar as alterações.
sudo systemctl restart postgresql
-
Repita esse processo no segundo servidor.
Tarefa 2: Replicar o Banco de Dados PostgreSQL
Nesta tarefa, configuraremos a replicação nativa do banco de dados PostgreSQL.
-
Conecte-se ao banco de dados principal e crie o slot de réplica.
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
Conecte-se ao banco de dados secundário e execute os comandos a seguir para criar a replicação.
sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
-
Verifique se a replicação está fluindo no banco de dados principal.
select * from pg_stat_replication;
Você deve ser capaz de ver uma linha com o processo de streaming.
Tarefa 3: Criar o Plano de Switchover
Tarefa 3.1: Criar e Associar Grupos de Proteção de Recuperação de Desastre (DRPG)
-
Na região principal (Frankfurt), clique no menu Hambúrguer, navegue até Migração e Recuperação de Desastre, Recuperação de Desastre, Grupo de Proteção de Recuperação de Desastre e Criar Grupo de proteção de Recuperação de Desastre.
-
Na região stand-by (Londres), clique no menu Hambúrguer, navegue até Migração e Recuperação de Desastre, Recuperação de Desastre, Grupo de Proteção de Recuperação de Desastre e Criar Grupo de proteção de Recuperação de Desastre.
-
Na região principal (Frankfurt), especifique as informações a seguir e clique em Associar.
- Função:
Primary
. - Região de pareamento:
UK South (London)
. - Grupo de proteção de DR de pareamento:
postgresql-lon
.
- Função:
Tarefa 3.2: Adicionar Membros ao DRPG Principal e Stand-by
-
No DRPG principal (
postgresql-fra
), selecione Membros e adicione a VM de computação (postgresql01
) como membro.Observação: ao adicionar computação como membro, selecione Instância Não Móvel no tipo de instância de computação, pois temos configuração passiva ativa para o banco de dados PostgreSQL.
-
No DRPG stand-by (
postgresql-lon
), selecione Membros e adicione a VM de computação (postgresql02
) como membro.Observação: ao adicionar computação como membros, selecione Instância Não Móvel no tipo de instância de computação, pois temos configuração passiva ativa para o banco de dados PostgreSQL.
Tarefa 3.3: Criar um plano de Switchover no DRPG Stand-by (Londres)
Plano de Switchover: Um tipo de plano de DR que executa uma transição planejada de serviços do DRPG principal para o DRPG stand-by.
-
Crie um plano de switchover no DRPG stand-by
postgresql-lon
. -
Selecione Planos e clique em Criar plano.
-
Informe o Nome como
postgresql-switchover-frankfurt-london
e selecione o Tipo de plano comoSwitchover (planned)
. -
Clique em Criar.
Observação: certifique-se de criar o plano de switchover a partir do DRPG stand-by (Londres).
Tarefa 3.4: Personalizar o Plano de Switchover com Vários Grupos de Planos Definidos pelo Usuário
Adicionamos Computação (instância não móvel) como membros nos dois Grupos de Proteção de DR. Precisamos personalizar o plano de switchover com grupos de planos adicionais definidos pelo usuário. Também precisamos criar os scripts bash a seguir e fazer upload deles no OCI Object Storage para que possamos chamar esses scripts durante o switchover.
-
stop_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql
-
promote_postgresql.sh
.#!/bin/bash sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_1');"
-
change_replication_direction.sh
.#!/bin/bash sudo rm -rv /var/lib/pgsql/data/ sudo sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_1 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
Observação: é necessário fazer upload desses scripts para o bucket na região de Londres.
Um workflow típico para switchover de DR é o seguinte:
-
Interromper Banco de Dados PostgreSQL na região de Frankfurt: O grupo de planos terá etapas para interromper o banco de dados PostgreSQL na região de Frankfurt.
-
Promover Banco de Dados PostgreSQL na região de Londres: O grupo de planos terá etapas para promover o banco de dados PostgreSQL na região de Londres.
-
Alterar a direção de replicação do Banco de Dados PostgreSQL: O grupo de planos terá etapas para alterar a direção de replicação do banco de dados PostgreSQL (LON-FRA).
Observação: certifique-se de que as etapas sejam executadas na mesma ordem.
Crie o grupo de planos definido pelo usuário a seguir.
-
Crie o grupo de planos Interromper Banco de Dados PostgreSQL na região de Frankfurt.
-
Em Grupos de Planos, clique em Adicionar grupo para criar um grupo de planos personalizado para interromper o banco de dados PostgreSQL na região de Frankfurt. Informe o Nome do grupo como
Stop PostgreSQL Database at Frankfurt Region
. -
Clique em Adicionar Etapa e especifique as informações a seguir. Adicionaremos uma etapa no grupo de planos.
-
Certifique-se de escolher a Região como
Frankfurt
e a Instância de destino comopostgresql01
. Selecione o Script de armazenamento de objetos Run e o local do script escolhe o bucket de armazenamento de Objetos do OCIposgres-dr-lon
. -
Informe os detalhes do script
stop_postgresql.sh
com o local do script. O script fará shutdown do banco de dados PostgreSQL na região FRA. -
Clique em Adicionar Etapa e verifique a etapa adicionada.
-
-
-
Criar o grupo de planos Promover Banco de Dados PostgreSQL na região de Londres.
-
Em Grupos de Planos, clique em Adicionar grupo para criar um grupo de planos personalizado para promover o banco de dados PostgreSQL em Londres. Informe o Nome do grupo como
Promote PostgreSQL Database at London Region
. -
Clique em Adicionar Etapa e insira os detalhes a seguir. Adicionaremos uma etapa no grupo de planos.
-
Certifique-se de escolher a Região como
London
, a instância de destino comopostgresql02
. Selecione o Script de armazenamento de objetos de execução e o local do script escolhe o bucketposgres-dr-lon
do OCI Object Storage. -
Informe os detalhes do script
promote_postgresql.sh
com o local do script. O script fará shutdown do banco de dados PostgreSQL na região FRA. -
Clique em Adicionar Etapa e verifique a etapa adicionada.
-
-
-
Crie o grupo de planos Alterar direção de replicação do Banco de Dados PostgreSQL.
-
Em Grupos de Planos, clique em Adicionar grupo para criar um grupo de planos personalizado para alterar a direção de replicação do banco de dados PostgreSQL. Informe o Nome do grupo como
Promote PostgreSQL Database at London Region
. -
Clique em Adicionar Etapa e especifique as informações a seguir. Adicionaremos uma etapa no grupo de planos.
-
Certifique-se de escolher a Região como
Frankfurt
e a Instância de destino comopostgresql01
. Selecione o Script de armazenamento de objetos de execução e o local do script escolha o bucket do OCI Object Storageposgres-dr-lon
. -
Informe os detalhes do script
change_replication_direction.sh
com o local do script. O script fará shutdown do banco de dados PostgreSQL na região FRA. -
Clique em Adicionar Etapa e verifique a etapa adicionada.
-
-
Tarefa 4: Executar Pré-verificações e Executar o Plano de Switchover
A opção Executar Pré-verificações executa uma validação rápida de todas as etapas em um plano de DR e dos membros associados às etapas.
-
No plano de switchover
postgresql-switchover-frankfurt-london
, clique em Executar Pré-verificações para executar pré-verificações.Verifique a conclusão bem-sucedida.
-
No plano de switchover
postgresql-switchover-frankfurt-london
, clique em Executar Plano de Recuperação de Desastre para executar o plano. -
Verifique o status do plano e garanta que todas as etapas no plano sejam bem-sucedidas.
-
O plano de alternância executa todos os grupos de planos em uma ordem específica. Após a execução bem-sucedida do plano, o banco de dados PostgreSQL será promovido a mestre na região de Londres.
-
Automaticamente a função mudará no DRPG. Agora, Londres terá o papel principal e Frankfurt terá o papel de stand-by.
-
Verifique o banco de dados PostgreSQL em Londres.
Tarefa 5: Criar Plano de Switchover no DRPG Stand-by (Frankfurt) para Switchback
Tarefa 5.1: Criar um Plano de Switchover no DRPG Stand-by (Londres)
-
Crie um plano de switchover no DRPG Stand-by
postgresql-fran
. -
Selecione Planos e clique em Criar plano.
-
Informe o Nome como
postgresql-switchover-london-frankfurt
e selecione o Tipo de plano comoSwitchover (planned)
. -
Clique em Criar.
Observação: certifique-se de criar o plano de switchover a partir do DRPG stand-by (Frankfurt).
Tarefa 5.2: Personalizar o Plano de Switchover com Vários Grupos de Planos Definidos pelo Usuário
Precisamos personalizar o plano de switchover com grupos de planos adicionais definidos pelo usuário. Também precisamos criar os scripts bash a seguir e fazer upload para o OCI Object Storage, para que possamos chamar esses scripts durante o switchover.
-
rewind_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo -u postgres pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -v -R -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
-
replicate_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
Observação: é necessário fazer upload desses scripts para o bucket na região de Frankfurt.
Um workflow típico para switchover de DR é o seguinte:
-
Rewind PostgreSQL Databases: Grupo de planos para rebobinar o banco de dados. Frankfurt sincronizará o conteúdo do banco de dados de Londres.
-
Reestabelecer a replicação do Banco de Dados PostgreSQL para Londres: O grupo de planos terá uma etapa para começar a replicar o banco de dados PostgreSQL de Frankfurt para a região de Londres.
Observação: certifique-se de que as etapas sejam executadas na mesma ordem.
Crie os dois grupos de planos definidos pelo usuário a seguir
-
Crie o grupo de planos Rewind PostgreSQL Databases.
-
Em Grupos de Planos, clique em Adicionar grupo para criar um grupo de planos personalizado para rebobinar o banco de dados PostgreSQL na região de Frankfurt. Informe o Nome do grupo como
Rewind PostgreSQL Databases at Frankfurt Region
. -
Clique em Adicionar Etapa e especifique as informações a seguir. Adicionaremos uma etapa ao grupo de planos.
-
Certifique-se de escolher a Região como
Frankfurt
e a Instância de destino comopostgresql01
. Selecione o Script de armazenamento de objetos de execução e o local do script escolhe o bucketposgres-dr-lon
do OCI Object Storage. -
Informe os detalhes do script
rewind_postgresql.sh
com o local do script. O script fará shutdown do banco de dados PostgreSQL na região FRA. -
Clique em Adicionar Etapa e verifique a etapa adicionada.
-
-
-
Crie o grupo de planos Reestabelecer replicação do Banco de Dados PostgreSQL para Londres.
-
Em Grupos de Planos, clique em Adicionar grupo para criar um grupo de planos personalizado para restabelecer a replicação do banco de dados PostgreSQL para Londres. Informe o Nome do grupo como
Promote PostgreSQL Database at London Region
. -
Clique em Adicionar Etapa e especifique as informações a seguir. Adicionaremos uma etapa no grupo de planos.
-
Certifique-se de escolher a Região como
London
e a Instância de destino comopostgresql02
. Selecione o Executar script de armazenamento de objetos e o local do script escolhe o bucket do OCI Object Storageposgres-dr-lon
. -
Informe os detalhes do script
replicate_postgresql.sh
com o local do script. O script fará shutdown do banco de dados PostgreSQL na região FRA. -
Clique em Adicionar Etapa e verifique a etapa adicionada.
-
-
Tarefa 6: Executar Pré-verificações e Executar o Plano de Switchover
A opção Executar Pré-verificações executa uma validação rápida de todas as etapas em um plano de DR e dos membros associados às etapas.
-
No plano de switchover
postgresql-switchover-london-frankfurt
, clique em Executar Pré-verificações para executar pré-verificações.Verifique a conclusão bem-sucedida.
-
No plano de switchover
postgresql-switchover-london-frankfurt
, clique em Executar Plano de Recuperação de Desastre para executar o plano. -
Verifique o status do plano e garanta que todas as etapas no plano sejam bem-sucedidas.
-
O plano de alternância executa todos os grupos de planos em uma ordem específica. Após a execução bem-sucedida do plano, o banco de dados PostgreSQL será promovido a mestre na região de Frankfurt.
-
Automaticamente a função mudará no DRPG. Agora, Frankfurt terá o papel principal e Londres terá o papel de stand-by.
-
Verifique o banco de dados PostgreSQL em Frankfurt.
Próximas Etapas
Você viu como executar automaticamente o switchover do banco de dados PostgreSQL e fazer switchback das operações de Recuperação de Desastre usando o OCI Full Stack DR. Para obter mais informações, consulte a documentação do OCI Full Stack DR na seção Links Relacionados.
Links Relacionados
Confirmação
-
Autor - Raphael Teixeira (Membro Principal da Equipe Técnica do FSDR)
-
Colaboradores - Ricardo Malhado (Hyperscaler para Especialista em OCI), Suraj Ramesh (Gerente de Produto Principal para MAA)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96167-01
April 2024