Comienza Contenido

Instalar una Base de Datos (Servicio)

Postgres es una base de datos avanzada que cumple con el Test ACID. Es gratuita y con licencia BSD. Es una base de datos con toda la funcionalidad necesaria para cualquier tipo de aplicación desde la más sencilla a la más compleja por eso la hemos escogido como motor de base de datos.

Objetivos

  • Conocer su Arquitectura y Funcionamiento
  • Instalación, Configuración y Mantenimiento de Postgres
  • Funciones y Trabajo de DBA

Clases

  1. Introducción e Instalación Básica
    1. Postgres SQL: ¿Qué es?, Historia, Características, Ventajas/Inconvenientes
    2. Versiones Postgres (diferentes ramas principales):
    3. Plan de Trabajo para Instalación desde Código Fuente: qué necesito, versión del software, módulos y documentación
    4. Instalación del Programa
      1. Instalación: configuración (./configure), compilación (make), instalación (make install)
      2. Creación de usuario y directorio de la base de datos. (data y configurar permisos)
      3. Jerarquía de directorios: bin, doc, include, man, share, lib y DATOS
      4. Inicializar el directorio de Datos (initdb -D el_directorio_que_escoja)
    5. Arrancar/Parar el SGBDR (postmaster y/o script pg_ctl). Poner SIEMPRE el directorio de la BD
    6. Principales Problemas:
      • ¿Existe un directorio para los datos? ¿lo he especificado?
      • ¿Hay ya un servidor funcionando?
      • ¿Tengo los permisos necesarios?
    7. Trabajo Post-Instalación: configurar PATH, Librerías
  2. Probar la instalación básica:
    • Creación de Bases de Datos (comandos createdb/dropdb). P. ej: $PG_HOME/bin/createdb test
    • Creación de Usuarios (comandos createuser/dropuser). P.ej: $PG_HOME/bin/createuser usuario
    • Usuario DBA: puede crear/borrar bases de datos y puede crear/borrar usuarios/
    • Conectarse a la BD, ejecutar algunos comandos SQL, desconectarse y borrar la BD
    • Revisar el Funcionamiento. Archivos de Log:
      • Archivo de Log (típico $PGDATA/server.log): redireccionando la salida del comando o con opciones en el script. Diferentes niveles de log.
      • Niveles de Aviso: DEBUG, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, PANIC
      • Revisar el archivo: comandos unix more, tail, head, cat, grep, etc
      • Ejemplos de líneas de log:
        NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "pa_photo_pk" for table "pa_photos"
        LOG:  received smart shutdown request
        LOG:  shutting down
        ERROR:  duplicate key violates unique constraint "cr_extlinks_pk"
        ERROR:  -20000: Inserts are not allowed into cr_text.
        FATAL:  database "ejemplo" does not exist
        		  
  3. Configuración Servidor / Postgresql Server Configuration
    1. Archivo de Configuración: postgresql.conf (en $PGDATA).
    2. Se usan parámetros (Sintaxis name = value). Por ejemplo: Parámetros para Conexión como listen_addreses , port, max_connections
    3. Control de Acceso ( Authentication)
      1. Control Basado en Host (Host-Based Access). Archivo pg_hba.conf
      2. Quién, desde dónde y a qué
      3. Tipos de conexión localhost y vía host (TCP/IP)
      4. Estructura pg_hba.conf:
        1. Tipo de Conexión: local | host | hostssl
        2. database (all | sameuser | name)
        3. user
        4. ip_addr netmask
        5. authentication_method (password, crypt, ident, trust, md5, reject )
      5. Ejemplos de Archivos de Configuración
  4. Gestión de usuarios y Bases de Datos
    1. Tipos de usuarios: DBA y usuarios (normal, desarrollador, programador, etc)
    2. Gestión de Usuarios ( y Grupos)
      1. Tablas del Sistema sobre usuarios:
        1. pg_user: Tabla con información de usuarios
        2. pg_shadow: Tabla con información sobre la clave de usuarios
      2. Gestionar Usuarios
        1. Lenguaje DCL: Data Control Language. Sentencias SQL: CREATE USER, DROP USER Y ALTER USER
        2. Utilizando comandos: createuser, dropuser
    3. Gestión de Bases de Datos
      1. Utilizar Lenguaje DCL: Data Control Language. Sentencias SQL: CREATE DATABASE, DROP DATABASE y ALTER DATABASE
      2. Utilizando comandos: createdb, dropdb
      3. Tabla del Sistema: pg_database
  5. Gestión de Permisos y Copias de Seguridad
    • Gestión de Permisos sobre Objetos
      1. Tipos de permisos (y letra simbólica): SELECT (r), INSERT (a), UPDATE (w), DELETE (d), REFERENCES (x), CREATE (C) y ALL
      2. La palabra PUBLIC especifica cualquier usuario y ALL especifica todos los permisos
      3. Se pueden otorgar (GRANT) o quitar permisos (REVOKE)
      4. Para ver los permisos de un objeto: \z tabla_ejemplo
        		  Schema |       Table        |             Access privileges             
        		  --------+--------------------+------------------------------------------------
        		  public | tabla_ejemplo      | {usuario_ejemplo=a*r*w*d*R*x*t*/usuario_ejemplo}
        		
      5. Ejemplos
        		  GRANT UPDATE ON tabla_ejemplo TO usuario_ejemplo;
        		  REVOKE ALL ON tabla_ejemplo FROM PUBLIC;
        		
      6. Tablas del Sistema: pg_class. Ejemplo: select relname, relacl from pg_class;
    • Gestión de Copias de Seguridad
      1. Utilizando comandos (El que hay que utilizar): pg_dump (para cada bd) y pg_dumpall (todas). Revisar las opciones (modelo de datos, contenido, comprimir, etc)
      2. Copiar el Sistema de Archivos (PGDATA)
    • Otras funciones del mantenimiento:
      1. Sobre la actividad de la BD (tablas del Sistema)
      2. Sobre el Rendimiento del Sistema: Procesador, Memoria y Sistemas de Archivos)
      3. Sobre la Documentación de los Modelos de Datos y Atención a los desarrolladores

Actividades

  • Instalación de Postgres (dos días):
    1. Descargar el servidor
    2. Instalar (en vuestro HOME), arrancar y parar (comando y scripts)
    3. Conocer los diferentes archivos que hay en el directorio de instalación
    4. Configuración del Servidor y Logs:
      1. Arrancar/Parar Servidor con logs (creados por mí, y a través del script "pg_ctl")
      2. Añadir configuración en postgres.conf para activar conexión TCP y detallar el archivo de log
    5. Configurar Acceso vía Host (modificando base de datos, usuarios y mecanismo de envío de la clave)
      1. Acceso desde cualquier parte
      2. Acceso desde una sola máquina
  • Gestión de Autenticación
    1. Gestión de Usuarios: Añadir, Borrar y Modificar parámetros de usuarios
    2. Gestión del Acceso vía host y usuario a las bases de datos
    3. Revisar Tablas del sistema: pg_user, pg_shadow
  • Gestión de Permisos
    1. Crear un usuario "invitado" que sólo pueda leer la tabla
    2. Crear un usuario "web" que pueda añadir, leer, actualizar y borrar datos
    3. Comprobar los permisos a través de la tabla pg_class o el comando \z
  • Administracion y Mantenimiento
    1. Repaso a la situación interna: VACUUM y vacuumdb
    2. Hacer copia de seguridad: pg_dump y pg_dumpall (¿cuando?, ¿cómo?, hot backup)
    3. Recuperar la base de datos: pg_restore. Crear la BD , los usuarios, y los características de la BD
    4. Copiar el sistema de archivos directamente

Duración del Curso

El esfuerzo estimado del curso es de 1 crédito ECTS. Unas 30 horas de dedicación.

Recursos a Utilizar