• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

Creación de un sistema de réplica con PostgreSQL

noviembre 17, 2023 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 5 minutos

Una sola copia de una base de datos puede no ser suficiente para algunas aplicaciones. Tanto por motivos de seguridad como de rendimiento, disponer de una o varias réplicas de la base de datos puede ser clave. La configuración de un sistema de réplica con PostgreSQL es algo relativamente sencillo gracias al uso de Streaming Replication (SR), una característica que está disponible desde PostgreSQL 9.

En esta publicación se va a explicar como configurar y probar un sistema de réplica con dos bases de datos PostgreSQL 15 instaladas en Rocky Linux 9, asumiendo que ya se dispone de dos máquinas en las que se ha instalado previamente PostgreSQL. Si no es así, se puede consultar el tutorial para instalar PostgreSQL en una distribución basada en RHEL 9 como Rocky Linux 9 en una máquina Virtual Box. Una vez instalada la base de datos en una máquina virtual, simplemente se puede duplicar esta. Es necesario que cada una de las máquinas cuente con una dirección IP diferente, para configurar el acceso a la red en VirtualBox se puede seguir el tutorial publicado.

Tabla de contenidos

  • 1 Creación de un usuario de réplica
  • 2 Comprobar los parámetros para la réplica en postgresql.conf
  • 3 Creación de una carpeta para el log
  • 4 Dar permisos para la réplica en pg_hba.conf
  • 5 Copia del servidor
  • 6 Funcionamiento básico del sistema de réplica con PostgreSQL
  • 7 Conclusiones

Creación de un usuario de réplica

En primer lugar, es necesario crear un usuario con permisos de replicación en la base de datos maestra u original, no es necesario hacerlo en la réplica ya que los usuarios también se replican. Para ello se debe ejecutar en la base de datos con un usuario que tenga permisos de administración un comando como el siguiente

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
En Analytics Lane
Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

CREATE USER replicator with replication password 'replicator';

En el que se indica que se cree un nuevo usuario replicator con permisos de replicación (with replication) cuya contraseña será replicator. Para un sistema en producción se debe cambiar esta contraseña por otra que sea segura.

Publicidad


Comprobar los parámetros para la réplica en postgresql.conf

La versión 15 de PosgreSQL ya viene configurada por defecto para el uso de Streaming Replication. Aún así, antes de continuar es una buena idea consultar en el archivo postgresql.conf los valores de las opciones wal_level y hot_standby que deben ser respectivamente replica y on. Además, también se debe comprobar que el valor de max_val_senders es por lo menos 10. Los valores se pueden consultar sin abrir el archivo usando psql, para lo que se pueden escribir los siguientes comandos en la terminal.

psql -c "show wal_level"
psql -c "show max_wal_senders"
psql -c "show hot_standby"

Creación de una carpeta para el log

Antes de continuar es necesario crear una carpeta para el log, lo que se puede hacer en la ruta por defecto de PostgreSQL /var/lib/pgsql/, simplemente se debe usar el comando mkdir para la crear una carpeta llamada archivelog.

mkdir /var/lib/pgsql/archivelog

La carpeta se debe crear tanto en el servidor maestro como en la réplica, ya que la estructura de archivos no se copia durante el proceso de réplica, solo los datos de la base de datos.

Una vez hecho esto, en el archivo postgresql.conf se debe cambiar dos parámetros archive_mode y archive_command para activar el modo de archivado e indicar dónde se hace esto.

archive_mode = on
archive_command = 'test ! -f /var/lib/pgsql/archivelog/%f && cp %p /var/lib/pgsql/archivelog/%f'

Publicidad


Dar permisos para la réplica en pg_hba.conf

En el archivo pg_hba.conf es necesario agregar una nueva línea para que el usuario replicator pueda realizar tareas de réplica a través de la red. Para ello al final del archivo se debe agregar una línea como la siguiente

host replication replicator 192.168.1.0/24 md5

La línea indica que el usuario replicador puede realizar tareas de réplica desde cualquier máquina en la red 192.168.1.x, si las IP de la red en la que se trabaja son diferentes será necesario modificar este parámetro.

Copia del servidor

En el servidor maestro es necesario asegurarse que se han actualizado todos los cambios de configuración, por lo que se debe reiniciar el servicio. Lo que se puede hacer a través del comando systemctl.

sudo systemctl restart postgresql

Por otro lado, el servidor donde se hará la réplica es necesario que el servidor de PostgreSQL esté parado, para lo que también se debe usar el comando systemctl.

sudo systemctl stop postgresql

En nuestro caso el servidor maestro se encuentra en la máquina 192.168.1.43. Para realizar la copia desde el servidor réplica se debe ejecutar el siguiente comando

pg_basebackup -h 192.168.1.43 -U replicator -p 5432 -D data -Fp -Xs -P -R

Una línea en la que se indica que se copie desde el servidor 192.168.1.43 (valor que se debe cambiar en función de dónde se encuentre el servidor maestro) usando para ello el usuario replicator creado previamente. La copia se hace a través del puerto por defecto de PostgreSQL 5432 y se guarda en la carpeta data (ubicación que también se debe cambiar dependiendo de la configuración de la base de datos).

Al ejecutar el comando se pedirá la contraseña del usuario replicator para iniciar la réplica de la base de datos. Una vez terminado el proceso se puede comprobar que se han copiado todos archivos en la carpeta data e iniciar el servidor PostgreSQL.

sudo systemctl start postgresql

Publicidad


Funcionamiento básico del sistema de réplica con PostgreSQL

Si todos los pasos se han ejecutado de forma correcta ahora se dispone de un sistema de réplica con dos bases de datos PostgreSQL que contienen la misma información. Copiando cualquier modificación en la base de datos maestra de forma automática en la réplica. Algo que se puede comprobar fácilmente creando una nueva base de datos en el servidor maestro y comprobando como esta aparece automáticamente en la réplica.

La base de datos de réplica es solamente de lectura. Si se intente ejecutar cualquier comando que modifique la información se obtendrá como respuesta un mensaje de error indicado que la base de datos es de solo lectura.

En este punto se puede usar la base de datos de réplica como un respaldo de la maestra para activar está en caso de que la primera no se encuentre disponible. También se puede usar para acelerar los procesos de lectura. Si algunas aplicaciones solo necesitan leer datos, una tarea más sencilla para la base de datos que realizar modificaciones, pueden recurrir a la base de datos de réplica para descargar de trabajo a la maestra.

Conclusiones

En esta publicación se ha visto cómo crear un sistema de réplica con PostgreSQL en Linux. Una opción que puede ser útil tanto para mejorar la seguridad como el rendimiento de las bases de datos PostgreSQL. Al disponer de una copia de la base de datos, la información siempre está duplicada, por lo que un fallo en una máquina no compromete la integridad de los datos. Además, esta segunda base de datos se puede utilizar para realizar tareas de lectura que suelen ser más habituales que las de escritura.

El sistema de réplica que se ha creado no es un sistema de alta disponibilidad, falta hacer que en caso de que la base de datos maestra caiga se active automáticamente la réplica, lo que se puede hacer con repmgr.

Imagen de Andrew Martin en Pixabay

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: Herramientas Etiquetado como: Linux, PostgreSQL, Rocky Linux

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Procesadores cuánticos en Machine Learning e Inteligencia Artificial Procesadores cuánticos en Machine Learning e Inteligencia Artificial: Transformando el futuro de la tecnología publicado el febrero 12, 2025 | en Ciencia de datos, Criptografía, Opinión
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Hoja de cálculo para repartir los escaños en base al método D’Hont Aplicar el método D’Hondt en Excel publicado el abril 14, 2021 | en Herramientas
  • El método de Muller e implementación en Python publicado el marzo 24, 2023 | en Ciencia de datos

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto