Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Automatización del switchover y el failover de la base de datos PostgreSQL con Oracle Cloud Infrastructure Full Stack Disaster Recovery
Introducción
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) organiza la transición de recursos informáticos, bases de datos y aplicaciones entre regiones de Oracle Cloud Infrastructure (OCI) de todo el mundo con un solo clic. Los clientes pueden automatizar los pasos necesarios para recuperar uno o más sistemas de negocio sin rediseñar ni rediseñar la infraestructura, las bases de datos o las aplicaciones existentes y sin necesidad de servidores de conversión o gestión especializados.
La recuperación ante desastres de pila completa de OCI es un servicio altamente flexible. Podemos aprovechar los grupos de planes definidos por el usuario en el plan de recuperación ante desastres (DR) para gestionar las operaciones de recuperación ante desastres del cubo de OCI Object Storage.
Arquitectura de despliegue
Nota: La región principal es Fráncfort y la región de DR es Londres.
Objetivos
- Automatice el switchover y el failover para la base de datos PostgreSQL con la recuperación ante desastres de pila completa de OCI.
Requisitos
-
Privilegios de administrador o configure las políticas de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) necesarias para OCI Full Stack DR. Para obtener más información, consulte Configuración de políticas de Identity and Access Management (IAM) para utilizar la recuperación ante desastres de pila completa de OCI y Políticas para la recuperación ante desastres de pila completa de OCI.
-
Debe activar el plugin Compute Instance Run Command tanto en la base de datos primaria como en espera, ya que OCI Full Stack DR ejecutará comandos
sudo
para montar y desmontar comandos durante el switchover. Para obtener más información sobre la ejecución de comandos en la instancia de OCI Compute, consulte Ejecución de comandos en la instancia de OCI Compute. -
Utilice el comando de ejecución con OCI Full Stack DR. Para obtener más información, consulte Llamada a scripts personalizados mediante el comando de ejecución con Oracle Cloud Infrastructure Full Stack Disaster Recovery.
-
Establezca una conexión de intercambio de tráfico remoto (RPC) entre dos gateways de enrutamiento dinámico (DRG) ubicados en los mismos arrendamientos. Para obtener más información, consulte Intercambio de tráfico de VCN remoto a través de un DRG actualizado.
-
Asegúrese de que ambas máquinas se puedan comunicar en el puerto PostgreSQL
5432
para la replicación de la base de datos, configurando la lista de seguridad o el grupo de seguridad de red respectivos. -
Utilice Bastion as a Service o un host de Bastion para conectarse a los servidores PostegreSQL.
-
Cubo de OCI Object Storage (uno en cada región).
Tarea 1: Instalación y configuración de PostgreSQL
-
Para instalar PostgreSQL, conéctese al host mediante su cliente SSH favorito y ejecute el siguiente comando.
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
Active el firewall de Linux para recibir conexiones.
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
Edite el archivo
postgresql.conf
(que se encuentra en xxxxx) para permitir la conexión y cambie los parámetroswal
de la siguiente manera.... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
Conéctese a la base de datos y, a continuación, cree el usuario de replicación.
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
Agregue este usuario al archivo
pg_hba.conf
(que se encuentra en xxxxx).host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
Reinicie la base de datos PostgreSQL para aplicar los cambios.
sudo systemctl restart postgresql
-
Repita este proceso en el segundo servidor.
Tarea 2: Replicación de la base de datos PostgreSQL
En esta tarea, configuraremos la replicación de base de datos PostgreSQL nativa.
-
Conéctese a la base de datos primaria y cree la ranura de réplica.
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
Conéctese a la base de datos secundaria y ejecute los siguientes comandos para crear la replicación.
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
-
Compruebe que la replicación fluye en la base de datos primaria.
select * from pg_stat_replication;
Debería poder ver una línea con el proceso de transmisión.
Tarea 3: Creación del Plan de Switchover
Tarea 3.1: Creación y asociación de grupos de protección de Disaster Recovery (DRPG)
-
En la región principal (Fráncfort), haga clic en el menú de hamburguesa y vaya a Migración y recuperación ante desastres, Recuperación ante desastres, Grupo de protección de recuperación ante desastres y Crear grupo de protección de recuperación ante desastres.
-
En la región en espera (Londres), haga clic en el menú de hamburguesa y vaya a Migración y recuperación ante desastres, Recuperación ante desastres, Grupo de protección de recuperación ante desastres y Crear grupo de protección de recuperación ante desastres.
-
En la región principal (Fráncfort), introduzca la siguiente información y haga clic en Asociar.
- Rol:
Primary
. - Región peer:
UK South (London)
. - Grupo de protección de DR de peer:
postgresql-lon
.
- Rol:
Tarea 3.2: Adición de miembros al DRPG principal y en espera
-
En el DRPG principal (
postgresql-fra
), seleccione Miembros y agregue la VM de cálculo (postgresql01
) como miembro.Nota: Al agregar Compute como miembro, seleccione Instancia no móvil en el tipo de instancia informática, ya que tenemos una configuración activa-pasiva para la base de datos PostgreSQL.
-
En el DRPG en espera (
postgresql-lon
), seleccione Miembros y agregue la VM de cálculo (postgresql02
) como miembro.Nota: Al agregar Compute como miembros, seleccione Instancia no móvil en el tipo de instancia informática, ya que tenemos una configuración activa-pasiva para la base de datos PostgreSQL.
Tarea 3.3: Creación de un plan de switchover en el DRPG en espera (Londres)
Plan de switchover: tipo de plan de DR que realiza una transición planificada de servicios del DRPG principal al DRPG en espera.
-
Cree un plan de switchover en el DRPG en espera
postgresql-lon
. -
Seleccione Planes y haga clic en Crear plan.
-
Introduzca el nombre como
postgresql-switchover-frankfurt-london
y seleccione el tipo de plan comoSwitchover (planned)
. -
Haga clic en Crear.
Nota: Asegúrese de crear el plan de switchover desde el DRPG en espera (Londres).
Tarea 3.4: Personalización del Plan de Switchover con Varios Grupos de Planes Definidos por el Usuario
Hemos agregado Compute (instancia no móvil) como miembros en ambos grupos de protección de DR. Necesitamos personalizar el plan de switchover con grupos de planes definidos por el usuario adicionales. También necesitamos crear los siguientes scripts bash y cargarlos en OCI Object Storage, para que podamos llamar a esos scripts durante el 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');"
Nota: Estos scripts se deben cargar en el cubo de la región de Londres.
Un flujo de trabajo típico para el switchover de DR es el siguiente:
-
Parar base de datos PostgreSQL en la región de Fráncfort: el grupo de planes tendrá pasos para parar la base de datos PostgreSQL en la región de Fráncfort.
-
Ascender base de datos PostgreSQL en la región de Londres: el grupo de planes tendrá pasos para promocionar la base de datos PostgreSQL en la región de Londres.
-
Cambiar dirección de replicación de base de datos PostgreSQL: el grupo de planes tendrá pasos para cambiar la dirección de replicación de base de datos PostgreSQL (LON-FRA).
Nota: Asegúrese de que los pasos se ejecutan en el mismo orden.
Cree el siguiente grupo de planes definido por el usuario.
-
Cree el grupo de planes Parar base de datos PostgreSQL en la región Fráncfort.
-
En Grupos de planes, haga clic en Agregar grupo para crear un grupo de planes personalizados para parar la base de datos PostgreSQL en la región de Fráncfort. Introduzca el nombre de grupo como
Stop PostgreSQL Database at Frankfurt Region
. -
Haga clic en Agregar paso e introduzca la siguiente información. Agregaremos un paso en el grupo de planes.
-
Asegúrese de seleccionar la región como
Frankfurt
y la instancia de destino comopostgresql01
. Seleccione el script de ejecución de Object Storage y la ubicación del script selecciona el cubo de OCI Object Storageposgres-dr-lon
. -
Introduzca los detalles del script
stop_postgresql.sh
con la ubicación del script. El script cerrará la base de datos PostgreSQL en la región FRA. -
Haga clic en Agregar paso y verifique el paso agregado.
-
-
-
Cree un grupo de planes Ascender base de datos PostgreSQL en la región de Londres.
-
En Grupos de planes, haga clic en Agregar grupo para crear un grupo de planes personalizados para promocionar la base de datos PostgreSQL en Londres. Introduzca el nombre de grupo como
Promote PostgreSQL Database at London Region
. -
Haga clic en Agregar paso e introduzca los siguientes detalles. Agregaremos un paso en el grupo de planes.
-
Asegúrese de seleccionar la región como
London
, la instancia de destino comopostgresql02
. Seleccione el script de ejecución de almacenamiento de objetos y la ubicación del script selecciona el cubo de OCI Object Storageposgres-dr-lon
. -
Introduzca los detalles del script
promote_postgresql.sh
con la ubicación del script. El script cerrará la base de datos PostgreSQL en la región FRA. -
Haga clic en Agregar paso y verifique el paso agregado.
-
-
-
Cree el grupo de planes Cambiar dirección de replicación de base de datos PostgreSQL.
-
En Grupos de planes, haga clic en Agregar grupo para crear un grupo de planes personalizados para cambiar la dirección de replicación de la base de datos PostgreSQL. Introduzca el nombre de grupo como
Promote PostgreSQL Database at London Region
. -
Haga clic en Agregar paso e introduzca la siguiente información. Agregaremos un paso en el grupo de planes.
-
Asegúrese de seleccionar la región como
Frankfurt
y la instancia de destino comopostgresql01
. Seleccione el script de ejecución de Object Storage y la ubicación del script, seleccione el cubo de OCI Object Storageposgres-dr-lon
. -
Introduzca los detalles del script
change_replication_direction.sh
con la ubicación del script. El script cerrará la base de datos PostgreSQL en la región FRA. -
Haga clic en Agregar paso y verifique el paso agregado.
-
-
Tarea 4: Ejecución de Comprobaciones Previas y Ejecución del Plan de Switchover
La opción Ejecutar comprobaciones previas realiza una validación rápida de todos los pasos de un plan de DR y los miembros asociados a estos.
-
En el plan de switchover
postgresql-switchover-frankfurt-london
, haga clic en Ejecutar comprobaciones previas para ejecutar comprobaciones previas.Verifique que se haya completado correctamente.
-
En el plan de switchover
postgresql-switchover-frankfurt-london
, haga clic en Ejecutar plan de recuperación ante desastres para ejecutar el plan. -
Compruebe el estado del plan y asegúrese de que todos los pasos del plan se realizan correctamente.
-
El plan de switchover realiza todos los grupos de planes en un orden específico. Después de la correcta ejecución del plan, la base de datos PostgreSQL se promocionará a maestra en la región de Londres.
-
El rol cambiará automáticamente en el DRPG. Ahora, Londres tendrá la primaria y Frankfurt tendrá el rol de reserva.
-
Verifique la base de datos PostgreSQL en Londres.
Tarea 5: Creación de un Plan de Switchover en el DRPG en Espera (Fráncfort) para Switchback
Tarea 5.1: Creación de un plan de switchover en el DRPG en espera (Londres)
-
Cree un plan de switchover en el DRPG en espera
postgresql-fran
. -
Seleccione Planes y haga clic en Crear plan.
-
Introduzca el nombre como
postgresql-switchover-london-frankfurt
y seleccione el tipo de plan comoSwitchover (planned)
. -
Haga clic en Crear.
Nota: Asegúrese de crear el plan de switchover desde el DRPG en espera (Fráncfort).
Tarea 5.2: Personalización del Plan de Switchover con Varios Grupos de Planes Definidos por el Usuario
Necesitamos personalizar el plan de switchover con grupos de planes definidos por el usuario adicionales. También necesitamos crear los siguientes scripts bash y cargarlos en OCI Object Storage, para que podamos llamar a esos scripts durante el 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
Nota: Estos scripts se deben cargar en el cubo de la región de Fráncfort.
Un flujo de trabajo típico para el switchover de DR es el siguiente:
-
Rebobinar bases de datos PostgreSQL: planifique el grupo para rebobinar la base de datos. Frankfurt sincronizará el contenido de la base de datos de Londres.
-
Restablecer replicación de base de datos PostgreSQL en Londres: el grupo de planes tendrá un paso para empezar a replicar la base de datos PostgreSQL desde Fráncfort a la región de Londres.
Nota: Asegúrese de que los pasos se ejecutan en el mismo orden.
Cree los siguientes dos grupos de planes definidos por el usuario
-
Cree el grupo de planes Rewind PostgreSQL Databases.
-
En Grupos de planes, haga clic en Agregar grupo para crear un grupo de planes personalizados para rebobinar la base de datos PostgreSQL en la región de Fráncfort. Introduzca el nombre de grupo como
Rewind PostgreSQL Databases at Frankfurt Region
. -
Haga clic en Agregar paso e introduzca la siguiente información. Agregaremos un paso al grupo de planes.
-
Asegúrese de seleccionar la región como
Frankfurt
y la instancia de destino comopostgresql01
. Seleccione el script de ejecución de almacenamiento de objetos y la ubicación del script selecciona el cubo de OCI Object Storageposgres-dr-lon
. -
Introduzca los detalles del script
rewind_postgresql.sh
con la ubicación del script. El script cerrará la base de datos PostgreSQL en la región FRA. -
Haga clic en Agregar paso y verifique el paso agregado.
-
-
-
Cree el grupo de planes Reestablecer replicación de base de datos PostgreSQL en Londres.
-
En Grupos de planes, haga clic en Agregar grupo para crear un grupo de planes personalizados para restablecer la replicación de base de datos PostgreSQL en Londres. Introduzca el nombre de grupo como
Promote PostgreSQL Database at London Region
. -
Haga clic en Agregar paso e introduzca la siguiente información. Agregaremos un paso en el grupo de planes.
-
Asegúrese de seleccionar la región como
London
y la instancia de destino comopostgresql02
. Seleccione el script de ejecución de almacenamiento de objetos y la ubicación del script selecciona el cubo de OCI Object Storageposgres-dr-lon
. -
Introduzca los detalles del script
replicate_postgresql.sh
con la ubicación del script. El script cerrará la base de datos PostgreSQL en la región FRA. -
Haga clic en Agregar paso y verifique el paso agregado.
-
-
Tarea 6: Ejecución de Comprobaciones Previas y Ejecución del Plan de Switchover
La opción Ejecutar comprobaciones previas realiza una validación rápida de todos los pasos de un plan de DR y los miembros asociados a estos.
-
En el plan de switchover
postgresql-switchover-london-frankfurt
, haga clic en Ejecutar comprobaciones previas para ejecutar comprobaciones previas.Verifique que se haya completado correctamente.
-
En el plan de switchover
postgresql-switchover-london-frankfurt
, haga clic en Ejecutar plan de recuperación ante desastres para ejecutar el plan. -
Compruebe el estado del plan y asegúrese de que todos los pasos del plan se realizan correctamente.
-
El plan de switchover realiza todos los grupos de planes en un orden específico. Después de la ejecución correcta del plan, la base de datos PostgreSQL se promocionará a maestra en la región de Fráncfort.
-
El rol cambiará automáticamente en el DRPG. Ahora, Frankfurt tendrá la primaria y Londres tendrá el papel de reserva.
-
Verifique la base de datos PostgreSQL en Frankfurt.
Pasos Siguientes
Ha visto cómo realizar automáticamente el switchover de la base de datos PostgreSQL y realizar operaciones de recuperación ante desastres mediante OCI Full Stack DR. Para obtener más información, consulte la documentación de recuperación ante desastres de pila completa de OCI en la sección Enlaces relacionados.
Enlaces relacionados
-
Recuperación ante desastres de pila completa de Oracle Cloud Infrastructure (OCI)
-
Documentación de recuperación ante desastres de pila completa de OCI
Agradecimientos
-
Autor: Raphael Teixeira (miembro principal del personal técnico de la FSDR)
-
Contribuyentes: Ricardo Malhado (hiperescalador para especialista en OCI), Suraj Ramesh (mánager principal de productos de MAA)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96161-01
April 2024