Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones...

75
Administración de PostgreSQL Jose M. Alarcón Medina (ITI - Formación)

Transcript of Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones...

Page 1: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Administración de PostgreSQL

Jose M. Alarcón Medina (ITI - Formación)

Page 2: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Resumen

● Objetivos● Plan del curso● Metodología y Materiales● Desarrollo del curso● Próximos pasos

Page 3: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Objetivos

● Proporcionar a los profesionales responsables de las bases de datos los conocimientos para la instalación y administración de una base de datos PostgreSQL.

● El alumno al finalizar el curso sabrá cómo instalar PostgreSQL, configurar el entorno así como administrar los recursos que proporciona la base de datos.

Page 4: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Plan del curso (I)● Dia I:

– Presentación e Introducción– Estructura física y lógica

● Día II:– Instalación y Desinstalación– Puesta en marcha

● Día III:– Seguridad– Procesamiento de instrucciones y transacciones

Page 5: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Plan del curso (y II)● Día IV:

– Configuración– Copias de seguridad y respaldo– Tareas administrativas

● Día V:– Rendimiento– Monitorización– Afinamiento– Catálogo del Sistema– Otros temas

Page 6: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Metodología y Materiales● Metodología:

– Las clases teórico-prácticas.– Servidor central al que puedan conectarse los alumnos, así como

instalaciones en sus ordenadores. – Se proporcionaran ejercicios para realizar las prácticas.– El alumno al finalizar el curso sabrá cómo instalar PostgreSQL,

configurar el entorno así como administrar los recursos que proporciona la base de datos.

● Materiales:– Manual del curso– Boletines de prácticas con soluciones– Scripts de ayuda y ejemplo– http://www.uv.es/alarmedi/iti2007

Page 7: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Desarrollo del Curso

Page 8: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Introducción

● Presentación● SGBD, Lenguajes● Historia PostgreSQL● Uso de las herramientas● Psql y pgAdmin3

Page 9: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura PostgreSQL (I)

● Arquitectura– Procesos Postmaster / Postgres (uso del socket

TCP/IP)– Memoria compartida– Almacenamiento en Disco

● Concepto: CLUSTER BASE DE DATOS

Page 10: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura PostgreSQL (II)

● Estructura Física– Zona Memoria Compartida– Socket de TCP/IP– Almacenamiento en disco

● INITDB: Creación del cluster– Ficheros– Directorios

Page 11: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura PostgreSQL – initdb (III)● Opciones:● [-D, --pgdata=]DATADIR ubicación para este cluster de bases de datos● -E, --encoding=CODIFICACION codificación por omisión para nuevas bases de datos● --locale=LOCALE inicializar usando esta configuración local● -A, --auth=METODO método de autentificación por omisión para

conexiones locales● -U, --username=USUARIO nombre del superusuario del cluster● -?, --help mostrar esta ayuda y salir

Si el directorio de datos no es especificado, se usa la variable de ambiente PGDATA.

Page 12: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura PostgreSQL (IV)

● Estructura Lógica– Bases de Datos– Tablespaces– Roles de grupo– Roles de login

● Forman el CLUSTER DE BASE DE DATOS

Page 13: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura Lógica:Creación bases de datos (V)

$ createdb [OPCIÓN]... [NOMBRE] [DESCRIPCIÓN]Opciones:

-D, --tablespace=TBLSPC tablespace por omisión de la base de datos -E, --encoding=CODIFICACIÓN codificación para la base de datos -O, --owner=DUEÑO usuario que será dueño de la base de datos -T, --template=PATRÓN base de datos patrón a copiar -e, --echo mostrar los comandos enviados al servidor -q, --quiet no desplegar mensajes --help mostrar esta ayuda y salir --version mostrar el n·mero de versión y salir

Opciones de conexión: -h, --host=ANFITRIÓN nombre del servidor o directorio del socket -p, --port=PUERTO puerto del servidor -U, --username=USUARIO nombre de usuario para la conexión -W, --password preguntar la contraseña

Si no se especifica, se creará una base de datos con el mismo nombre que el usuario actual.

Page 14: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura Lógica:Creación bases de datos (VI)

Desde SQL:CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ TABLESPACE [=] tablespace ] [ CONNECTION LIMIT [=] connlimit ] ];

Page 15: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura Lógica:Creación usuarios y roles (VII)

createuser [OPCIÓN]... [ROL]Opciones: -s, --superuser el rol será un superusuario -S, --no-superuser el rol no será un superusuario -d, --createdb el rol podrá crear bases de datos -D, --no-createdb el rol no podrá crear bases de datos -r, --createrole el rol podrá crear otros roles -R, --no-createrole el rol no podrá crear otros roles -l, --login el rol podrá conectarse (predeterminado) -L, --no-login el rol no podrá conectarse -i, --inherit el rol heredará los privilegios de los roles de los cuales es miembro (predeterminado) -I, --no-inherit rol no heredará privilegios -c, --connection-limit=N límite de conexiones para el rol (predeterminado: sin límite) -P, --pwprompt asignar una contraseña al nuevo rol -E, --encrypted almacenar la constraseña cifrada -N, --unencrypted almacenar la contraseña sin cifrar -e, --echo mostrar los comandos a medida que se ejecutan -q, --quiet no escribir ningún mensaje --help desplegar esta ayuda y salir --version desplegar información de versión y salir

Page 16: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura Lógica:Creación usuarios y roles (VIII)

... Continuacióncreateuser [OPCIÓN]... [ROL]Opciones de conexión: -h, --host=ANFITRIÓN nombre del servidor o directorio del socket -p, --port=PUERTO puerto del servidor -U, --username=NOMBRE nombre de usuario con el cual conectarse (no el usuario a crear) -W, --password pedir contraseña para conectarse

Si no se especifican -s, -S, -d, -D, -r, -R o el ROL, se preguntaráinteractivamente.

Desde SQL:CREATE ROLE name [ [ WITH ] option [ ... ] ] SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE rolename [, ...] | IN GROUP rolename [, ...] | ROLE rolename [, ...] | ADMIN rolename [, ...] | USER rolename [, ...] | SYSID uid

Page 17: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Estructura Lógica:Creación de tablespaces (y IX)

CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'

Page 18: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Instalación / Desinstalación (I)

● Instalación para Windows● Instalación para Linux

– Desde paquetes● Debian (apt-get)● RedHat – SUSE (rpm)

– Desde ficheros fuente

Page 19: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Instalación / Desinstalación Desde ficheros fuente (II)

● Instalación– Decisiones iniciales– Requerimientos de instalación y hardware– Configuración del entorno– Descarga del software– Compilación y enlazado– Configuración del usuario propietario

● Instalación de un cliente● Desinstalación

Page 20: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Instalación / Desinstalación Migraciones (III)

● Migraciones – Sin conservar el cluster– Conservando el cluster

● Instalación de varios PostgreSQL en el mismo servidor

Page 21: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Instalación / Desinstalación Más cosas (y IV)

● Configuración:– Parámetros del Kernel– Parámetros de funcionamiento

● Instalación de extensiones

Page 22: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Puesta en Marcha (I)

● Puesta en marcha y para del servidor, existen dos modos:– postmaster -> postgres– pg_ctl

● Parada manual (modos)● Puesta en marcha y parada automática

Page 23: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Puesta en Marchapostmaster - postgres (II)

postmaster [OPCION]...Opciones:

-B NBUFFERS número de búfers de memoria compartida -c VAR=VALOR definir parámetro de ejecución -d 1-5 nivel de depuración -D DATADIR directorio de bases de datos -e usar estilo europeo de fechas (DMY) -F desactivar fsync -h NOMBRE nombre de host o dirección IP en que escuchar -i activar conexiones TCP/IP -k DIRECTORIO ubicación del socket Unix -N MAX-CONN número máximo de conexiones permitidas -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto) -p PUERTO número de puerto en el cual escuchar -s mostrar estadísticas después de cada consulta -S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB) --NOMBRE=VALOR definir parámetro de ejecución --describe-config mostrar parámetros de configuración y salir --help desplegar esta ayuda y salir --version desplegar número de versión y salir

Page 24: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Puesta en Marchapostmaster - postgres (III)

postmaster [OPCION]...Opciones de desarrollador: -f s|i|n|m|h impedir el uso de algunos tipos de planes -n no reinicializar memoria compartida después de salida anormal -O permitir cambios en estructura de tablas de sistema -P desactivar índices de sistema -t pa|pl|ex mostrar tiempos después de cada consulta -T enviar SIGSTOP a todos los backends si uno de ellos muere -W NÚM espera NÚM segundos para permitir acoplar un depurador

Opciones para modo mono-usuario: --single selecciona modo mono-usuario (debe ser el primer argumento) DBNAME nombre de base de datos (el valor por omisión es el nombre de usuario) -d 0-5 nivel de depuración -E mostrar las consultas antes de su ejecución -j no usar saltos de línea como delimitadores de consulta -r ARCHIVO enviar salida estándar y de error a ARCHIVO

Opciones para modo de inicio (bootstrapping): --boot selecciona modo de inicio (debe ser el primer argumento) DBNAME nombre de base de datos (argumento obligatorio en modo de inicio) -r ARCHIVO enviar salida estándar y de error a ARCHIVO -x NUM uso interno

Page 25: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Puesta en Marchapg_ctl (IV)

Empleo: pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»] pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»] pg_ctl reload [-D DATADIR] [-s] pg_ctl status [-D DATADIR] pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESOOpciones comunes: -D, --pgdata DATADIR ubicación del área de almacenamiento de datos -s, --silent mostrar sólo errores, no mensajes de información -w esperar hasta que la operación se haya completado -W no esperar hasta que la operación se haya completado --help mostrar este texto y salir --version mostrar información sobre versión y salir(Por omisión se espera para las detenciones, pero no los inicios o reinicios)

Si la opción -D es omitida, se usa la variable de ambiente PGDATA.

Opciones para inicio y reinicio: -l --log ARCHIVO guardar el registro del servidor en ARCHIVO. -o OPCIONES parámetros de línea de órdenes a pasar a postgres (ejecutable del servidor de PostgreSQL) -p RUTA-A-POSTGRES normalmente no es necesario

Page 26: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Puesta en Marchapg_ctl (V)

--- continuación

Empleo: pg_ctl start [-w] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»] pg_ctl stop [-W] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] pg_ctl restart [-w] [-D DATADIR] [-s] [-m MODO-DETENCIÓN] [-o «OPCIONES»] pg_ctl reload [-D DATADIR] [-s] pg_ctl status [-D DATADIR] pg_ctl kill NOMBRE-SEÑAL ID-DE-PROCESO

Opciones para detención y reinicio: -m MODO-DE-DETENCIÓN puede ser «smart», «fast» o «immediate»

Modos de detención son: smart salir después que todos los clientes se hayan desconectado fast salir directamente, con apagado apropiado immediate salir sin apagado completo; se ejecutará recuperación en el próximo inicio

Nombres de señales permitidos para kill: HUP INT QUIT ABRT TERM USR1 USR2

Page 27: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Seguridad en PostgreSQL

● Seguridad en la gestión de ficheros● Seguridad en el acceso de los clientes● Seguridad lógica: privilegios

Page 28: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Seguridad: Gestión de ficheros

● Ficheros binarios● Ficheros $PGDATA (cluster)● Ficheros de tablespaces● Ficheros de configuración● Socket para conexiones locales

Page 29: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Seguridad: Acceso clientes (I)

● Ficheros de configuración:– pg_hba.conf– pg_ident.conf

● Fichero pg_hba.conf: configuración de autenticación

TIPO BASE DATOS USUARIO DIRECCION METODOLOCAL <base datos> <usuario> <metodo-autenticacion [opción]HOST <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]HOSTSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]HOSTNOSSL <base datos> <usuario> <direccionCIDR> <metodo-autenticacion [opción]

Page 30: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Seguridad: Acceso clientes (II)

● Métodos de autenticación:– Trust– Reject– Password– Crypt– MD5– KRB5– Ident (sameuser / mapeo usuario -> pg_ident.conf)– PAM– LDAP

Page 31: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Seguridad: Nivel lógico

● Creación de roles (superuser, createuser, createdb)

● GRANT y REVOKE:– Bases de datos– Tablespaces– Lenguajes– Esquemas– Tablas y vistas– Procedimientos y funciones

Page 32: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Procesamiento de Instrucciones (I)

● Ejecución de sentencias (envio, análisis, preparación, ejecución y recuperación)

● Elementos que intervienen:– Shared Buffers (lista sucia)– Discos– Buffers WAL– Ficheros WAL

Page 33: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Procesamiento de Instrucciones (y II)

Page 34: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión de transacciones (I)

● Cumplimiento reglas ACID:– Atomicidad (atomicity)– Consistencia (consistency)– Aislamiento (isolatio)– Persistencia (durability)

Page 35: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Atomicidad (II)

● Todo o nada● BEGIN / COMMIT / ROLLBACK

– Restricciones inmediatas o diferidas– Modo autoconfirmación

● SAVEPOINTBEGIN;… operaciones1SAVEPOINT paso2;… operaciones2… si error => ROLLBACK paso2;… operaciones3COMMIT;

Page 36: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Consistencia (III)

● Reglas de integridad:– Not null– Check– Unique– Primary Key– Foreign Key: únicas que son diferibles:[DEFERRABLE]

[INITIALLY {INMEDIATE | DEFERRED}]

Page 37: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Consistencia (IV)

● Foreign Key:[DEFERRABLE]

[INITIALLY {INMEDIATE | DEFERRED}]– Deferrable: el punto de comprobación se puede

cambiar dinámicamente– Inmediate: se comprueba después de cada

sentencia SQL– Deferred: la comprobación se realiza al final de

la transacción.

Page 38: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Aislamiento (IV)

● Control de concurrencia:– No se basa en el uso bloqueos– Se basa en el uso de MVCC (multiversion

Concurrency Control)● MVCC: cada transacción ve una

“instantánea” de la BD tal como era al empezar la transacción.

● Lectores y escritores no necesitan esperarse.

Page 39: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Aislamiento (V)

● Niveles Aislamiento SQL92:

● Bloqueos sobre tablas– a nivel de tabla– a nivel de fila

Nivel Lectura sucia Lectura no repetible Lectura Fantasma BloqueosLectura no confirmada Posible Posible Posible NuncaLectura confirmada No Posible Posible Posible Si hay actualizacionesLectura repetible No Posible No Posible Posible Si hay consultasSerializable No Posible No Posible No Posible Siempre (fácil deadlock)

Page 40: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Gestión transacciones: Persistencia (y VI)

● Ficheros WAL (Write-ahead loggin): ficheros de escritura adelantada.

● Ficheros de 16Mb● Procesos REDO / UNDO

Page 41: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno de ejecución (I)

● Gestión de recursos del Kernel, parámetros:– SHMMAX, SHMMIN, SHMALL, SHMSEG,

SHMNI– SEMMNI, SEMMNS, SEMMSL, SEMMAP,

SEMVMX

Page 42: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno de ejecución (II)

● Fichero postgresql.conf● Activación de la modificación de valores:

– Con el servidor en marcha (SET)– Recargando el fichero (pg_ctl reload)– Reiniciando el servidor (pg_ctl restart)

Page 43: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno - postgresql.conf (III)

● Ubicación de ficheros● Conexión

– listen_adresses– Port– max_connections– superuser_reserved_connections– unix_socket_directory

● Seguridad y autenticado– ssl

Page 44: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno - postgresql.conf (IV)

● Uso de recursos– shared_buffers– work_mem– max_prepared_transaction– max_fsm_relations– max_fsm_pages– max_lock_per_transaction– Retraso de vacuum– Proceso de fondo writer

● WAL– wal_buffers– checkpoints_segments– checkpoint_timeout

Page 45: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno - postgresql.conf (V)

● Ajuste de rendimiento de consultas● Errores / fichero de seguimiento

– Lugar de seguimiento– Cuándo se efectúa– Qué se registra

● Estadísticas (recolección)● Vacuum● Conexión cliente

– search_path– default_transaction_isolation– datestyle– client_encoding

Page 46: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Configuración entorno - postgresql.conf (y VI)

● Gestión de bloqueos– deadlock_timeout–

● Opciones predefinidas– sólo se pueden cambiar en la instalación– block_size– integer_datetime– lc_collate, lc_ctype– max_identifier_length– max_ident_keys– server_encoding

Page 47: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Internacionalización y localización (I)

● Mensajes en varios idiomas● Mensajes en varios juegos de caracteres● Diversos tipos de ordenaciones● Clasificación de caracteres● Formatos de monedas, fechas, etc.

<idioma>_<ubicacion>.<cjto_caracteres>@<modificadores>

Page 48: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Codificación: Responsabilidades (II)

● Juego de caracteres en la base de datos = Administrador de base de datos

● Juego de caracteres en las aplicaciones = Responsable de las aplicaciones

● En el proceso de migración es posible que estos dos juegos sean distintos. Ejemplo estado actual: base de datos en UTF8 y aplicaciones en ISO-8859-1/15

Page 49: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Codificación: ejemplos problemas (III)

● Error al usar codificaciones distintas:– España (UTF8) --> España (Latin1)– Jesús Pérez (Latin1) --> Jes?s P?ez (UTF8)¿Cuándo se puede dar este problema?:

● Terminales distintas● Uso de editores incorrectos● Transmisiones de ficheros: FTP, CVS ...

Page 50: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad y Recuperación (I)

● Copias de seguridad● Recuperación de datos● Migración de versiones

Page 51: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad(II)

● Copia de seguridad de ficheros del S.O.– Base de datos parada– No se pueden recuperar partes

● Volcado SQL– pg_dump– pg_dumpall

● Volcado en línea y recuperación PITR

● Conviene automatizar: cron, scripts ...

Page 52: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad – pg_dump (III)

● Volcar una bd o parte de ella.● En texto plano:

– Fichero de texto con instrucciones SQL– Uso de psql para restaurar– Portable a servidores SQL

● En formato propio de PostgreSQL– Se usa pg_restore para restaurar– Más flexible– Con pg_restore se puede crear archivo SQL.

Page 53: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad – pg_dump (IV)

Uso: pg_dump [OPCIÓN]... [NOMBREDB]

Opciones generales: -f, --file=ARCHIVO nombre del archivo de salida -F, --format=c|t|p Formato del archivo de salida (personalizado, tar, sólo texto) -i, --ignore-version procede aún cuando las versiones del servidor y pg_dump no coinciden -Z, --compress=0-9 nivel de compresión para formatos comprimidos

Opciones que controlan el contenido de la salida: -a, --data-only extrae sólo los datos, no el esquema -b, --blobs incluye objetos grandes en la extracción -C, --create incluye comandos para crear la base de datos en la extracción -d, --inserts extrae los datos usando INSERT, en vez de COPY -D, --column-inserts extrae los datos usando INSERT con nombres de columnas -E, --encoding=CODIFIC extrae los datos con la codificación CODIFIC -n, --schema=ESQUEMA extrae sólo el esquema nombrado -N, --exclude-schema=ESQUEMA NO extrae el o los esquemas listados -o, --oids incluye OIDs en la extracción -O, --no-owner en formato de sólo texto, no reestablecer los dueños de los objetos -s, --schema-only extrae sólo el esquema, no los datos -t, --table=TABLE extrae sólo la tabla nombrada -x, --no-privileges no extrae los privilegios (grant/revoke) --use-set-session-authorization usa comandos SESSION AUTHORIZATION en lugar de comandos OWNER TO

Page 54: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad – pg_dump (V)

Uso: pg_dump [OPCIÓN]... [NOMBREDB]

Opciones de la conexión: -h, --host=ANFITRIÓN anfitrión de la base de datos o el directorio del enchufe (socket) -p, --port=PUERTO número del puerto de la base de datos -U, --username=USUARIO nombre de usuario con el cual conectarse -W, --password fuerza un prompt para la contraseña (debería ser automático)

Si no se especifica un nombre de base de datos entonces el valor de la variable de ambiente PGDATABASE es usado.

Page 55: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad – pg_dumpall (VI)

● Diferencias con pg_dump● No permite fichero de salida: uso de

redirección● No permite formatos: siempre texto plano● Opción '-g': exportar objetos globales

Page 56: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Copias de seguridad – pg_dumpall (VII)

Uso: pg_dumpall [OPCIÓN]...

Opciones que controlan el contenido de la salida: -a, --data-only extrae sólo los datos, no el esquema -c, --clean tira la base de datos antes de crearla -d, --inserts extrae los datos usando INSERT, en vez de COPY -D, --column-inserts extrae los datos usando INSERT con nombres de columnas -g, --globals-only extrae sólo los objetos globales, no bases de datos -o, --oids incluye OIDs en la extracción -O, --no-owner no reestablece los dueños de los objetos -s, --schema-only extrae sólo el esquema, no los datos -S, --superuser=NAME especifica el nombre del superusuario a usar en el guión -x, --no-privileges no extrae los privilegios (grant/revoke) -X use-set-session-authorization, --use-set-session-authorization usa comandos SESSION AUTHORIZATION en lugar de comandos OWNER TO

Opciones de la conexión:

-h, --host=ANFITRIÓN anfitrión de la base de datos o el directorio del enchufe (socket) -p, --port=PUERTO número del puerto de la base de datos -U, --username=USUARIO nombre de usuario con el cual conectarse -W, --password fuerza un prompt para la contraseña (debería ser automático)

Page 57: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Recuperación de Datos (I)

● Con psql a partir de un fichero SQL● Con pg_restore

– Directamente a una base de datos– Volcando a fichero SQL

● Volcado en línea y recuperación PITR– Habilitar archivado WAL– Copias de seguridad en línea– Recuperación PITR

Page 58: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Recuperación Datos: Volcado Línea + PITR (y II)

● Habilitar archivado WAL– Parámetro archive_command

● Copias de seguridad en línea– Select pg_start_backup('nombre_backup');– Copia física– Select pg_stop_backup();

● Recuperación PITR– Parar base datos– Recuperar copia física– Copiar ficheros WAL de la copia– Fichero recovery.conf– Arrancar base datos

Page 59: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

COPY TO / COPY FROM

Copiar datos de una consulta a un fichero

COPY tablename [ ( column [, ...] ) ] FROM { 'filename' | STDIN } [ [ WITH ] [ BINARY ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE NOT NULL column [, ...] ];

Copiar datos de un fichero a una tabla

COPY { tablename [ ( column [, ...] ) ] | ( query ) } TO { 'filename' | STDOUT } [ [ WITH ] [ BINARY ] [ HEADER ] [ OIDS ] [ DELIMITER [ AS ] 'delimiter' ] [ NULL [ AS ] 'null string' ] [ CSV [ HEADER ] [ QUOTE [ AS ] 'quote' ] [ ESCAPE [ AS ] 'escape' ] [ FORCE QUOTE column [, ...] ];

Page 60: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

VACUUM (I)

● Funciones:– Recuperar espacio en disco (filas modificadas

o borradas)– Actualizar estadísticas– Evitar pérdidas de datos antiguos por reuso de

identificador de transacciones● Ejecutar

– desde S.O. o desde SQL– Sobre una tabla o sobre la base de datos

Page 61: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

VACUUM (y II)

● Opciones– FULL: libera y reorganiza– No FULL: solo libera– ANALYZE– FREEZE: inicializa XID (identif. transacciones)

● Estrategias● Autovacuum

Page 62: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

REINDEX

● Desde S.O. ● Desde SQL● De tablas, índices, base de datos y sistema● Cuidado con los archivos WAL

Page 63: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Fichero de Seguimiento

● Formas de seguimiento– Salida estandar– Fichero indicado al iniciar– Usar syslog del sistema

● Conveniencia de rotación de logs:– Mejor información– Mejor rendimiento

● Parámetros en postgresql.conf– Dónde y cómo– Cuándo– Qué

Page 64: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Catálogo del Sistema

● Conjunto de tablas y vistas: constituyen un diccionario con metadatos

● Catálogo compartido (todo el cluster):– Pocas tablas: pg_databases, pg_shadow,

pg_group ...● Catálogo de cada base de datos: la mayoría

de tablas y vistas. Esquemas:– pg_catalog– pg_toast

Page 65: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Monitorización (I)

● De la actividad de la base de datos– Por comandos del sistema operativo– Usando el recolector de estadísticas– Consultado pg_locks– Compilarlo con traza dinámica

● Del uso de los discos

Page 66: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Monitorización: actividad base datos (II)

● Por comandos del sistema operativo– ps– top– vmstat– iostat– free

Page 67: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Monitorización: actividad base de datos (III)

● Uso del recolector de estadísticas:– Información de:

● Acceso a las tablas e índices● Instrucciones ejecutadas● Lecturas de disco● Uso de la caché, etc.

– postgresql.conf: start_stat_collector– Tipos:

● pg_stat*: frecuencias y tipos de accesos● pg_statio*: entrada/salida física● pg_locks: bloqueos y transacciones

Page 68: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Monitorización: uso de los discos (IV)

● Controlado por postgresql: el dba no tiene control

● Fichero inicial (heap) y fichero de desborde (toast)

● Formas de contro:– Vistas del catálogo– Extensiones “contrib”:

● dbsize● oid2name

Page 69: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Afinamiento, mejora del rendimiento (I)

● Gestión del diario (WAL)– checkpoint_segments– checkpoint_timeout

● Buffers de diario (caché WAL)– wal_buffers– fsync / wal_sync_method– commit_delay

Page 70: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Afinamiento, mejora del rendimiento (II)

● Caché de base de datos– Minimizar acceso a disco– Aumentar shared_buffers (shmmax, shmmni,

shmall)– Uso de vistas pg_statio*

● Acceso a discos– Reindex, vacuum, autovacuum– Uso de tablespaces– Control de toast

Page 71: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Afinamiento, mejora del rendimiento (III)

● Optimización de consultas– Elementos:

● Analizador (análisis sintáctico y semántico)● Planificador (generación planes ejecución)● Optimizador (búsqueda plan más económico)

– Uso de índices (btree, rtree, hash, GiST) para búsquedas y ordenaciones

– Uso de EXPLAIN para ver el plan de ejecución

Page 72: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Otros aspectos

● Pseudo-columnas del sistema: oid, ctid, tableoid ...

● Secuencias para Pks● Tipos básicos especiales: point, polygon,

cidr, macaddr, etc.● Tipos compuestos● Herencia de tablas: de datos, no de

estructura.

Page 73: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Próximos pasos

● Consultar documentación de PostgreSQL● Buscar en proyectos de PostgreSQL● Curso para Desarrolladores (programación

con PostgreSQL)● Curso de optimización SQL● Cluster, alta disponibilidad, balanceo de

carga, etc.

Page 74: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

Resumen

● Objetivos● Plan del curso● Metodología y Materiales● Desarrollo del curso● Próximos pasos

Page 75: Curso de Administración de PostgreSQL - uv.es · – Seguridad – Procesamiento de instrucciones y transacciones. Plan del curso (y II) Día IV: – Configuración – Copias de

FIN

● Conclusiones● Opiniones del curso a [email protected]

Muchas graciasJosé M. Alarcón Medina