UPEA – INGENIERÍA DE SISTEMAS – ADM.
BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
INSTALACIÓN DE POSTGRESQL en ROCKY LINUX
lsblk
dnf update
En el FIREFOX
Click en Download
Click in Linux
Click en Red Hat/Rocky/CentOS
Click en direct download
Instalación de PostgreSQL en ROCKY-LINUX Pag. 1
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
Click en RHEL / Rocky Linux 9 – x86_64
Descargamos el archive (pgdg-redhat-repo-42.0-32.noarch.rpm)
Como root
cp -a /home/falanoca/Descargas/pgdg-redhat-repo-42.0-32.noarch.rpm .
Instalación de PostgreSQL en ROCKY-LINUX Pag. 2
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
ls
rpm -ivh pgdg-redhat-repo-42.0-32.noarch.rpm – instalando el repositorio
dnf list module postgresql* -- descarga las llaves
dnf list module postgresql14*
dnf install postgresql14-server.x86_64 postgresql14-contrib.x86_64
ls -l /usr/pgsql-14/bin
cat /etc/passwd | grep postgres
passwd postgres
systemctl status postgresql-14.service
su - postgres
nano .bash_profile -- trabajamos con variables de entorno
exit
su - postgres
ls /var/lib/pgsql/14/
ls /var/lib/pgsql/14/data
Está vacía la carpeta, entonces no está inicializado el cluster
cd /var/lib/pgsql/14/data
initdb -D /var/lib/pqsql/14/data/ -- inicializando el CLUSTER
Instalación de PostgreSQL en ROCKY-LINUX Pag. 3
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
ENTONCES EL CLUSTER YA ESTA INICIALIZADO...
pg_ctl start -- INICIAMOS EL SERVIDOR
pg_ctl status
pg_ctl stop
exit
VIENDO COMO SUBIR EL POSTGRES DE OTRA MANERA, COMO root
systemctl start postgresql-14.service
systemctl status postgresql-14.service
Instalación de PostgreSQL en ROCKY-LINUX Pag. 4
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
AHORA VEMOS QUE PROCESOS ESTAN CORRIENDO A NIVEL DE POSTGRES
ps -ef | grep postgres
Hay un proceso PADRE, aquí es postmaster y se encarga de inicializar todos los procesos
Matando el proceso 3748
kill -9 3748
ps -ef | grep postgres
Y vemos que otra vez se generó background write
AHORA ENTRAMOS A postgres PARA VERIFICAR SI ESTA EN EJECUCIÓN
su - postgres
pg_ctl status
Instalación de PostgreSQL en ROCKY-LINUX Pag. 5
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
psql - Entramos a postgresql
Creando contraseña al usuario postgres en la BD
Directorio de trabajo
Puerto predeterminado del postgres
Verificando la versión
Base de datos predeterminada
Usuario actual
Necesitamos ver la dirección IP y sale vacío (solo está trabajando a nivel local), no recibe conexiones
remotas.
\q
exit
PROBANDO CONECTIVIDAD ENTRE SERVIDORES LOCALES (tenemos 2 servidores: 192.168.0.22 y el
192.168.0.23
ssh [email protected]
Instalación de PostgreSQL en ROCKY-LINUX Pag. 6
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
CONFIGURANDO POSTGRES PARA CONEXIONES REMOTAS, SERVIDOR 1
su - postgres
cd /var/lib/pgsql/14/data/
ls
Intentando conectar desde el servidor 2 al 1
su - postgres
psql -h 192.168.0.22 -p 5432 -U postgres postgres
VOLVEMOS AL SERVIDOR 1 (como postgres)
cd /var/lib/pgsql/14/data/
nano -l postgresql.conf
ESTE ARCHIVO pg_hba.conf ES EL ENCARGADO DE MANTENER LISTAS DE CONEXIÓN Y
AUTENTICACIÓN
nano -l pg_hba.conf – SOLO CAMBIAMOS LA LÍNEA 91
REINICIAMOS (restart) EL SERVIDOR PARA LOS CAMBIOS
pg_ctl restart
VOLVEMOS AL SERVIDOR 2 Y PROBAMOS SI SE CONECTA, SIGUE DANDO EL MISMO ERROR
psql -h 192.168.0.22 -p 5432 -U postgres postgres
EL ERROR VIENE POR EL TEMA DEL FIREWALL, VOLVEMOS AL SERVIDOR 1
Instalación de PostgreSQL en ROCKY-LINUX Pag. 7
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
iptables -L
ESTA TODO VACÍO, EL iptables ES CADUCO TRABAJAMOS DIRECTAMENTE CON EL FIREWALLD
EN AMBOS SERVIDORES CON LO SIGUIENTE (COMO root):
systemctl status firewalld
ESTA CORRIENDO EL FIREWALLD Y POR ESO NO DEJA CONECTAR REMOTAMENTE
systemctl stop firewalld -- PARAMOS EL SERVICIO DEL FIREWALLD
systemctl status firewalld -- YA ESTA INACTIVO COMO VEMOS EN LA SIGUIENTE PANTALLA
PROBAMOS DESDE EL SERVIDOR 2
psql -h 192.168.0.22 -p 5432 -U postgres postgres
YA HAY CONEXIÓN
Instalación de PostgreSQL en ROCKY-LINUX Pag. 8
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
\conninfo – PIDIENDO DETALLES DE LA CONEXIÓN
PARA QUE HAYA CONEXIÓN LO BAJAMOS EL FIREWALLD PERO POR SEGURIDAD TIENE QUE ESTAR
ARRIBA (CORRIENDO) === > EN AMBOS SERVIDORES LEVANTAMOS EL FIREWALLD (ROOT)
systemctl start firewalld
¿QUE ES LO CORRECTO? ENTONCES HAY QUE AGREGAR UNA REGLA
firewall-cmd --zone=public --add-port=5432/tcp
Firewall-cmd –list-ports – LISTAMOS LOS PUERTOS
ENTRAMOS AL SERVIDOR 2
psql -h 192.168.0.22 -p 5432 -U postgres postgres
YA HAY CONEXIÓN
\conninfo -- PIDIENDO DETALLES DE LA CONEXIÓN
OPTIMIZACIÓN DE LOS SERVIDORES (TUNEADOS)
Postgres viene con una configuración muy baja por defecto (no es insuficiente para ponerle en
producción)
su - postgres
psql
Instalación de PostgreSQL en ROCKY-LINUX Pag. 9
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
pg_ctl restart
show max_connections;
OTRA MANERA DE VERIFICAR LO ANTERIOR
select * from pg_settings where name=’max_connections’; NOS MUESTRA AMONTONADO
ACTIVAMOS EL DESPLIEGUE EXTENDIDO
\x
select * from pg_settings where name=’max_connections’;
Instalación de PostgreSQL en ROCKY-LINUX Pag. 10
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
PARA VOLVER AL ESTADO ANTERIOR
\x
VERIFICAMOS EL REGISTRO DE EVENTOS (ESTA APAGADO)
show log_connections;
OTRA MANERA DE MODIFICAR LOS PARÁMETROS ANTERIORES
alter system set log_connections='on';
VEMOS QUE NO HIZO LOS CAMBIOS
show log_connections;
ENTONCES SALIMOS
\q
CON postgres
pg_ctl reload
ENTRAMOS AL SERVIDOR Y VERIFICAMOS QUE YA ESTA EN on
psql
Instalación de PostgreSQL en ROCKY-LINUX Pag. 11
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
show log_connections;
LAS MODIFICACIONES QUE ESTAMOS HACIENDO CON EL alter system NO ESTAN AFECTANDO EL
ARCHIVO DE postgresql.conf, ENTONCES DONDE SE HIZO LA MODIFICACIÓN, YA QUE ESTA EN on?
\q
cd /var/lib/pgsql/14/data/
ls
ESTA AFECTANDO AL ARCHIVO postgresql.auto.conf
REVISANDO
cat postgresql.auto.conf
EL ARCHIVO postgresql.auto.conf PREVALECERÁ SOBRE postgresql.conf, A NIVEL DE JERARQUÍA
MIRAMOS EL PARÁMETRO wal_buffers, QUE ES EL REGISTRO DE ARCHIVOS A NIVEL DE MEMORIA
INTERMEDIA, ¿CUÁL ES EL VALOR REAL? (EN MEGAS QUE ESTA UTILIZANDO)
\q
cd /var/lib/pgsql/14/data
ls
nano postgresql.com
Aquí está en -1
psql
show wal_buffers; VEMOS QUE ESTÁ EN 4mb
\x
Instalación de PostgreSQL en ROCKY-LINUX Pag. 12
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
select * from pg_settings where name='wal_buffers';
ESTOS VALORES PODRÍAMOS CAMBIARLOS DE FORMA TEMPORAL
show work_mem; ahí abajo dice que el trabajo de memoria es de 4 mb
AUMENTAMOS LA MEMORIA DE MANERA TEMPORAL
set session work_mem='8MB';
PROBANDO LA TEMPORALIDAD
\q
psql
show work_mem; sigue en 4mb, COMO ERA TEMPORAL
AJUSTANDO LA MEMORIA DEL SERVIDOR
SE TIENE QUE ASIGNAR EL 25% DE LA MEMORIA AL SHARED_BUFFER
\q
Exit
CUANTO DE MEMORIA TENEMOS (8 gb)
Instalación de PostgreSQL en ROCKY-LINUX Pag. 13
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
cat /proc/meminfo | grep MemTotal
su - postgres
psql
alter system set shared_buffers='2GB';
\q
pg_ctl restart
psql
show shared_buffers;
PARA QUE SIRVE EL work_mem: ESPECIFICA LA CANTIDAD DE MEMORIA QUE VA A UTILIZAN LAS
OPERACIONES INTERNAS COMO, POR EJEMPLO; ORDER BY-UNIONES DE TABLAS CON JOIN-
TRABAJAR CON TABLAS HASH ANTES DE QUE LOS DATOS SE ESCRIBAN EN ARCHIVO TEMPORALES
EN EL DISCO
show work_mem;
¿QUE HACE postgres CUANDO NO TIENE MAS MEMORIA EN EL work_mem? Postgres EMPIEZA A
CREAR ARCHIVOS TEMPORALES EN EL DISCO PARA TERMINAR DE CONCLUÍR ESE PROCESO.
CUANDO HAY MUCHOS ARCHIVOS TEMPORALES, TENEMOS QUE SUBIR EL work_mem.
MEMORIA SECUNDARIA = DISCO
DE QUE TAMAÑO TIENE QUE SER EL work_mem. DEL 2 AL 4% DE LA MEMORIA RAM TOTAL
APROXIMADAMENTE
alter system set work_mem='256MB';
Instalación de PostgreSQL en ROCKY-LINUX Pag. 14
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
\q
pg_ctl restart
psql
show work_mem;
¿COMO SABER EL NRO DE ARCHIVOS TEMPORALES Y EL TAMAÑO DE ESOS ARCHIVOS QUE SE
FUERON GENERANDO?
\x
select * from pg_stat_database;
EL work_mem TRABAJA CON OTROS PARÁMETROS
AQUÍ CONCLUYEN LOS AJUSTES AL postgresql
¿CÓMO SE AJUSTAN LOS PROCESOS DEL SERVIDOR?
PROCESOS:
Instalación de PostgreSQL en ROCKY-LINUX Pag. 15
UPEA – INGENIERÍA DE SISTEMAS – ADM. BASE DE DATOS – ABD 631 “C”
MATERIAL RECOPILADO BY: fac
CHECKPOINTER SE ENCARGA DE COPIAR LOS BLOQUES SUCIOS DEL BUFFER_SHARED AL DISCO.
EL TAMAÑO DE UN BLOQUE ES DE 8KB
ENTONCES 256/8 = 32 BLOQUES
¿CADA CUANTO SE EJECUTA UN CHECKPOINT?
ME DICE DONDE ESTOY TRABAJANDO CON LOS ARCHIVOS DE CONFIGURACIÓN. $PGDATA ES LA
VARIABLE DE ENTORNO
Instalación de PostgreSQL en ROCKY-LINUX Pag. 16