Instalacion de Posgresql Manual

Embed Size (px)

Citation preview

  • 7/24/2019 Instalacion de Posgresql Manual

    1/17

    REPBLICA BOLIVARIANA DE VENEZUELA

    MINISTERIO DEL PODER POPULAR PARA LA DEFENSA

    UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA

    FUERZA ARMADA NACIONAL

    NCLEO LARA

    Autores:Br.Douglas GodoyBr.Enrique TorrealbaBr.Ramn SalasBr.Orlando CorroSeccin:14N1- IS.

    Diciembre, 2010

  • 7/24/2019 Instalacion de Posgresql Manual

    2/17

    Instalacin de Postgresql

    Paso 1

    La primera pantalla que se nos muestra es la bienvenida al instalador de

    Postgresql. A partir de ahora tendremos que pulsar "Next" cada vez que queramos

    avanzar al siguiente paso.

    Paso 2

    En el siguiente paso tendremos que definir el directorio donde vamos a instalar

    todos los programas que vienen con esta versin de PostgreSQL. En nuestro caso,

    utilizaremos el valor por defecto que el programa nos sugiere. C:\Archivos de

    programa\PostgreSQL\9.0

  • 7/24/2019 Instalacion de Posgresql Manual

    3/17

    Paso 3

    En este paso tenemos que definir el directorio de datos en donde se crearn

    nuestras bases de datos. De nuevo, en nuestro caso utilizaremos el valor por defecto que

    el programa nos sugiere. C:\Archivos de programa\PostgreSQL\9.0\data

    Paso 4

    En este paso tenemos que definir una clave de acceso para el usuario

    administrador de nuestra base de datos Postgresql. No olvidar esta clave, para no tener

    problemas ms adelante.

    Ms adelante podremos cambiar, si queremos, la clave del usuario administrador

    (postgres) de la base de datos. Esta clave es totalmente independiente de la clave de la

    cuenta de servicio 'postgres' en el sistema operativo.

  • 7/24/2019 Instalacion de Posgresql Manual

    4/17

    Paso 5

    En este paso tendremos que especificar el puerto que Postgresql utilizar para

    escuchar por conexiones. En nuestro caso dejamos el valor por defecto, 5432.

    Paso 6

    En este paso se selecciona la configuracin regional por el clster, en nuestro caso

    seleccionamos el espaol.

    Luego de esto el programa esta listo para ser instalado presionando siguiente

    Una vez terminada la instalacin, podremos salir del instalador pulsando

    "Finish". En este ltimo paso el instalador nos da la opcin de arrancar automticamente

    un programa llamado "Stack Builder". Este programa puede ser usado para instalar

    diversos programas adicionales, tanto programas libres como algunos distribuidos por

    EnterpriseDB.

  • 7/24/2019 Instalacion de Posgresql Manual

    5/17

    Revisin de la configuracin.

    Los tipos de configuracin

    Existen diferentes tipos de variables de configuracin, divididas en base a los

    posibles valores de entrada

    Boolean true, false, on, off

    Integer Nmeros (2112)

    Float Valores decimales (21.12)

    Memory / Disk Enteros (2112) o "Unidades computacionales" (512MB,

    2112GB). Evite usar nmeros enteros sin unidad; necesitar saber la unidad

    subyacente para entender lo que significa.

    Time "Unidades de tiempo" aka d,m,s (30s). A veces se omite la unidad; no

    haga esto.

    Strings Texto simple con comilla simple('pg_log')

    ENUMs Cadenas de caracteres, pero de una lista especfica ('WARNING',

    'ERROR')

    Lists Una lista de cadenas separada por comas ('"$user",public,tsearch2)

  • 7/24/2019 Instalacion de Posgresql Manual

    6/17

    Parmetros de manejo de memoria.

    SHARED_BUFFERS

    El nmero de shared_bufferses el parmetro que ms afecta al rendimiento de

    PostgreSQL. Este valor, de tipo entero, indica el nmero de bloques de memoria o

    buffers de 8KB (8192 bytes) que postgres reservar, como zona de trabajo, en el

    momento del arranque para procesar las consultas. De forma predeterminada (en

    postgresql.conf), su valor es de 1000. Un nmero claramente insuficiente para conseguir

    un rendimiento mnimamente aceptable.

    Estos buffers se ubican dentro de los denominados segmentos de memoria

    compartida. Es importante saber que el espacio ocupado por el nmero de buffers que

    pretendamos asignar, nunca podr exceder al tamao mximo que tengan los segmentos

    de memoria. En caso contrario, postgres se negar a arrancar avisando con un error que

    no puede reservar el espacio solicitado.

    El proceso consiste en los siguientes pasos:

    1. Considerar un nmero superior al actual de shared buffers (comenzaremos por

    un 10% del total de la memoria)

    2. Modificar el tamao del segmento si no cabe el nmero de buffers

    3. Comprobar el rendimiento y paginacin

    4. En funcin del resultado obtenido, aumentar o disminuir el porcentaje de

    memoria y empezar de nuevo

    Una buena recomendacin (lee el artculo de B. Momjian) es la de empezar

    asignando un 10% del total de la memoria RAM parashared_buffersy a partir de ah, iraumentando o disminuyendo dicho porcentaje en funcin del rendimiento y la

    paginacin.

    Para comprobar el rendimiento, aplica EXPLAIN a tus consultas. Para ver la

    paginacin del servidor, puedes usar herramientas como vmstat o ipcs (consulta sus

    pginas man).

  • 7/24/2019 Instalacion de Posgresql Manual

    7/17

    Comenzamos:

    El 10% de 1 GB: (1048576 KB/10) = 104857 KB

    shared_buffers: (104857 KB/8 KB) = 13107

    Asignamos este valor a la variable shared_buffers (postgresql.conf) y

    reiniciamos el servidor. De ser el valor del parmetro superior o inferior este genera un

    mensaje donde se indica que una peticin de PostgreSQL para obtener un segmento de

    memoria compartida excedi el parmetro SHMMAX del kernel.

    WORK_MEM

    Este parmetro configura el espacio de memoria que postgres utiliza para realizar

    ordenaciones de tablas o de resultados parciales de consultas, sobre todo en clusulas ORDER

    BY, CREATE INDEX o MERGE JOIN.

    Este valor es ms dificil de configurar porque depende, por un lado, de lo grande que

    sean las tablas o resultados que hay que ordenar, y por otro, del nmero de peticiones

    simultneas para esa misma consulta (para cada una se emplear la misma cantidad de

    memoria).

    Una buen comienzo es asignar entre un 2% y un 4% del total de la memoria si prevemos

    pocos accesos simultneos a grandes sesiones de ordenacin y mucho menor, si esperamos

    muchos accesos simultneos a sesiones de ordenacin pequeas. Como antes, lo mejor es ir

    probando distintos valores y ver en qu pueden afectar a la paginacin adversa (swap pagein).

    El valor hay que expresarlo en KB.

    En nuestro ejemplo, hemos optado por usar un 4% de la memoria:

    El 4% de 1 GB: 41943 KB (1048576 KB*4)/100work_men = 41943

    Effective_cache_size

    Este debe ser establecido en un monto estimado de cuanta memoria est disponible para

    memorai intermedia en el disco para el sistema operativo, luego de entrar a una cuenta usada

    por el Sistema operativo , dedicado a la memoria de postgresql y otras aplicaciones. Esta es una

    gua para como se espera que est disponible la memoria en el bfer de cach de sistema

  • 7/24/2019 Instalacion de Posgresql Manual

    8/17

    operativo, no una asignacin! Este valor es solo utilizado por el planeador de consultas para

    tener en cuenta los planes que puedan o no caber en memoria. si es establecido demasiado bajo,

    los indices no se utilizaran del modo que ud. esperara.

    Estableciendo effective_cache_size a la mitad del total de la memoria, debera ser laopcin ms conservadora y 3/4 para una opcin ms agresiva pero que sigue siendo razonable.

    Sera conveniente que elija este valor de acuerdo a las estadsitcas del sistema operativo. En

    sistemas Unix/linux, sume free + cached arrojados por los comandos freeo toppara tener una

    estimacin. En Windows vea el tamao del "System Cache" de la pestaa del Administrador de

    Tareas. Cambiar este valor no requiere reiniciar el servidor (un HUP sera suficiente o un

    RELOAD).

    checkpoint_segments(entero)

    Nmero mximo de segmentos de archivo de registro entre checkpoints automticos

    (cada segmento es normalmente de 16 megabytes). El valor por defecto es de tres segmentos. El

    aumento de este parmetro puede aumentar la cantidad de tiempo necesario para la recuperacin

    de una cada. Este parmetro slo se puede establecer en el archivo postgresql.conf o en la lnea

    de comandos del servidor.

    checkpoint_timeout(entero)

    Tiempo mximo entre checkpoints automticos, en cuestin de segundos. El valor

    predeterminado es de cinco minutos (5 minutos). El aumento de este parmetro puede aumentar

    la cantidad de tiempo necesario para la recuperacin de una cada. Este parmetro slo se puede

    establecer en el archivo postgresql.conf o en la lnea de comandos del servidor.

    checkpoint_completion_target (coma flotante)

    Especifica el objetivo de completar puesto de control, como una fraccin del tiempo

    total entre los puntos de control. El valor por defecto es de 0,5. Este parmetro slo se puede

    establecer en el archivo postgresql.conf o en la lnea de comandos del servidor.

    checkpoint_warning (entero)

    Escribir un mensaje en el registro de servidor si los puestos de control causado por el

    llenado de los archivos del segmento puesto de control de suceder ms juntos que esta cantidad

    de segundos (lo que sugiere que checkpoint_segments debe ser levantada). El valor por defecto

  • 7/24/2019 Instalacion de Posgresql Manual

    9/17

    es de 30 segundos (30 aos). Cero deshabilita la advertencia. Este parmetro slo se puede

    establecer en el archivo postgresql.conf o en la lnea de comandos del servidor.

    Estos pueden ser un recurso intensivo, y en un sistema moderno hacer uno cada 48 MB

    puede ocacionar cuellos de botella. Estableciendo este valor un poco ms alto mejorara esteinconveniente. Si esta corriendo en una configuracin pequea, debera establecer esta al menos

    en 10, permitiendo alcanzar los objetivos.

    Para sistemas de escritura masiva, valores desde 32 (punto de chequeo cada 512MB) a

    256 (cada 128GB) son vias populares. Sistemas muy grandes utilizan muchsimo ms disco lo

    que la recuperacin llevara ms tiempo, por lo que debera elegir en que rango se encuentra

    comfortable. Normalmente los valores altos (>64/1GB) son utilizadas para cargas de gran

    aumento de volumen.

    vacuum_mem(integer)

    Especifica la cantidad mxima de la memoria para ser usada por el vacuum. El valor seda en Kb y por default se establece a 8192 kb.

    Conexiones simultaneas,

    pg_hba.conf

    Este fichero se utiliza para definir como, donde y desde que sitio un usuario puede

    utilizar nuestro cluster PostgreSQL. Todas las lineas que empiezen con el caracter # se

    interpretan como comentarios. El resto debe de tener el siguiente formato:

    [Tipo de conexion][database][usuario][IP][Netmask][Tipo de autentificacion][opciones]

    Dependiendo del tipo de conexion y del tipo de autentificacion, [IP],[Netmask] y

    [opciones] pueden ser opcionales. Vamos a explicar un poco como definir las reglas de acceso.

    El tipo de conexion puede tener los siguientes valores, local, host, hostssl y hostnossl. El tipo de

    metodo puede tener los siguientes valores, trust, reject, md5, crypt, password, krb5, ident, pam o

    ldap

    Una serie de ejemplos nos ayudaran a comprender mejor como podemos configurar

    diferentes accesos al cluster PostgreSQL.

  • 7/24/2019 Instalacion de Posgresql Manual

    10/17

    Ejemplo 1 .- Acceso por tcp/ip (red) a la base de datos test001, como usuario test desde el

    ordenador con IP 10.0.0.100, y metodo de autentificacion md5:

    host test001 test 10.0.0.100 255.255.255.255 md5

    Esta misma entrada se podria escribir tambien con la mascara de red en notacion CIDR:

    host test001 test 10.0.0.100/32 md5

    Ejemplo 2 .- Acceso por tcp/ip (red) a la base de datos test001, como usuario test desde todos

    los ordenadores de la red 10.0.0.0, con mascara de red 255.255.255.0 (254 ordenadores en total)

    y metodo de autentificacion md5:

    host test001 test 10.0.0.0 255.255.255.0 md5

    Esta misma entrada se podria escribir tambien con la mascara de red en notacion CIDR:

    host test001 test 10.0.0.0/24 md5

    Ejemplo 3 .- Acceso por tcp/ip (red), encriptado, a todas las bases de datos de nuestro cluster,

    como usuario test desde el ordenador con IP 10.0.0.100, y el ordenador 10.1.1.100 y metodo de

    autentificacion md5 (necesitamos dos entradas en nuestro fichero pg_hba.conf:

    hostssl all test 10.0.0.100 255.255.255.255 md5

    hostssl all test 10.1.1.100 255.255.255.255 md5

    Ejemplo 4.- Denegar el acceso a todos las bases de datos de nuestro cluster al usuario test, desde

    todos los ordenadores de la red 10.0.0.0/24 y dar accesso al resto del mundo con el metodo

    md5:

    host all test 10.0.0.0/24 reject

    host all all 0.0.0.0/0 md5

    Asi podriamos seguir jugando con todas las posibilidades que nos brinda este fichero de

    configuracion. Por supuesto que las bases de datos y usuarios usados en este fichero tienen que

    existir en nuestro cluster para que todo funcione y algunos de los parametros solo se pueden

    usar si hemos compilado con las opciones pertinentes en el proceso de instalacion (por ejemplo,

    hostssl, pam, krb5)

  • 7/24/2019 Instalacion de Posgresql Manual

    11/17

    Para poder en produccion los cambios en este fichero tendremos que decirle a

    PostgreSQL que vuelva a leerlo. Basta con un simple 'reload' (/usr/local/bin/pg_ctl -D

    /var/pgsql/data reload) desde la linea de comandos o con la funcion pg_reload_conf() como

    usuario postgres desde psql, el cliente PostgreSQL.

    [postgres@servidor]# /usr/local/bin/psql

    Welcome to psql 8.2.4, the PostgreSQL interactive terminal.

    Type: \copyright for distribution terms

    \h for help with SQL commands

    \? for help with psql commands

    \g or terminate with semicolon to execute query

    \q to quit postgres=# SELECT pg_reload_conf();

    pg_reload_conf

    t

    (1 row)

    postgres=#

    Para una documentacion detallada sobre el fichero pg_hba.con, pasaros por la seccion Chapter

    20. Client Authentication de la documentacion oficial de PostgreSQL.

    Ejemplo:

    A continuacion vamos a ver los parametros mas importantes que deberiamos cambiar si

    empezamos a usar PostgreSQL para un uso serio y si queremos sacarle el maximo partido a

    nuestra maquina. Existen muchos mas parametros que se pueden y con el tiempo se deberan de

    ajustar, aqui nos vamos a centrar en los mas importantes y los cuales deberiamos cambiar antes

    de empezar a utilizar PostgreSQL de una manera seria.

    max_connections: Numero maximo de clientes conectados a la vez a nuestras bases de datos.

    Deberiamos de incrementar este valor en proporcion al numero de clientes concurrentes en

    nuestro cluster PostgreSQL. Un buen valor para empezar es el 100:

    max_connections = 100

  • 7/24/2019 Instalacion de Posgresql Manual

    12/17

    shared_buffers: Este parametro es importantisimo y define el tamao del buffer de memoria

    utilizado por PostgreSQL. No por aumentar este valor mucho tendremos mejor respuesta. En un

    servidor dedicado podemos empezar con un 25% del total de nuestra memoria. Nunca mas de

    1/3 (33%) del total. Por ejemplo, en un servidor con 4Gbytes de memoria, podemos usar

    1024MB como valor inicial.

    shared_buffers = 1024MB

    work_mem:Usada en operaciones que contengan ORDER BY, DISTINCT, joins, .... En un

    servidor dedicado podemos usar un 2-4% del total de nuestra memoria si tenemos solamente

    unas pocas sesiones (clientes) grandes. Como valor inicial podemos usar 8 Mbytes.

    work_mem= 8MB

    maintenance_work_mem: Usada en operaciones del tipo VACUUM, ANALYZE, CREATE

    INDEX, ALTER TABLE, ADD FOREIGN KEY. Su valor dependera mucho del tamao de

    nuestras bases de datos. Por ejemplo, en un servidor con 4Gbytes de memoria, podemos usar

    256MB como valor inicial.

    maintenance_work_mem = 256MB

    effective_cache_size: Parametro usado por el 'query planner' de nuestro motor de bases de datospara optimizar la lectura de datos. En un servidor dedicado podemos empezar con un 50% del

    total de nuestra memoria. Como maximo unos 2/3 (66%) del total. Por ejemplo, en un servidor

    con 4Gbytes de memoria, podemos usar 2048MB como valor inicial.

    effective_cache_size= 2048MB

    checkpoint_segments: Este parametro es muy importante en bases de datos con numerosas

    operaciones de escritura (insert,update,delete). Para empezar podemos empezar con un valor de

    64. En grandes databases con muchos Gbytes de datos escritos podemos aumentar este valor

    hasta 128-256.

    checkpoint_segments= 64

    Es muy importante tener en cuenta que al aumentar los valores por defecto de muchos de estos

    parametros, tendremos que aumentar los valores por defecto de algunos parametros del kernel

    de nuestro sistema.

  • 7/24/2019 Instalacion de Posgresql Manual

    13/17

    Inicio, reinicio y parada del servidor de Base de Datos

    La puesta en marcha del servidor se puede hacer de forma manual con dos comandos:

    pg_ctl: facilidad para la puesta en marcha, parada y reconfiguracin del servidor. Hace uso dela instruccin que acta sobre el servidor postgres.

    postmaster:proceso servidor de base de datos.

    El comando pg_ctl es el que se usa normalmente, porque permite controlar ms aspectos que el

    comando postmaster.

    Operaciones:

    start: puesta en marcha del servidor. stop: parada del servidor.

    restart: parada del servidor seguida de puesta en marcha.

    reload: envia al postmaster una senal SIGHUP, que provoca que recargue toda la informacion

    de configuracion. Algunas opciones de configuracion requieren parar el servidor.

    status: comprueba si hay un postmaster en marcha y muestra el PID y su opciones de puesta en

    marcha.

    kill, register, unregister: opciones para la version de Windows para matar, registrar como

    servicio o eliminar el servicio.

    CREATE DATABASE crea una nueva base de datos PostgreSQL. El creador pasa a ser el

    propietario de la nueva base de datos.

    Puede especificarse una localizacin alternativa para, por ejemplo, almacenar la base de

    datos en un disco diferente. La ruta debe haber sido preparada con la orden initlocation.

    Si la ruta contiene una barra, la parte delantera se interpreta como una variable de

    entorno, que debe ser conocida por el proceso servidor. De esta forma el administrador de la

    base de datos puede ejercer control sobre las localizaciones que pueden ser creadas. (Una

    eleccin de usuario puede ser, por ejemplo, 'PGDATA2'.) Si el servidor est compilado con

    ALLOW_ABSOLUTE_DBPATHS (cosa que no se hace por defecto), se permiten tambin los

    nombres de ruta absolutos, identificados por una barra al principio (p. ej. '/usr/local/pgsql/data').

    CREATE DATABASE name[ WITH LOCATION = 'dbpath' ]

  • 7/24/2019 Instalacion de Posgresql Manual

    14/17

    Eliminacin de Base de Datos

    DROP DATABASEelimina las entradas de catlogo de una base de datos existente y borra el

    directorio que contiene los datos. Solamente puede ser ejecutado por el propietario de la base de

    datos (normalmente quien la cre).

    DROP DATABASE name

    Creacin de Tablas,

    CREATE [ TEMPORARY | TEMP ] TABLE table(columntype[ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value][column_constraint_clause| PRIMARY KEY } [ ... ] ][, ... ][, PRIMARY KEY ( column[, ...] ) ][, CHECK ( condition) ][, table_constraint_clause]) [ INHERITS ( inherited_table[, ...] ) ]

    Modificacin de Tablas

    MODIFICAR TABLA tabla[ * ]AADIR [ COLUMNA ] columnatipo

    MODIFICAR TABLA tabla[ * ]MODIFICAR [ COLUMNA ] columna{ SET DEFAULT valor| DROP DEFAULT }

    MODIFICAR TABLA tabla[ * ]RENOMBRAR [ COLUMNA ] columnaA nueva columna

    MODIFICAR TABLA tabla

    RENOMBRAR A nueva tabla

    Eliminacin de Tablas

    DROP TABLEelimina tablas y vistas de una base de datos. Solo su propietario (owner) puededestruir una tabla o vista. Una tabla puede ser vaciada de sus filas, pero no destruida, usandoDELETE.

    Si una tabla a ser destruida tiene un ndice secundario, este debe ser removido primero. Laremocin de solo un ndice secundario no afecta el contenido de la tabla subyacente.

    DROP TABLE nombre[, ...]

    Creacin de Usuario

    CREAR USUARIO nombre de usuario[ CON[ SYSID uid][ PASSWORD 'palabra clave' ] ]

    [ CREARDB | NOCREARDB ] [ CREARUSUARIO | NOCREARUSUARIO ][ EN EL GRUPO nombre de grupo[, ...] ]

    [ VALIDO HASTA 'abstime' ]

  • 7/24/2019 Instalacion de Posgresql Manual

    15/17

    Modificacin de usuario

    MODIFICAR USUARIO nombre de usuario[ WITH PASSWORD 'palabra clave' ][ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ][ VALID UNTIL 'abstime' ]

    Eliminacin de usuarios

    DROP USER

    Retira de la base de datos el usuario dado. No retira tablas, vistas u otros objetos que

    pertenezcan al usuario. Si el usuario es dueo de una base de datos, se producir un error.

    Use CREAR USUARIOpara adicionar nuevos usuarios, yMODIFICAR USUARIOpara

    modificar las propiedades de un usuario. PostgreSQL viene con un guin dropuserque tiene la

    misma funcin de este comando (de hecho, invoca este comando) pero que puede ser ejecutado

    desde la shell.

    DROP USER nombre

    Privilegios

    Cuando se crea un objeto en la base de datos, se le asigna un dueo. El dueo es el

    usuario que ejecut la declaracin de la creacin. Para cambiar al dueo de una tabla, ndice,

    secuencia, vista, se utiliza el comando ALTER TABLE. Por default, solo el dueo (o

    superusuario) puede hacer cualquier cosa con el objeto. Para permitir que otros usuarios lo

    utilicen, los privilegios deben ser concedidos (grant).

    Hay varios privilegios : SELECT, INSERT, UPDATE, DELETE, RULE,

    REFERENCES, TRIGGER, CREATE, TEMPORARY, EXECUTE, USAGE, y ALL

    PRIVILEGES. El hecho de modificar o destruir un objeto es siempre el privilegio del dueo

    solamente, para ello se utiliza el comando GRANT.

  • 7/24/2019 Instalacion de Posgresql Manual

    16/17

    GRANTotorga privilegios de acceso a un usuario, un grupo o a todos los usuarios.

    GRANTprivilege[, ...] ON object[, ...]

    TO { PUBLIC | GROUPgroup| username}

    Entradas

    privilege

    Los posibles privilegios son:

    SELECTAcceso a todas las columnas de una tabla/vista especfica.

    INSERTInserta datos en todas las columnas de una tabla especfica.

    UPDATEActualiza todas las columnas de una tabal especfica.

    DELETEElimina filas de una tabla especfica.

    RULEDefine las reglas de la tabla(vista (cer sentencia CREATE RULE).

    ALLOtorga todos los privilegios-

    object

    El nombre de un objeto al que se quiere conceder el acceso. Los posibles objetos son:

    tabla vista secuencia indice

    PUBLIC

    Una abreviacin para representar a todos los usuarios.

    GROUP group

    Ungrupoal que se otorgan privilegios. En la actual versin, el grupo debe haber sidocreado explcitamente como se menciona ms adelante.

    username

    El nombre de un usuario al que se quiere conceder privilegios. PUBLIC es unaabreviatura para representar a todos los usuarios.

  • 7/24/2019 Instalacion de Posgresql Manual

    17/17