L'objectif est de faire fonctionner une seconde instance Postgresql dans un serveur, par exemple pour disposer d'administrateurs différents. La seconde instance fonctionnera avec un port TCP différent, ici le port 5433.
Avec Debian et postgresql, l'installation est assez simple. Les outils fournis permettent de faire fonctionner les deux instances en parallèle, avec la même commande de lancement des services.
L'installation a été réalisée avec la version 9.1 de postgresql. La nouvelle instance s'appelle instance2, l'ancienne main.
Pour la base de données elle-même
cd /var/lib/postgresql/9.1/mkdir instance2chmod 700 instance2chown postgres:postgres instance2Pour les paramètres
cd /etc/postgresql/9.1mkdir instance2chown postgres:postgres instance2su postgres/usr/lib/postgresql/9.1/bin/initdb -D /var/lib/postgresql/9.1/instance2mv /var/lib/postgresql/9.1/instance2/*conf /etc/postgresql/9.1/instance2/Seuls sont indiqués les paramètres à adapter.
/etc/postgresql/9.1/instance2/postgresql.confdata_directory = '/var/lib/postgresql/9.1/instance2'hba_file = '/etc/postgresql/9.1/instance2/pg_hba.conf'ident_file = '/etc/postgresql/9.1/instance2/pg_ident.conf'external_pid_file = '/var/run/postgresql/9.1-instance2.pid'port = 5433ssl = truecd /etc/postgresql/9.1/instance2/cp ../main/pg_ctl.conf .cp ../main/start.conf .cp ../main/environment .cd /var/lib/postgresql/9.1/maincp server* ../instance2/Il peut être judicieux de créer de nouveaux certificats, ou de les remplacer par des liens vers les certificats généraux de la machine. Pour plus d'informations concernant les certificats, consultez le document Utiliser les certificats SSL avec Ubuntu 10 et Utiliser les certificats numériques avec Linux - création, configuration des services, accès SSH
Postgresql va gérer la nouvelle instance comme la principale, la même commande permet de lancer le service tant pour l'instance principale que pour la seconde.
Vous pouvez donc utiliser les commandes suivantes pour gérer l'ensemble de vos instances :
/etc/init.d/postgresql start/etc/init.d/postgresql restart/etc/init.d/postgresql reload(...)Pour éviter de démarrer l'instance automatiquement, modifiez le fichier /etc/postgresql/9.1/instance2/start.conf
À adapter à vos besoins, bien sûr !
#!/bin/bash# script de sauvegarde des bases postgrseqlCHEMIN="/var/lib/postgresql/backup/instance2"LOG=$CHEMIN"/pgbackup_instance2.log"echo `date` > $LOGecho "Sauvegarde des bases de donnees - dumpall" >>$LOG/usr/bin/pg_dumpall -p 5433 |gzip -c > $CHEMIN/pg.out.gz 2>>$LOGls -l $CHEMIN/pg.out.gz >>$LOGecho "Sauvegarde des bases de donnees individuellement" >>$LOGfor BASE in `psql -l -t -p 5433 |cut -d" " -f2`doif test ! "$BASE" = "template0" -a ! "$BASE" = "template1"thenecho $BASE>>$LOG
/usr/bin/pg_dump -p 5433 $BASE |gzip -c > $CHEMIN/$BASE.sql.gz 2>>$LOG
ls -l $CHEMIN/$BASE.sql.gz >>$LOG
fidoneecho "Fin de sauvegarde le " `date`>>$LOG30 19 * * * /var/lib/postgresql/backup/instance2/backup.sh