[CLI Wiki] page ajoutée : scripts:exemples:postgresql

noreply at asyd.net noreply at asyd.net
Sat Jan 27 15:04:20 CET 2007


Une page dans votre Wiki a été ajoutée ou modifiée. Voici les 
détails :

Date              : 2007/01/27 15:04
Navigateur        : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.9) Gecko/20070102 Ubuntu/dapper-security Firefox/1.5.0.9
Adresse IP        : 82.225.60.98
Nom d'hôte        : cxr69-3-82-225-60-98.fbx.proxad.net
Ancienne révision : none
Nouvelle révision : http://cli.asyd.net/home/scripts/exemples/postgresql
Résumé            : page créée, scripts collés
Utilisateur       : lois

====== Administration de PostgreSQL ======

===== Arrêt / Démarrage =====

Sur une base de ''/etc/init.d/skeleton'', peut être encore largement amélioré :

<code bash>
#!/bin/sh -e
# /etc/init.d/postgresql
# $Id
#
PGDIR="/usr/local/pgsql"
PGBIN="$PGDIR/bin"
PGDATA="/usr/local/pgsql/data"
PGLOG="/var/log/postgresql.log"
DESC="Postgresql database server"
USER="postgres"

test -x $PGDIR || exit 0


case "$1" in
    start)
        echo -n "Starting $DESC: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA start
        echo -n ""
        ;;
    stop)
        echo -n "Stopping $DESC: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA -m f stop
        echo -n ""
        ;;
    reload)
        echo -n "Reloading configuration $DESC: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA reload
        echo -n ""
        ;;
    restart|force-reload)
        echo -n "Restarting $DESC: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA -m f stop
        sleep 1
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA start
        echo -n ""
        ;;
    status)
        echo -n "$DESC current status: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA status
        echo -n ""
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
        echo -n ""
        exit 1
        ;;
esac

exit 0
</code>

===== Administration =====

À faire tourner par cron ou équivalent. Exemple avec ''/etc/crontab'' :

<code bash>
46 6 * * * root /root/adm/postgresql.sh vacuum > /dev/null
00 7 * * * root /root/adm/postgresql.sh backup > /dev/null
</code>

<code bash>
#!/bin/sh -e
# manipulations sur le serveur postgresql, via cron
# Loïs - 20061219
# $Id

PGDIR="/usr/local/pgsql"
PGBIN="$PGDIR/bin"
PGDATA="/usr/local/pgsql/data"
PGLOG="/var/log/postgresql.log"
DESC="Postgresql database server"
USER="postgres"
DATE=$(date +%Y%m%d)
BACKUPDIR="/opt/postgres-data"

test -x $PGDIR || exit 0


case "$1" in
    status)
        echo -n "$DESC current status: "
        su - $USER -- $PGBIN/pg_ctl -D $PGDATA status
        echo ""
        ;;
    vacuum)
        echo -n "$DESC vacuuming all databases: "
        su - $USER -- $PGBIN/vacuumdb --full --analyze --all
        su - $USER -- $PGBIN/reindexdb --all --quiet
        echo -n ""
        ;;
    analyze)
        echo -n "$DESC analyzing all databases: "
        su - $USER -- $PGBIN/vacuumdb --analyze --all
        echo -n ""
        ;;
    backup)
        echo "$DESC backuping: "
        mkdir -p $BACKUPDIR
        su - $USER -- $PGBIN/pg_dumpall > $BACKUPDIR/dumpall-$DATE.sql
        bzip2 $BACKUPDIR/dumpall-$DATE.sql
# TODO: trouver un rotate pour ces sauvegardes (voir logrotate peut-etre ?)
        echo ""
        ;;
    *)
        echo "Usage: $0 {status|vacuum|analyze|backup}"
        echo ""
        exit 1
        ;;
esac

exit 0
</code>


-- 
Ce message a été généré par DokuWiki
http://cli.asyd.net/home/



More information about the Shell mailing list