PostgreSQL 16 marca una actualización importante en el mundo de los sistemas de gestión de bases de datos. Lanzado oficialmente el 14 de septiembre de 2023, PostgreSQL 16 presenta muchas características y mejoras nuevas, fortaleciendo su posición como una solución de base de datos sólida y versátil para usuarios, administradores y desarrolladores.
A continuación se muestran algunas de las características clave más destacadas de PostgreSQL 16:
- Mejoras de paralelización: PostgreSQL 16 permite la paralelización de uniones hash EXTERNAS internas y COMPLETAS, lo que mejora significativamente el rendimiento de las consultas.
- Mejoras en la replicación: Introduce la capacidad de replicación lógica desde servidores en espera y permite a los suscriptores aplicar grandes transacciones en paralelo.
- Capacidades de monitoreo: Agregar la vista pg_stat_io permite un monitoreo más profundo de las estadísticas de E/S.
- Soporte SQL/JSON: Esta versión presenta constructores SQL/JSON y funciones de identidad, ampliando sus capacidades de manejo de datos.
- Rendimiento de congelación al vacío: PostgreSQL 16 mejora el rendimiento de la congelación por vacío, lo que ayuda al mantenimiento eficiente de la base de datos.
- Coincidencia de expresiones regulares: La coincidencia de expresiones regulares para nombres de usuarios y bases de datos en pg_hba.conf y nombres de usuarios en pg_ident.conf mejora la seguridad y la flexibilidad.
Ahora, pasemos al procedimiento técnico y profundicemos en el proceso de instalación de PostgreSQL 16.
Requisitos previos para instalar PostgreSQL 16
Para instalar PostgreSQL 16 con éxito en Ubuntu, asegúrese de cumplir con los siguientes requisitos:
Hardware recomendado y versiones de Ubuntu compatibles
Componente | Requisito |
---|---|
Procesador | Procesador compatible de 1 gigahercio (GHz) o más rápido |
RAM | 2 GB o más |
Espacio del disco | 512 MB de HDD (se requiere espacio adicional en disco para datos o componentes de soporte) |
Versiones compatibles | Ubuntu 24.04 (noble), Ubuntu 22.04 (Jammy), Ubuntu 20.04 (focal) |
Requerimientos adicionales
Requisito | Descripción |
---|---|
Conexión a Internet | Requerido para descargar PostgreSQL 16 y futuras actualizaciones. |
Convenciones terminales | Todos los comandos de terminal deben ejecutarse como un usuario normal con sudo privilegios. |
Comandos CLI | Utilice la interfaz de línea de comandos (CLI) para la instalación y configuración. |
Importar repositorio APT de PostgreSQL
Actualice Ubuntu antes de la instalación de PostgreSQL 16
Comience asegurándose de que su sistema Ubuntu esté actualizado. Este paso es crucial para mantener la estabilidad y compatibilidad del sistema:
sudo apt update
A continuación, actualice los paquetes que estén desactualizados:
sudo apt upgrade
Instalar paquetes iniciales para PostgreSQL 16
Para ayudar a instalar el software de la base de datos, instale los siguientes paquetes:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
Agregar el repositorio APT de PostgreSQL 16
Primero, importe la clave GPG de PostgreSQL. Se trata de garantizar que los paquetes que está a punto de instalar sean genuinos y no estén alterados:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
Elegir el repositorio PostgreSQL 16 adecuado
Ahora es el momento de seleccionar el repositorio de PostgreSQL 16 adecuado para sus necesidades.
Repositorio estable para producción/uso general
El repositorio estable es la opción preferida para la mayoría de los usuarios, especialmente en un entorno de producción. Se actualiza periódicamente con versiones estables y seguras:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
Repositorios de instantáneas o pruebas para desarrolladores
Considere los repositorios de instantáneas o de prueba si se encuentra en la fase de desarrollo o prueba. Sin embargo, recuerde que estos no son para uso en producción debido a su naturaleza menos estable.
Repositorio de instantáneas para pruebas de vanguardia
Obtenga las últimas instantáneas aquí:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-snapshot main | sudo tee /etc/apt/sources.list.d/postgresql.list
Repositorio de prueba para las funciones más recientes
Para probar las funciones más nuevas, este comando lo configurará:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main | sudo tee /etc/apt/sources.list.d/postgresql.list
Instale PostgreSQL 16 mediante comandos de terminal
Actualizar la lista de fuentes del índice del paquete APT
Después de agregar el repositorio PostgreSQL estable o de prueba, es importante actualizar la lista de fuentes del repositorio. Esta acción garantiza que su sistema reconozca el repositorio PostgreSQL recién agregado:
sudo apt update
Instale PostgreSQL 16 mediante el comando APT
Ahora, pasemos a la instalación de PostgreSQL 16. Este comando instala tanto el cliente como el servidor PostgreSQL:
sudo apt install postgresql-client-16 postgresql-16
Verificación de la instalación de PostgreSQL
Una vez que se completa la instalación, es fundamental confirmar que PostgreSQL esté instalado y ejecutándose correctamente. Este comando verifica el estado del servicio PostgreSQL:
systemctl status postgresql
Activando PostgreSQL 16
Si PostgreSQL no está activo, use este comando para iniciar el servicio PostgreSQL. Esto también garantiza que PostgreSQL se inicie automáticamente con su sistema:
sudo systemctl enable postgresql --now
Gestión del servicio PostgreSQL 16
Detener el servidor PostgreSQL 16
Para detener el servicio PostgreSQL temporalmente, tal vez por mantenimiento o cambios de configuración, use este comando:
sudo systemctl stop postgresql
Iniciando el servidor PostgreSQL 16
Cuando esté listo para iniciar el servicio PostgreSQL, especialmente después de una detención o instalación inicial, este comando resulta útil:
sudo systemctl start postgresql
Reiniciar el servidor PostgreSQL 16
En escenarios en los que ha cambiado configuraciones o actualizaciones, a menudo es necesario reiniciar. Este comando reinicia el servicio PostgreSQL y aplica cualquier cambio nuevo:
sudo systemctl restart postgresql
Recargar el servidor PostgreSQL 16
Para recargar el servicio PostgreSQL sin interrumpir su funcionamiento, utilice este comando. Es útil cuando necesitas aplicar cambios de configuración menores:
sudo systemctl reload postgresql
Comprobando el estado de PostgreSQL 16
Para verificar el estado operativo del servicio PostgreSQL, incluido si está activo y ejecutándose sin problemas, use:
systemctl status postgresql
Habilitar PostgreSQL 16 al iniciar el sistema
Si PostgreSQL no está configurado para iniciarse automáticamente, este comando lo habilitará, asegurando que esté activo inmediatamente y en arranques posteriores del sistema:
sudo systemctl enable postgresql --now
Comandos de ejemplo básicos con PostgreSQL 16
Accediendo a la cuenta de usuario de Postgres
En PostgreSQL, el usuario 'postgres' es una función de superusuario predeterminada. Esta cuenta es fundamental para ejecutar comandos administrativos. Para cambiar a esta cuenta, utilice:
sudo -i -u postgres
Una vez en la cuenta, ingrese a la interfaz de línea de comandos de PostgreSQL:
psql
el aviso postgres=#
confirma su conexión al entorno PostgreSQL. Para salir, simplemente escriba exit
.
Acceso rápido a PostgreSQL sin cambio de usuario
Para operaciones rápidas sin cambiar la cuenta de usuario, acceda directamente a PostgreSQL:
sudo -u postgres psql
Este comando ahorra tiempo en tareas rutinarias. Para salir de esta interfaz, escriba exit
.
Crear una nueva función de usuario de PostgreSQL
La flexibilidad de PostgreSQL permite a los superusuarios crear roles de usuario. Para establecer una nueva función de usuario, emita este comando:
sudo su - postgres -c "createuser <username>"
Reemplazar <username>
con su nombre de usuario deseado.
Iniciar una nueva base de datos PostgreSQL
Para configurar una nueva base de datos para su usuario:
sudo su - postgres -c "createdb <database_name>"
Reemplazar <database_name>
con el nombre previsto para su base de datos.
Asignar privilegios de usuario a una base de datos
Asigne de forma segura el acceso a la base de datos:
sudo -u postgres psql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
Sustituto <database_name>
y <username>
según sea necesario. Concluya escribiendo exit
.
Configurar el cortafuegos UFW para PostgreSQL 16
Instalación y activación del firewall UFW
Asegúrese de que el UFW (Firewall sin complicaciones) esté instalado y activado en su sistema. UFW simplifica la administración del firewall y es esencial para proteger el tráfico de la red:
sudo apt install ufw
sudo ufw enable
Configuración de reglas UFW para PostgreSQL 16
PostgreSQL se comunica en el puerto 5432 de forma predeterminada. Es necesario configurar UFW para permitir el tráfico en este puerto, especialmente cuando se conecta desde ubicaciones remotas.
Permitir el acceso a la subred
Para permitir el acceso a un rango de direcciones IP dentro de una subred, use este comando:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Reemplazar 192.168.1.0/24
con su rango de subred específico.
Permitir el acceso IP individual
Para otorgar acceso a PostgreSQL desde una única dirección IP, use:
sudo ufw allow proto tcp from 192.168.1.0 to any port 5432
Modificar 192.168.1.0
a la dirección IP que desea permitir.
Estos son sólo ejemplos básicos. Debería considerar bloquear cualquier base de datos pública tanto como sea posible a largo plazo.
Configurar PostgreSQL 16
Habilite el acceso remoto en PostgreSQL 16
Configurar PostgreSQL para aceptar conexiones remotas implica ajustar la dirección de escucha desde la interfaz local predeterminada.
Modificación de la configuración para acceso remoto
Accede al archivo de configuración de PostgreSQL:
sudo nano /etc/postgresql/16/main/postgresql.conf
En la sección "Configuración de conexión", cambie listen_addresses = 'localhost'
a sus necesidades específicas:
- Reemplace 'localhost' con la dirección IP deseada para una única IP.
- Para permitir conexiones en todas las interfaces, utilice
listen_addresses = '*'
.
Después de realizar cambios, guarde con CTRL+O y salga con CTRL+X. Luego, reinicie PostgreSQL:
sudo systemctl restart postgresql
Verifique los cambios con:
ss -nlt | grep 5432
En el resultado, debería ver el puerto 5432 activo.
Configuración de pg_hba.conf para seguridad mejorada
Editar el pg_hba.conf
archivo para un control de acceso optimizado:
sudo nano /etc/postgresql/16/main/pg_hba.conf
Personalización del acceso de usuarios y bases de datos
En pg_hba.conf
, puede especificar qué usuarios y bases de datos pueden conectarse y desde qué direcciones. A continuación se muestran algunas configuraciones comunes:
- Acceso específico del usuario: Reemplace 'todos' con un nombre de usuario específico para restringir el acceso solo a ese usuario.
- Acceso específico a la base de datos: Especifique una base de datos particular en lugar de permitir el acceso a todas las bases de datos.
- Restricciones de dirección: Defina direcciones o rangos de IP específicos (p. ej.,
192.168.1.0/24
) para limitar dónde se pueden originar las conexiones.
Elegir métodos de autenticación
PostgreSQL admite varios métodos de autenticación:
- MD5: Requiere una contraseña y la cifra con MD5.
- Contraseña: Utiliza contraseñas de texto sin formato (menos seguras, no recomendadas para producción).
- Par: Depende de la identidad del usuario a nivel del sistema operativo (común para conexiones locales).
- Identidad: Similar a "peer", normalmente utilizado para conexiones de red.
- SCRAM-SHA-256: Un método más seguro, recomendado en lugar de MD5 o contraseña.
Ajuste del rendimiento en postgresql.conf
Para optimizar el rendimiento, considere estas configuraciones en postgresql.conf
:
- buffers_compartidos: ajusta la cantidad de memoria que utiliza PostgreSQL para los buffers de memoria compartida.
- memoria_trabajo: establece la memoria utilizada para las operaciones internas de clasificación y hash.
- conexiones_max: Controla el número máximo de conexiones simultáneas a la base de datos.
Monitoreo y Diagnóstico
Habilite el registro detallado para obtener información sobre el rendimiento y los problemas de la base de datos:
- declaración_log: Establezca en 'todos' para registrar cada declaración SQL ejecutada.
- duración_log: cuando está habilitado, registra la duración de cada declaración SQL completa.
Conclusión
Acabamos de recorrer una guía completa para configurar PostgreSQL 16 en Ubuntu, que cubre todo, desde la instalación y configuración del acceso remoto hasta reforzar la seguridad con reglas de firewall. Recuerde, si bien es fantástico tener PostgreSQL en funcionamiento, la verdadera clave reside en el mantenimiento regular y los controles de seguridad.
Enlaces útiles
Aquí hay algunos enlaces útiles relacionados con la instalación de PostgreSQL 16 en Ubuntu Linux:
- Notas de la versión de PostgreSQL 16: Lea las notas de la versión de PostgreSQL 16 para conocer nuevas funciones, mejoras y correcciones de errores.
- Repositorio PostgreSQL GitHub: Visite el repositorio oficial de PostgreSQL GitHub para acceder al código fuente, informar problemas y contribuir al desarrollo.
- Documentación de PostgreSQL: acceda a la documentación completa de PostgreSQL para obtener guías detalladas de instalación, configuración y uso.
- Comunidad PostgreSQL: Únase a la comunidad PostgreSQL para conectarse con otros usuarios, participar en debates y obtener soporte.