PostgreSQL - II
PostgreSQL - II
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.
Plataformas soportadas
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
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 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
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
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
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
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
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
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
select pg_start_backup('initial_backup’);
select pg_stop_backup();
Autenticación de cliente
/var/lib/pgsql/data/pg_hba.conf
/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
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
mkdir -p /opt/archive
Reiniciar el Servicio
Autenticación de cliente
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)
Activar automáticamente el servidor esclavo como nuevo servidor maestro en caso de fallo del servidor
maestro en uso:
/# touch /tmp/trigger_failover
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()