Listes des commandes sous Postgres 9.1.9

1. Avant-propos
1.1. Présentation
1.1.1 Schéma d'architecture
1.1.2 Schéma fonctionnel
1.2. Introduction
2. Listes des différentes commandes sous Postgres
2.1. Connexion à une base Postgres
2.2. Information de connexion sur une base Postgres
2.3. Liste des tables d'une base Postgres
2.4. Schéma d'une table d'une base Postgres
2.5. Déconnexion d'une base Postgres
2.6. Démarrage d'une base Postgres
2.7. Visualisation des process Postgres
3. Annexe
3.1. Exemple de script de démarrage

1. Avant-propos


1.1 - Présentation.


Mémo. des commandes Postgres.

1.1.1 - Schema d'architecture




2. Listes des différentes commandes sous Postgres


2.1 - Connexion à une base Postgres


Nous allons maintenant nous connecter à une base Postgres.
Pour se faire vous devez avoir en tête le nom de la base de donnée, le compte et le mot de passe.
Dans l'exemple ci-dessous il sagit d'une base de donnée servant à Puppet Commande a éxecuter sur le serveur Postgres.
[root] # psql -p 5433 puppet puppet
[root] # psql -p 5433 puppet puppet
Mot de passe pour l'utilisateur puppet : 
PostgreSQL Exploitation :
    :wait  -- Requ�te en attente
    :tx    -- Transaction en cours et prepar�e
    :bloat -- Table morcel�e
    :conf  -- Configuration modifi�e
PostgreSQL Schema :
    :pk    -- Table sans cl� primaire
    :fk    -- Index manquant sur cl� �trang�re
    :dup   -- Index redondant
    :seq   -- S�quence �� mettre �� jour
Usage : [user@INST]db=# :waits
psql (9.1.9)
Saisissez « help » pour l'aide.

[puppet@]puppet=> 

2.2 - Information de connexion sur une base Postgres


Commande a éxecuter sur le serveur Postgres.
Afin de voir les informations de connexion sur Postgres, lancer la commande suivante :
[puppet@]puppet=> \conninfo
[puppet@]puppet=> \conninfo
Vous êtes connecté à la base de données « puppet » en tant qu'utilisateur « puppet » via le socket dans « /tmp » via le port « 5433 ».
[puppet@]puppet=> 

2.3 - Liste des tables d'une base Postgres


Commande a éxecuter sur le serveur Postgres.
Afin de connaitre la liste des tables de votre base de donnée Postgres, taper la commande suivante :
[puppet@]puppet=> \dt
[puppet@]puppet=> \dt
               Liste des relations
 Schéma |       Nom       | Type  | Propriétaire 
--------+-----------------+-------+--------------
 public | fact_names      | table | puppet
 public | fact_values     | table | puppet
 public | hosts           | table | puppet
 public | inventory_facts | table | puppet
 public | inventory_nodes | table | puppet
 public | param_names     | table | puppet
 public | param_values    | table | puppet
 public | puppet_tags     | table | puppet
 public | resource_tags   | table | puppet
 public | resources       | table | puppet
 public | source_files    | table | puppet
(11 lignes)

[puppet@]puppet=> 

2.4 - Schéma d'une table d'une base Postgres


Commande a éxecuter sur le serveur Postgres.
Afin de connaitre le schéma d'une table de votre base de donnée Postgres, taper la commande suivante :
Dans l'exemple suivant nous allons visualiser le schéma de la table "fact_names".
[puppet@]puppet=> \d fact_names
[puppet@]puppet-> \d fact_names
                                      Table « public.fact_names »
  Colonne   |            Type             |                        Modificateurs                        
------------+-----------------------------+-------------------------------------------------------------
 id         | integer                     | non NULL Par défaut, nextval('fact_names_id_seq'::regclass)
 name       | character varying(255)      | non NULL
 updated_at | timestamp without time zone | 
 created_at | timestamp without time zone | 
Index :
    "fact_names_pkey" PRIMARY KEY, btree (id)
    "index_fact_names_on_name" btree (name)

[puppet@]puppet-> 

2.5 - Déconnexion d'une base Postgres


Commande a éxecuter sur le serveur Postgres.
Afin de se déconnecter d'une base de donnée Postgres, taper la commande suivante :
[puppet@]puppet=> \q
[puppet@]puppet-> \q
[root] # 

2.6 - Démarrage d'une base Postgres


Commande a éxecuter sur le serveur Postgres.
[root@arecibo] # su - postgres
Puis lancer le postmaster, suivi du port et du répertoire ou se trouve la base de donnée.
[postgres@arecibo] $ /u01/pgsql/9.1/bin/postmaster -p 5433 -D /u03/pgsql/9.1/data/puppetdb

[postgres@arecibo] # su - postgres
[postgres] $ /u01/pgsql/9.1/bin/postmaster -p 5433 -D /u03/pgsql/9.1/data/puppetdb
[postgres] $

2.7 - Visualisation des process Postgres


Commande a éxecuter sur le serveur Postgres.
[root] # ps -ef | grep postgres

[root] # ps -ef | grep postgres
postgres  1845     1  0  2015 ?        00:00:55 /u01/pgsql/9.1/bin/postmaster -p 5433 -D /u03/pgsql/9.1/data/puppetdb
postgres  1846  1845  0  2015 ?        00:01:43 postgres: logger process                                             
postgres  1848  1845  0  2015 ?        00:09:25 postgres: writer process                                             
postgres  1849  1845  0  2015 ?        00:07:30 postgres: wal writer process                                         
postgres  1850  1845  0  2015 ?        00:02:03 postgres: autovacuum launcher process                                
postgres  1851  1845  0  2015 ?        00:01:34 postgres: archiver process                                           
postgres  1852  1845  0  2015 ?        00:01:45 postgres: stats collector process                                    
postgres 30493  1845  0 15:25 ?        00:00:00 postgres: puppet puppet 127.0.0.1(54163) idle                        
root     30534 29063  0 15:26 pts/1    00:00:00 grep postgres
[root] # 


3. Annexe


3.1 - Exemple de script de démarrage


Dans le répertoire /etc/init.d/ nous allons faire un script de démarrage de base de donnée, exemple : "pgsql_puppetdb".
[root] # vi /etc/init.d/pgsql_puppetdb
#!/bin/sh
#
PGVERSION=9.1.9
PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`

# Source function library.
INITD=/etc/rc.d/init.d
. $INITD/functions

# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep "declare"`

# Get network config.
. /etc/sysconfig/network

# Find the name of the script
NAME=`basename $0`
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
then
        NAME=${NAME:3}
fi

# For SELinux we need to use 'runuser' not 'su'
if [ -x /sbin/runuser ]
then
    SU=runuser
else
    SU=su
fi

# Define variable for locale parameter:
LOCALEPARAMETER=$2

# Set defaults for configuration variables
PGENGINE=/u01/pgsql/9.1/bin
PGPORT=5433
PGDATA=/u03/pgsql/9.1/data/puppetdb
PGLOG=/u02/pgsql/admin/9.1/puppetdb/traces/pg_start_puppetdb.log

# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}

export PGDATA
export PGPORT

[ -f "$PGENGINE/postmaster" ] || exit 1

script_result=0

start(){
        [ -x "$PGENGINE/postmaster" ] || exit 5

        PSQL_START=$"Starting ${NAME} service: "

        # Make sure startup-time log file is valid
        if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
        then
                touch "$PGLOG" || exit 1
                chown postgres:postgres "$PGLOG"
                chmod go-rwx "$PGLOG"
                [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
        fi

        # Check for the PGDATA structure
        if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ]
        then
                # Check version of existing PGDATA

                if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
                then
                        SYSDOCDIR="(Your System's documentation directory)"
                        if [ -d "/usr/doc/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/doc
                        fi
                        if [ -d "/usr/share/doc/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/share/doc
                        fi
                        if [ -d "/usr/doc/packages/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/doc/packages
                        fi
                        if [ -d "/usr/share/doc/packages/postgresql-$PGVERSION" ]
                        then
                                SYSDOCDIR=/usr/share/doc/packages
                        fi
                        echo
                        echo $"An old version of the database format was found."
                        echo $"You need to upgrade the data format before using PostgreSQL."
                        echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
                        exit 1
                fi
        else
                # No existing PGDATA! Warn the user to initdb it.

                echo
                echo "$PGDATA is missing. Use \"service postgresql-$PGVERSION initdb\" to initialize the cluster first."
                echo_failure
                echo
                exit 1
        fi

        echo -n "$PSQL_START"
        $SU -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
        sleep 2
        pid=`head -n 1 "$PGDATA/postmaster.pid" 2>/dev/null`
        if [ "x$pid" != x ]
        then
                success "$PSQL_START"
                echo
        else
                failure "$PSQL_START"
                echo
                script_result=1
        fi
}

stop(){
        $SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
        ret=$?
        if [ $ret -eq 0 ]
        then
                echo_success
        else
                echo_failure
                script_result=1
        fi
        echo
}

restart(){
    stop
    start
}

initdb(){
                        # If the locale name is specified just after the initdb parameter, use it:
                        if [ -z $LOCALEPARAMETER ]
                        then
                                LOCALE=`echo $LANG`
                        else
                                LOCALE=`echo $LOCALEPARAMETER`
                        fi
                                LOCALESTRING="--locale=$LOCALE"

                if [ -f "$PGDATA/PG_VERSION" ]
                then
                        echo "Data directory is not empty!"
                        echo_failure
                else
                        echo -n $"Initializing database: "
                        if [ ! -e "$PGDATA" -a ! -h "$PGDATA" ]
                        then
                                mkdir -p "$PGDATA" || exit 1
                                chown postgres:postgres "$PGDATA"
                                chmod go-rwx "$PGDATA"
                        fi
                        # Clean up SELinux tagging for PGDATA
                        [ -x /sbin/restorecon ] && /sbin/restorecon "$PGDATA"

                        # Make sure the startup-time log file is OK, too
                        if [ ! -e "$PGLOG" -a ! -h "$PGLOG" ]
                        then
                                touch "$PGLOG" || exit 1
                                chown postgres:postgres "$PGLOG"
                                chmod go-rwx "$PGLOG"
                                [ -x /sbin/restorecon ] && /sbin/restorecon "$PGLOG"
                        fi

                        # Initialize the database
                        $SU -l postgres -c "$PGENGINE/initdb --pgdata='$PGDATA' --auth='ident' $LOCALESTRING" >> "$PGLOG" 2>&1 < /dev/null

                        # Create directory for postmaster log
                        mkdir "$PGDATA/pg_log"
                        chown postgres:postgres "$PGDATA/pg_log"
                        chmod go-rwx "$PGDATA/pg_log"

                        [ -f "$PGDATA/PG_VERSION" ] && echo_success
                        [ ! -f "$PGDATA/PG_VERSION" ] && echo_failure
                        echo
                fi
}
condrestart(){
        [ -e "$lockfile" ] && restart || :
}

reload(){
    $SU -l postgres -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status -p $PGDATA/postmaster.pid
        script_result=$?
        ;;
  restart)
        restart
        ;;
  initdb)
        initdb
        ;;
  condrestart|try-restart)
        condrestart
        ;;
  reload)
        reload
        ;;
  force-reload)
        restart
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|initdb}"
        exit 2
esac

exit $script_result