Instalar PostgreSQL 10 en Rocky Linux en directorio personalizado
Guía completa para instalar PostgreSQL 10 en Rocky Linux 8.8 configurando un directorio de datos personalizado en lugar del directorio por defecto.
Paso 1: Verificar versiones disponibles
Para instalar PostgreSQL 10 en Rocky Linux 8.8, primero verificamos las versiones disponibles:
[root@pruebas ~]# dnf module list postgresql
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
postgresql 15 client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Vemos que la versión 10 se va a instalar por defecto, indicado por los caracteres [d].
⚠️ Nota importante:
La versión 10 de PostgreSQL ya no es soportada oficialmente. Esta instalación se realizó debido a requerimientos puntuales de compatibilidad.
Paso 2: Instalar PostgreSQL
Ejecutamos el procedimiento de instalación:
[root@pruebas ~]# dnf install postgresql-server
Last metadata expiration check: 0:00:18 ago on Thu 31 Aug 2023 03:10:36 PM -05.
Dependencies resolved.
===================================================================================================================
Package Architecture Version Repository Size
===================================================================================================================
Installing:
postgresql-server x86_64 10.23-2.module+el8.8.0+1440+992378a9 appstream 5.0 M
Installing dependencies:
libpq x86_64 13.5-1.el8 appstream 197 k
postgresql x86_64 10.23-2.module+el8.8.0+1440+992378a9 appstream 1.5 M
Transaction Summary
===================================================================================================================
Install 3 Packages
Total download size: 6.7 M
Installed size: 26 M
Is this ok [y/N]: y
...
Complete! Paso 3: Configurar directorio personalizado
Normalmente PostgreSQL usa /var/lib/pgsql/data. Vamos a configurarlo para usar /var/lib/pgsql/10/data.
3.1 Editar configuración de systemd
Ejecuta el siguiente comando para crear un archivo de configuración personalizado:
[root@pruebas system]# systemctl edit postgresql.service Dentro del archivo, agrega las siguientes líneas:
[Service]
Environment=PGDATA=/var/lib/pgsql/10/data 3.2 Verificar el archivo creado
[root@pruebas system]# cat /etc/systemd/system/postgresql.service.d/override.conf
[Service]
Environment=PGDATA=/var/lib/pgsql/10/data 3.3 Recargar systemd
[root@pruebas system]# systemctl daemon-reload Paso 4: Crear y configurar el directorio
4.1 Crear la ruta
[root@pruebas system]# mkdir -p /var/lib/pgsql/10/data 4.2 Cambiar propietario
[root@pruebas system]# chown -R postgres:postgres /var/lib/pgsql ⚠️ Error común:
Si no realizas los pasos previos (creación de ruta y cambio de propiedad), obtendrás este error:
mkdir: cannot create directory '/var/lib/pgsql/10/data': No such file or directory
ERROR: Initializing database failed Paso 5: Inicializar la base de datos
[root@pruebas system]# postgresql-setup --initdb
* Initializing database in '/var/lib/pgsql/10/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log Verificar contenido del directorio
[root@pruebas system]# ls -ltr /var/lib/pgsql/10/data/
total 48
drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_twophase
drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_snapshots
drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_serial
drwx------ 4 postgres postgres 36 Aug 31 16:06 pg_multixact
-rw------- 1 postgres postgres 3 Aug 31 16:06 PG_VERSION
-rw------- 1 postgres postgres 23003 Aug 31 16:06 postgresql.conf
-rw------- 1 postgres postgres 4269 Aug 31 16:06 pg_hba.conf
drwx------ 2 postgres postgres 4096 Aug 31 16:06 global
drwx------ 5 postgres postgres 41 Aug 31 16:06 base
... Paso 6: Iniciar el servicio
[root@pruebas system]# systemctl start postgresql.service Verificar el estado
[root@pruebas system]# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/postgresql.service.d
└─override.conf
Active: active (running) since Thu 2023-08-31 16:08:04 -05; 2s ago
Main PID: 37367 (postmaster)
Tasks: 8 (limit: 24847)
Memory: 16.0M
CGroup: /system.slice/postgresql.service
├─37367 /usr/bin/postmaster -D /var/lib/pgsql/10/data
├─37369 postgres: logger process
├─37371 postgres: checkpointer process
├─37372 postgres: writer process
├─37373 postgres: wal writer process
├─37374 postgres: autovacuum launcher process
├─37375 postgres: stats collector process
└─37376 postgres: bgworker: logical replication launcher Conclusión
Hemos configurado exitosamente PostgreSQL en un directorio personalizado. Esto es útil cuando necesitas:
- Separar datos en diferentes particiones o discos
- Mantener múltiples versiones de PostgreSQL
- Cumplir con políticas de organización de directorios
- Facilitar backups y migraciones
💡 Tip:
Para habilitar el inicio automático del servicio, ejecuta: systemctl enable postgresql.service