PostgreSQL-7.3.4

Introducción a PostgreSQL

PostgreSQL es un sistema avanzado de administración de bases de datos objeto-relacionales (ORDBMS) derivado del sistema de administración de bases de datos Postgres de Berkeley

Información sobre el paquete

Instalación de PostgreSQL

Instala PostgreSQL ejecutando los siguientes comandos:

./configure --prefix=/usr &&
make &&
make install

Inicializa un grupo de bases de datos con los siguientes comandos:

mkdir -p /var/pgsql/data &&
useradd -d /var/pgsql/data postgres &&
chown postgres /var/pgsql/data &&
su - postgres -c '/usr/bin/initdb -D /var/pgsql/data'

Arranca el servidor de bases de datos con el siguiente comando:

su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > \
        /var/pgsql/data/logfile 2>&1 &'

Ahora podemos crear una base de datos y verificar la instalación:

su - postgres -c '/usr/bin/createdb test'
echo "create table t1 ( name varchar(20), state_province varchar(20) );" \
                | (su - postgres -c '/usr/bin/psql test ')

echo "insert into t1 values ('Billy', 'NewYork');" \
                | (su - postgres -c '/usr/bin/psql test ')
echo "insert into t1 values ('Evanidus', 'Quebec');" \
	        | (su - postgres -c '/usr/bin/psql test ')
echo "insert into t1 values ('Jesse', 'Ontario');" \
                | (su - postgres -c '/usr/bin/psql test ')

echo "select * from t1;" | (su - postgres -c '/usr/bin/psql test')

Explicación de los comandos

useradd -d /var/pgsql/data postgres : Crea un usuario sin privilegios para lanzar el servidor de bases de datos. Ejecutar el servidor como root es peligroso, y por otro lado, simplemente no funcionará.

su - postgres -c '/usr/bin/initdb -D /var/pgsql/data' : Inicializa el espacio de tablas de las bases de datos. Este comando no debe ejecutarse como root.

su - postgres -c '/usr/bin/postmaster -D /var/pgsql/data > /var/pgsql/data/logfile 2>&1 &' : Inicia el servidor de bases de datos. Este comando debe ejecutarse también por el usuario postgres.

createdb test, create table t1 , insert into t1 values..., select * from t1 : Crea una base de datos, le añade una tabla, inserta varias filas en la tabla y las selecciona para comprobar que la instalación funciona correctamente.

Configuración de PostgreSQL

Ficheros de configuración

$PGDATA/pg_ident.con, $PGDATA/pg_hba.conf, $PGDATA/postgresql.conf

La variable de entorno PGDATA se usa para distinguir un grupo de bases de datos de otro al establecer su valor al directorio que contiene el grupo deseado. Los tres ficheros de configuración se encuentran en cada directorio PGDATA/. Los detalles sobre el formato de los ficheros y las opciones que pueden usarse se encuentran en file:///usr/share/doc/postgresql/html/index.html.

Crea el guión de arranque con lo siguiente:

cat > /etc/rc.d/init.d/postgresql << "EOF"
#!/bin/bash
# Inicio de $rc_base/init.d/postgresql

# Basado en el guión sysklogd de LFS-3.1 y anteriores.
# Reescrito por Gerard Beekmans  - gerard@linuxfromscratch.org

source /etc/sysconfig/rc
source $rc_functions

case "$1" in
        start)
                echo "Iniciando el demonio PostgreSQL..."
                su - postgres -c '/usr/bin/pg_ctl start -W -D /var/pgsql/data \
                               -l /var/pgsql/data/logfile -o "-i" '
                evaluate_retval
                ;;

        stop)
                echo "Parando el demonio PostgreSQL..."
                /usr/bin/pg_ctl stop -m smart -D /var/pgsql/data
                evaluate_retval
                ;;

        restart)
                $0 stop
                sleep 1
                $0 start
                ;;

        status)
                /usr/bin/pg_ctl status -D /var/pgsql/data
                ;;

        *)
                echo "Uso: $0 {start|stop|restart|status}"
                exit 1
                ;;
esac

# Fin de $rc_base/init.d/

EOF
chmod 755 /etc/rc.d/init.d/postgresql

Crea los enlaces simbólicos a este fichero en los directorios pertinentes de rc.d con los siguientes comandos:

cd /etc/rc.d/init.d &&
ln -sf ../init.d/postgresql ../rc0.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc1.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc2.d/K26postgresql &&
ln -sf ../init.d/postgresql ../rc3.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc4.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc5.d/S34postgresql &&
ln -sf ../init.d/postgresql ../rc6.d/K26postgresql

Contenido

El paquete PostgreSQL contiene clusterdb, createdb, createlang, createuser, dropdb, droplang, dropuser, ecpg, initdb, initlocation, ipcclean, pg_config, pg_controldata, pg_ctl, pg_dump, pg_dumpall, pg_encoding, pg_id, pg_resetxlog, pg_restore, postgres, postmaster, psql, vacuumdb, libecpg, libpq y varios módulos de conjuntos de caracteres (charsets).

Descripciones

clusterdb

clusterdb es una utilidad para reordenar las tablas de una base de datos PostgreSQL.

createdb

createdb crea una nueva base de datos PostgreSQL.

createlang

createlang define un nuevo lenguaje de procedimientos PostgreSQL.

createuser

createuser crea una nueva cuenta de usuario PostgreSQL.

dropdb

dropdb elimina una base de datos PostgreSQL.

droplang

droplang elimina un lenguaje de procedimientos PostgreSQL.

dropuser

dropuser elimina una cuenta de usuario PostgreSQL.

ecpg

ecpg es el preprocesador SQL incorporado.

initdb

initdb crea un nuevo grupo de bases de datos.

initlocation

initlocation crea un área secundaria de almacenamiento de bases de datos.

ipcclean

ipcclean elimina la memoria compartida y los semáforos dejados por un servidor de bases de datos abortado.

pg_config

pg_config recupera información de la versión de PostgreSQL.

pg_controldata

pg_controldata devuelve información inicializada por initdb, como la versión del catálogo y el locale del servidor.

pg_ctl

pg_ctl controla la parada e inicio del servidor de bases de datos.

pg_dump

pg_dump vuelca los datos y metadatos de una base de datos en guiones que son usados para regenerar la base de datos.

pg_dumpall

pg_dumpall invoca a pg_dump reiteradamente para cada base de datos de un grupo.

pg_resetxlog

pg_resetxlog borra el fichero de registro y opcionalmente pone a cero algunos campos del fichero pg_control.

pg_restore

pg_restore crea bases de datos a partir de los ficheros de volcado creados por pg_dump.

postgres

postgres es un servidor de bases de datos monousuario, utilizado normalmente para depuración.

postmaster

postmaster es el demonio de bases de datos multiusuario.

psql

psql es un intérprete de comandos de consola para las bases de datos.

vacuumdb

vacuumdb compacta bases de datos y genera estadísticas para el analizador de consultas.