Want to create interactive content? It’s easy in Genially!

Get started free

Mirroring Postgresql

ANTHONY GOMEZ CABAÑAS

Created on May 13, 2023

Start designing with a free template

Discover more than 1500 professional designs like these:

Transcript

Mirroring en postgresql

PostgreSQL

El equipo

* Anthony Gomez Cabañas * Christian Alberto Ortega Hernandez * Miguel Angel Ruiz Lopez * Miguel Salomon Escamilla Elias

INDICE

¿Que vamos a revisar el dia de hoy?

01 ¿Porque el mirroing?

02 Tipos y comparacion

03 Manos a la obra: Replica Logica

04 Opcional: Pasos para una Replicacion de registros.

¿Porque el mirroring?

01

Una copia de seguridad en automatico.

Proceso en el que los datos se copian repetidamente desde una BD principal a otra remota para su custodia.

"La perdida de datos e inactividad pueden provocar menor productividad, accesibilidad y confianza en el producto".

Definicion mas formal

Si queremos ser mas exactos se define como copiar datos de un servidor primario a otro secundario (replica).

Ventajas

  • Migracion de datos
  • Tolerancia a fallos: Si el primario falla el secundario puede actuar como servidor (ambos son lo mismo).
  • Rendimiento del procesamiento transaccional online: Puede mejorar el procesamiento de transacciones y el tiempo de consulta.

Tipos de mirroring

02

Fisica basada en registros (Streaming replication)

Tambien conocida como replicacion WAL, es una aproximacion mas moderna. Se basa en usar el log de postgres (WAL) para sincronizar servicios y replicar los datos en un cluster. Puede ser de forma asincrona (los datos llegan DESPUES del commit de transaccion es decir un retrazo ligero). O sincrona (es decir puede terminar una transaccion aun cuando en el otro servidor no fue finalizada).

Fisica basada en registros (Streaming replication)

En este caso no se tocara dicho tipo por temas de tiempo y ciertos requisitos. Sin embargo se dejan los pasos en la seccion de extras. (Aunque ya se hizo un ¿ejemplo similar?).

Replicacion Logica

Metodo de replicacion basado en su identidad de replicacion (usualmente una llave primaria). Utiliza un modelo publicacion - suscripcion. Donde uno o mas sucriptores estan 'suscritos' a una o mas publicaciones.

Comparacion

  • En el fisico se mandan bytes de datos resultantes de ejecuccion de un query, mientras que el logico manda el query como tal.
  • En el fisico la replica esta forzada a recibir TODOS los datos del servidor (tablas,esquemas,etc), mientras que el logico nos permite elegir parcialmente.
  • Podemos decir que la version logica es mas ligero en terminos de red.

Manos a la obra: Replicación Logica

03

Comienzo

  • Primero crearemos una base de datos 'Dulces' con id,nombre y sabor y creamos algunos registros. (Los querys seran compartidos). Y creamos otra llamada 'Dulces_rep'.

Paso Preliminar

  • Para crear con exito una replicacion nuestro nivel de wal (registros) minimo debera estar en nivel logico (tiene logica). Para ello editamos el postgres.conf ubicado en :

C:\Program Files\PostgreSQL\15\data

Paso Preliminar

  • Lo unico que deberemos hacer es buscar "wal_level" y descomentarlo (regularmente esta comentado) y lo igualamos a logical.

Paso Preliminar

  • Ahora vamos a servicios y buscamos el de postgresql y le damos a reinicar.

Paso 1: Crear la publicacion

  • Ahora debemos ubicar el icono de Publicaciones dentro de nuestra base de datos. Y damos click derecho y damos a crear.

Paso 1: Crear la publicacion

  • Colocamos un nombre y seleccionamos la tabla o las tablas. Igual tambien podemos ajustar las acciones. Si pulsamos en SQL vemos dicho.

Paso 2: Crear la Suscripcion

  • Una vez completado lo anterior pasamos a suscribirnos (con el replicante). Para ello ubicamos el icono de suscripcion. Click derecho y en crear suscripcion.

Paso 2: Crear la Suscripcion

  • Dentro colocamos un nombre y los parametros, se muestran a continuacion. Y aceptamos.

Paso 3: Corroborar

  • Ahora realizamos un select y la informacion en ambas tablas debe ser la misma

Paso Extra: Correccion

  • ¿No se actualizan los cambios? ¿Has entrado en panico? No temas aveces el slot no se crea del todo bien para ello sigue estos pasos.

Paso Extra: Correccion

  • Ve a la terminal de querys donde creamos la publicacion (dulces) y ejecuta el comando comodin.

SELECT pg_create_logical_replication_slot('slot_dulce', 'pgoutput');

Paso Extra: Correccion

  • Ahora ejecutamos el siguente comando para estar seguros que si se creo el slot.

SELECT * FROM pg_replication_slots;

Paso Extra: Correccion

  • Ahora podemos eliminar la suscripcion o modificarla (suscripcion -> propiedades). El chiste es que debemos irnos a slot_name y colocar el nombre del slot que creamos. (si lo vamos a modificar primero lo apagamos y despues modificamos).

Paso Extra: Correccion

  • Comprobamos de nuevo y deberia estar funcionando con normalidad (recuerda esperar unos pocos segundos).

¿Extra?

03

Extra

En realidad cuando realizamos el tercer tipo de respaldo estabamos muy cerca de realizar el Streaming Replication. Por cuestiones que si necesitamos 2 servidores o 2 instancias no se realizo (Si pusieron atencion ya saben porque). Practicamente en el postgres.conf se habilita el hot_standby y en el replica se hace lo mismo y se pone standby_mode = on

¿El fin? Gracias por su atencion

Extra

Si tienes curiosidad sobre ello en el siguente enlace se describe como (no debe tomar mucho tiempo). https://www.scalingpostgres.com/tutorials/postgresql-streaming-replication/