0% encontró este documento útil (0 votos)
45 vistas

PostgreSQL - II

Este documento describe cómo instalar PostgreSQL en Linux CentOS usando el sistema de paquetes yum, y los pasos necesarios para configurar e iniciar un clúster de base de datos PostgreSQL. Explica que PostgreSQL se puede ejecutar en muchas plataformas como Linux, Windows, FreeBSD y otros sistemas Unix. También cubre la configuración del servidor PostgreSQL a través del archivo postgresql.conf y los archivos de autenticación pg_hba.conf y pg_ident.conf.

Cargado por

Microsys
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas

PostgreSQL - II

Este documento describe cómo instalar PostgreSQL en Linux CentOS usando el sistema de paquetes yum, y los pasos necesarios para configurar e iniciar un clúster de base de datos PostgreSQL. Explica que PostgreSQL se puede ejecutar en muchas plataformas como Linux, Windows, FreeBSD y otros sistemas Unix. También cubre la configuración del servidor PostgreSQL a través del archivo postgresql.conf y los archivos de autenticación pg_hba.conf y pg_ident.conf.

Cargado por

Microsys
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 37

POSTGRESQL ADMINISTRATION AND DEVELOPMENT

TEMA IV – ADMINISTRACION DE SERVIDOR


Instalación en Linux

En esta parte se ocupará Linux CentOS para realizar la instalación

Los repositorios por defecto de CentOS contienen paquetes de Postgres, por lo que podemos
instalarlos sin ningún problema usando el sistema de paquetes yum.

Ahora que nuestro software está instalado, tenemos que realizar algunos pasos antes de poder
utilizarlo.

Crear un nuevo clúster de base de datos PostgreSQL:


Instalación en Linux

Versión corta desde el código fuente


Instalación en Linux

Plataformas soportadas

Una plataforma se considera compatible con la comunidad de desarrollo de PostgreSQL si el


código contiene disposiciones para trabajar en esa plataforma y recientemente se ha verificado
que construye y pasa sus pruebas de regresión en esa plataforma. Actualmente, la mayoría de
las pruebas de compatibilidad de plataformas se realizan automáticamente por máquinas de
prueba en PostgreSQL Build Farm.

En general, se puede esperar que PostgreSQL funcione en estas arquitecturas de CPU: x86,
x86_64, IA64, PowerPC, PowerPC 64, S / 390, S / 390x, Sparc, Sparc 64, ARM, MIPS, MIPSEL,
M68K y PA-RISC . Existe compatibilidad de código para M32R y VAX, pero no se sabe que
estas arquitecturas se hayan probado recientemente. A menudo es posible construir sobre un
tipo de CPU no compatible configurando con --disable-spinlocks, pero el rendimiento será pobre.
Instalación en Linux

Se puede esperar que PostgreSQL funcione en estos sistemas operativos: Linux (todas las
distribuciones recientes), Windows (Win2000 SP4 y posterior), FreeBSD, OpenBSD, NetBSD,
OS X, AIX, HP / UX, Solaris y UnixWare. Otros sistemas similares a Unix también pueden
funcionar, pero actualmente no se están probando. En la mayoría de los casos, todas las
arquitecturas de CPU compatibles con un sistema operativo dado funcionarán. Utilice la Sección
16.7 de la documentación de PostgreSQL para revisar si su plataforma es compatible. En
general, una plataforma moderna compatible con Unix debería poder ejecutar PostgreSQL.

Las fuentes de PostgreSQL 9.6.15 se pueden obtener de la sección de descargas del sitio web:
https://www.postgresql.org/download/.
Instalación en Linux

Se puede esperar que PostgreSQL funcione en estos sistemas operativos: Linux (todas las
distribuciones recientes), Windows (Win2000 SP4 y posterior), FreeBSD, OpenBSD, NetBSD,
OS X, AIX, HP / UX, Solaris y UnixWare. Otros sistemas similares a Unix también pueden
funcionar, pero actualmente no se están probando. En la mayoría de los casos, todas las
arquitecturas de CPU compatibles con un sistema operativo dado funcionarán. Utilice la Sección
16.7 de la documentación de PostgreSQL para revisar si su plataforma es compatible. En
general, una plataforma moderna compatible con Unix debería poder ejecutar PostgreSQL.

Las fuentes de PostgreSQL 9.6.15 se pueden obtener de la sección de descargas del sitio web:
https://www.postgresql.org/download/.
Inicio del servidor y operaciones

Cuenta de usuario de PostgreSQL

Al igual que con cualquier demonio de servidor que sea accesible para el mundo exterior, es
aconsejable ejecutar PostgreSQL bajo una cuenta de usuario separada. Esta cuenta de usuario
solo debe ser propietaria de los datos administrados por el servidor y no debe compartirse con
otros demonios. (Por ejemplo, usar el usuario nobody es una mala idea). No es aconsejable
instalar ejecutables propiedad de este usuario porque los sistemas comprometidos podrían
modificar sus propios archivos binarios.

Para agregar una cuenta de usuario de Unix a su sistema, busque un comando useradd o
adduser. El nombre de usuario PostgreSQL se usa con frecuencia, pero puede usar otro nombre
si lo desea.
Configuración de servidor

Todos los nombres de parámetros distinguen entre mayúsculas y minúsculas. Cada parámetro
toma un valor de uno de cinco tipos: booleano, cadena, entero, coma flotante o enumerado
(enumeración). El tipo determina la sintaxis para configurar el parámetro:

Booleano: los valores se pueden escribir como activado, desactivado, verdadero, falso, sí, no, 1,
0 (sin distinción entre mayúsculas y minúsculas) o cualquier prefijo inequívoco de uno de estos.

Cadena: en general, encierre el valor entre comillas simples, duplicando las comillas simples
dentro del valor. Sin embargo, las citas generalmente se pueden omitir si el valor es un número
o identificador simple.
Configuración de servidor

Numérico (entero y coma flotante): solo se permite un punto decimal para los parámetros de
coma flotante. No use separadores de miles. No se requieren cotizaciones.

Numérico con unidad: algunos parámetros numéricos tienen una unidad implícita, porque
describen cantidades de memoria o tiempo. La unidad puede ser kilobytes, bloques (típicamente
ocho kilobytes), milisegundos, segundos o minutos. Un valor numérico sin adornos para una de
estas configuraciones utilizará la unidad predeterminada de la configuración, que se puede
aprender de pg_settings.unit. Por conveniencia, los ajustes se pueden dar con una unidad
especificada explícitamente, por ejemplo '120 ms' para un valor de tiempo, y se convertirán a la
unidad real del parámetro. Tenga en cuenta que el valor debe escribirse como una cadena (con
comillas) para usar esta función. El nombre de la unidad distingue entre mayúsculas y
minúsculas, y puede haber un espacio en blanco entre el valor numérico y la unidad.
Configuración de servidor

Las unidades de memoria válidas son kB (kilobytes), MB (megabytes), GB (gigabytes) y TB


(terabytes). El multiplicador para las unidades de memoria es 1024, no 1000.

Las unidades de tiempo válidas son ms (milisegundos), s (segundos), min (minutos), h (horas)
yd (días).

Enumerado: los parámetros de tipo enumerado se escriben de la misma manera que los
parámetros de cadena, pero están restringidos para tener uno de un conjunto limitado de
valores. Los valores permitidos para dicho parámetro se pueden encontrar en
pg_settings.enumvals. Los valores de los parámetros de enumeración no distinguen entre
mayúsculas y minúsculas.
Configuración de servidor

La forma más fundamental de establecer estos parámetros es editar el archivo postgresql.conf,


que normalmente se mantiene en el directorio de datos. Se instala una copia predeterminada
cuando se inicializa el directorio del clúster de la base de datos. Un ejemplo de cómo se vería
este archivo es:

Además del archivo postgresql.conf ya mencionado, PostgreSQL usa otros dos archivos de
configuración editados manualmente, que controlan la autenticación del cliente. De manera
predeterminada, los tres archivos de configuración se almacenan en el directorio de datos del
clúster de la base de datos.
Configuración de servidor

data_directory (string)
Especifica el directorio a utilizar para el almacenamiento de datos. Este parámetro solo se
puede establecer al inicio del servidor.

config_file (string)
Especifica el archivo de configuración del servidor principal (habitualmente llamado
postgresql.conf). Este parámetro solo se puede establecer en la línea de comando postgres.

hba_file (string)
Especifica el archivo de configuración para la autenticación basada en host (habitualmente
llamada pg_hba.conf). Este parámetro solo se puede establecer al inicio del servidor.
Configuración de servidor

ident_file (string)
Especifica el archivo de configuración para la asignación de nombre de usuario (normalmente
llamado pg_ident.conf). Este parámetro solo se puede establecer al inicio del servidor.

external_pid_file (string)
Especifica el nombre de un archivo de ID de proceso (PID) adicional que el servidor debe crear
para que lo utilicen los programas de administración del servidor. Este parámetro solo se puede
establecer al inicio del servidor.
Autenticación de cliente

Cuando una aplicación cliente se conecta al servidor de la base de datos, especifica qué
nombre de usuario de la base de datos PostgreSQL desea conectar, de la misma manera que
uno se conecta a una computadora Unix como un usuario en particular.

Dentro del entorno SQL, el nombre de usuario de la base de datos activa determina los
privilegios de acceso a los objetos de la base de datos; por lo tanto, es esencial restringir qué
usuarios de la base de datos pueden conectarse.
Autenticación de cliente

La autenticación es el proceso por el cual el servidor de la base de datos establece la identidad


del cliente y, por extensión, determina si la aplicación cliente (o el usuario que ejecuta la
aplicación cliente) puede conectarse con el nombre de usuario de la base de datos que se
solicitó.

PostgreSQL ofrece varios métodos diferentes de autenticación de clientes. El método utilizado


para autenticar una conexión de cliente particular se puede seleccionar en función de la
dirección de host (cliente), la base de datos y el usuario.
Autenticación de cliente

Los nombres de usuario de la base de datos PostgreSQL están separados lógicamente de los
nombres de usuario del sistema operativo en el que se ejecuta el servidor. Si todos los usuarios
de un servidor en particular también tienen cuentas en la máquina del servidor, tiene sentido
asignar nombres de usuario de base de datos que coincidan con los nombres de usuario de su
sistema operativo. Sin embargo, un servidor que acepta conexiones remotas puede tener
muchos usuarios de bases de datos que no tienen una cuenta del sistema operativo local, y en
tales casos no es necesario que haya una conexión entre los nombres de usuario de la base de
datos y los nombres de usuario del sistema operativo.
Autenticación de cliente

Pg_hba.conf

La autenticación del cliente se controla mediante un archivo de configuración, que


tradicionalmente se denomina pg_hba.conf y se almacena en el directorio de datos del clúster
de la base de datos. (HBA significa autenticación basada en host). Un archivo pg_hba.conf
predeterminado se instala cuando initdb inicializa el directorio de datos.

El formato general del archivo pg_hba.conf es un conjunto de registros, uno por línea. Las líneas
en blanco se ignoran, al igual que cualquier texto después del carácter # comentario. Los
registros no pueden continuar a través de las líneas. Un registro está compuesto por varios
campos que están separados por espacios y / o pestañas.
Autenticación de cliente

Pg_hba.conf

Cada registro especifica un tipo de conexión, un rango de dirección IP del cliente (si es relevante
para el tipo de conexión), un nombre de base de datos, un nombre de usuario y el método de
autenticación que se utilizará para las conexiones que coincidan con estos parámetros. El
primer registro con un tipo de conexión, dirección de cliente, base de datos solicitada y nombre
de usuario coincidentes se utiliza para realizar la autenticación. No hay "caída" o "copia de
seguridad": si se elige un registro y la autenticación falla, no se consideran los registros
posteriores. Si ningún registro coincide, se deniega el acceso.
Autenticación de cliente
Autenticación de cliente

Aunque las condiciones de error posibles en el lado del cliente son bastante variadas y
dependen de la aplicación, algunas de ellas pueden estar directamente relacionadas con la
forma en que se inició el servidor. Las condiciones distintas a las que se muestran a
continuación deben documentarse con la aplicación cliente respectiva.

Este es el error genérico "No se puede encontrar un servidor para comunicar". Parece lo anterior
cuando se intenta la comunicación TCP / IP. Un error común es olvidar configurar el servidor
para permitir conexiones TCP / IP.
Autenticación de cliente

Alternativamente, obtendrá esto cuando intente la comunicación de socket de dominio Unix a un


servidor local:

La última línea es útil para verificar que el cliente está intentando conectarse al lugar correcto. Si
de hecho no hay ningún servidor ejecutándose allí, el mensaje de error del núcleo normalmente
será Conexión rechazada o Ningún archivo o directorio, como se ilustra. (Es importante darse
cuenta de que Connection rechazó en este contexto no significa que el servidor recibió su
solicitud de conexión y la rechazó. Ese caso generará un mensaje diferente) Otros mensajes de
error como Connection timed out indican problemas más fundamentales, como la falta de
conectividad de red.
TEMA V – INTERFACES DE CLIENTE
Autenticación de cliente

Efectuar el cambio: (master)


127.0.0.1 localhost
10.0.0.1 postgreSQL01
10.0.0.2 postgreSQL02
Autenticación de cliente

Efectuar el cambio: (esclavo)


127.0.0.1 localhost
10.0.0.2 postgreSQL02
10.0.0.1 postgreSQL01

Servidor maestro: Editar archivo postgresql.conf


Autenticación de cliente

listen_addresses = '*'
port = 5432
wal_level = hot_standby
archive_mode = on
archive_command = 'cp -i "%p" /opt/archive/"%f" </dev/null'
max_wal_senders = 5
wal_keep_segments = 30
Autenticación de cliente
Crear carpeta archive: (Esto en caso de configurar el archive_command para copia de
WAL)

mkdir -p /opt/archive

Cambiar el dueño de la carpeta: (Esto en caso de configurar el archive_command para


copia de WAL)
chown postgres:postgres /opt/archive

Crear carpeta para WAL:


mkdir -p /opt/WAL

Mover el contenido de la carpeta pg_xlog a la nueva carpeta creada:


mv /var/lib/pgsql/data/pg_xlog /opt/WAL
Autenticación de cliente

Cambiar el dueño de la carpeta:

chown postgres:postgres -R /opt/WAL

Efectuar enlace simbólico:

ln -s /opt/WAL/pg_xlog/ /var/lib/pgsql/data/pg_xlog

Ajustar los permisos de acceso para usuario replicar, editar archivo de configuración de
conexión:

/var/lib/pgsql/data/pg_hba.conf
Autenticación de cliente

Efectuar los siguientes cambios:

# TYPE DATABASE USER ADDRESS METHOD


host replication replicar 10.0.0.2/32 md5
host replication replicar 10.0.0.1/32 md5

Reniciar servicio PostgreSQL

psql -Upostgres -h127.0.0.1 -p5432 -c "CREATE USER replicar LOGIN CONNECTION


LIMIT 1 ENCRYPTED PASSWORD 'CONTRASEÑA’;”

ALTER DATABASE Pedidos OWNER TO replicar;


Autenticación de cliente

select pg_start_backup('initial_backup’);

Efectuar copia de la información desde el servidor “maestro” al servidor “esclavo”:

rsync -cva --inplace --exclude=*pg_xlog* postmaster.pid /var/lib/pgsql/data/


10.0.0.2:/var/lib/pgsql/data/

Detener modo backup postgresql servidor maestro:

select pg_stop_backup();
Autenticación de cliente

Editar archivo de configuración de conexión (esclavo):

/var/lib/pgsql/data/pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD


host replication replicar 10.0.0.1/32 md5
host replication replicar 10.0.0.2/32 md5
Autenticación de cliente

Editar archivo de configuración (esclavo):

/var/lib/pgsql/data/postgresql.conf

listen_addresses = '*'
port = 5432
hot_standby = on

#wal_level = hot_standby
#archive_mode = on
#archive_command = 'cp -i "%p" /opt/archive/"%f" </dev/null’
#max_wal_senders = 5
#wal_keep_segments = 30
Autenticación de cliente

Crear archivo recovery:

gedit /var/lib/pgsql/data/recovery.conf

standby_mode = 'on'
primary_conninfo = 'host=10.0.0.1 port=5432 user=replicar password=contraseña'
trigger_file = '/tmp/trigger_failover'
restore_command = 'cp /opt/archive/%f "%p"'
archive_cleanup_command = 'pg_archivecleanup -d /opt/archive %r 2>>/var/log/postgresql/cleanup.log'
Autenticación de cliente

Cambiar el dueño de la carpeta recovery.conf:

chown postgres:postgres /var/lib/pgsql/data/recovery.conf

Crear carpeta archive:

mkdir -p /opt/archive

Cambiar el dueño de la carpeta creada:

chown postgres:postgres /opt/archive

Reiniciar el Servicio
Autenticación de cliente

Comprobar la transmisión de la replicación: (servidor Maestro)

SELECT * FROM pg_stat_replication;

SELECT sync_state FROM pg_stat_replication;

Comprobar la ubicación del último registro de transacciones que fue transmitido por el esclavo y también
se escribe en el servidor esclavo: (servidor Esclavo)

SELECT pg_last_xlog_receive_location ();


Autenticación de cliente

Activar automáticamente el servidor esclavo como nuevo servidor maestro en caso de fallo del servidor
maestro en uso:

/# touch /tmp/trigger_failover

pg_basebackup -h 10.0.0.1 -D /var/lib/postgresql/data -U replicar -v -P --xlog-method=stream


Monitoreo

ps auxww | grep ^postgres


ps u –C postgres –C postmaster

pg_stat_activity;
pg_stat_database;
pg_stat_all_tables;
pg_stat_user_tables
pg_stat_get_backend_idset()
pg_backend_pid()
pg_stat_reset()

SELECT relname, relpages FROM pg_class

También podría gustarte