PostgreSQL
Introducción
PostgreSQL es la base de datos relacional de código abierto más avanzada. Será utilizada por los servicios que requieran almacenamiento en base de datos dentro de la red.
La instalación y configuración sigue el proceso documentado en IT - PostgreSQL, con las adaptaciones necesarias para el entorno de la Raspberry.
Instalación
Instalamos la última versión disponible en los repositorios de Ubuntu. Tras la instalación, se bloquea para evitar actualizaciones no controladas.
sudo apt update
sudo apt install postgresql postgresql-contrib -y
sudo apt-mark hold postgresql postgresql-contrib
Para comprobar qué versión se ha instalado:
psql --version
Si se requiere una versión específica más reciente, se puede añadir el repositorio oficial de PostgreSQL.
Acceso remoto
Por defecto, PostgreSQL solo acepta conexiones locales. Para permitir el acceso desde otros servidores de la red, se modifica la configuración.
El path varía según la versión de PostgreSQL instalada. Ajustar el número de versión en los comandos.
sudo vi /etc/postgresql/*/main/postgresql.conf
Habilitar el uso del puerto a cualquier IP.
listen_addresses = '*'
Permitir el acceso a las bases de datos.
sudo vi /etc/postgresql/*/main/pg_hba.conf
host all all 0.0.0.0/0 md5
host all all ::0/0 md5
Reiniciar para aplicar los cambios.
sudo systemctl restart postgresql
Crear bases de datos
El proceso de creación de bases de datos y usuarios es el mismo que el documentado en IT - PostgreSQL - Crear bases de datos.
sudo -i -u postgres
psql
CREATE DATABASE database_name;
CREATE USER user_name WITH PASSWORD 'my_password';
GRANT ALL PRIVILEGES ON DATABASE database_name TO user_name;
Desde PostgreSQL 15, es necesario otorgar permisos adicionales sobre el esquema public. Consultar la documentación para más detalles.
Copias de seguridad
Siguiendo el sistema definido en Ubuntu y Swarm - Backup, se configuran las copias de seguridad utilizando pg_dump.
Los scripts base de montaje, rotación y notificación ya deberían estar instalados en /opt/scripts. Si no es así, seguir las instrucciones de Ubuntu - Copias de seguridad.
Descargar el script de copia de seguridad para PostgreSQL.
cd /opt/scripts
sudo wget https://gitlab.com/ReiIzumi/scripts-backup/-/raw/master/backup_PostgreSQL.sh
sudo chmod 744 backup_PostgreSQL.sh
Instalar la dependencia nc para la verificación del puerto.
sudo apt install netcat-traditional -y
Editar el script para indicar las bases de datos.
sudo vi backup_PostgreSQL.sh
POSTGRESQL_DATABASES="dbName1 dbName2"
Ejecutar una primera copia para verificar que todo funciona.
sudo ./backup_PostgreSQL.sh
Cron
sudo crontab -e
Ejemplo para ejecutar la copia de seguridad cada día a las 4:00 de la mañana.
00 4 * * * /opt/scripts/backup_PostgreSQL.sh
Es recomendable que cada servidor y servicio tengan horas diferentes para las copias de seguridad, así se evita sobrecargar el servidor de NFS y la red.
Nagios
Añadir la monitorización de PostgreSQL y de las copias de seguridad en el fichero del servidor correspondiente en Nagios.
define service {
use local-service
host_name raspberry1
service_description PostgreSQL
check_command check_tcp!5432
servicegroups DB
}
define service {
use local-service
host_name raspberry1
service_description Backup PostgreSQL
check_command check_nrpe_bkp!PostgreSQL 04:00:00 5 10
servicegroups Backup
max_check_attempts 1
}