Fr:Backups
From DAViCal Wiki
Contents |
Sauvegarde complete
- Les données de DAViCal sont enregistrées dans une base de données PostgreSQL. Vous devriez les sauvegarder périodiquement avec la commande PostgreSQL pg_dump:
pg_dump -Fc davical >davical.pgdump
- Pour restaurer la base de données utilisez la commande PostgreSQL pg_restore:
createdb --owner davical_dba --encoding UTF8 --template template0 davical pg_restore -Fc -d davical davical.pgdump
Note
Si vous restaurez sur un nouveau serveur vous devrez créer la table des utilisateurs (habituellement 'davical_dba' et 'davical_app'), et vous devrez probablement modifier le fichier pg_hba.cong comme lors d'une nouvelle installation.
Sauvegarde incrémentale
PostgreSQL supporte les sauvegardes incrémentale automatique.
Qu'est ce que cela signifie?
Au lieu de sauvegarder la base de donnée entière -et devoir se souvenir de le faire- PostgreSQL enregistrera les modifications dans des 'fichiers incrémentés'.
Pourquoi vous devriez faire attention?
Vous devriez toujours garder de multiple sauvegarde de n'importe quel base de données. Si par exemple, vous ne conservez qu'une seule sauvegarde et qu'accidentellement vous effacer un évènement et écrasez votre sauvegarde, vous ne pourrez jamais restaurer ce dernier.
L'inconvénient de conserver plusieurs sauvegarde et l'utilisation rapide d'espace disque. Donc au lieux d'avoir plusieurs sauvegardes complète, il est plus judicieux de conserver une sauvegarde complète et d'enregistrer ke s changements au fur et a mesure depuis cette dernière.
Bénéfices des sauvegardes incrémentales:
- restauration a un moment précis
- sauvegardes automatiques
- taille des sauvegardes optimisée
Il est important de noter que les sauvegardes incrémentale s'effectue sur l'ensemble des bases de données et non pas seulement les tables de DAViCal.
Comment configurer les sauvegardes incrémentales
Une page du manuel PostreSQL en parle ici (en)archivage continu, qui fournis un guide complet sur la mise en place d'une telle fonction et devrait être lu pour comprendre ce qui se passe.
Ici un guide basique pour la mise en place des sauvegardes en continu:
Créer un répertoire de sauvegarde et définir des autorisations
mkdir /var/backups/postgres/ chown postgres:postgres /var/backups/postgres/ chmod 750 /var/backups/postgres/
Créer un script de sauvegarde
Voici un exemple que j'enregistre dans /usr/local/bin/postgres-backup.
#!/bin/bash
BACKUP_DIR="/var/backups/postgres"
POSTGRES_MANUAL="http://www.postgresql.org/docs/8.3/static/continuous-archiving.html"
NOTIFY_EMAIL="root"
NOTIFY_SUBJECT="Postgres backup fail - $0"
# Vérifiez si le nombre correct d'arguments a été donné
if test ${BASH_ARGC} -ne 2;
then
echo "The incorrect number of arguments were supplied"
exit 1;
fi
# Arguments copier dans des noms de variables convivial
SRC_FILE=${1}
DST_FILENAME=${2}
# Test si le répertoire de sauvegarde existe
if test ! -d ${BACKUP_DIR};
then
echo "The usual postgres incremental backup has failed, the ${BACKUP_DIR} directory does not exist. Look at ${POSTGRES_MANUAL}" | mail -s "${NOTIFY_SUBJECT}" ${NOTIFY_EMAIL};
exit 1;
fi;
# Test si le fichier source est disponible
if test ! -f ${SRC_FILE};
then
echo "The usual postgres incremental backup has failed, the source file (${SRC_FILE}) does not exist. Look at ${POSTGRES_MANUAL}" | mail -s "${NOTIFY_SUBJECT}" ${NOTIFY_EMAIL};
exit 1;
fi;
# Test if backup increment already exists
if test ! -f ${BACKUP_DIR}/${DST_FILENAME}.gz;
then
# Make a compressed copy of the increment to the backup directory
gzip -c ${SRC_FILE} > ${BACKUP_DIR}/${DST_FILENAME}.gz &&
# If you have included the postgres user in the backup group, uncomment the line below
# Make the copy readable by the backup group
# chgrp backup /var/backups/postgres/${DST_FILENAME}.gz &&
# Make the copy readable by the owner and group only
chmod 440 ${BACKUP_DIR}/${DST_FILENAME}.gz;
else
echo "The usual postgres incremental backup has failed, there is a filename conflict (${DST_FILENAME}). Look at ${POSTGRES_MANUAL}" | mail -s "${NOTIFY_SUBJECT}" ${NOTIFY_EMAIL};
exit 1;
fi
Rendre le script exécutable
chown postgres:postgres /usr/local/bin/postgres-backup chmod 550 /usr/local/bin/postgres-backup
Modifier PostgreSQL pour faire de l'archivage
Vous de vez modifier votre fichier postgresql.conf, qui dans Debian est enregistré dans /etc/postgresql/8.3/main/
Ces options ont besoins d'être modifié.
archive_mode = on # Active l'archiavge archive_command = '/usr/local/bin/postgres-backup %p %f' # Quelle commande à lancer archive_timeout = 86400 # Forcer une sauvegarde tout les 7 jours
Relancer PostgreSQL
/etc/init.d/postgresql-8.3 reload
Démarrer une sauvegarde complète de l'ensemble des bases de données
sudo -u postgres psql
postgres=# SELECT pg_start_backup('/var/backups/postgres/');
postgres=# \q
Archiver la sauvegarde complète
tar czvf /var/backups/postgres/fullbackup-$(date +%Y%m%d).tar.gz /var/lib/postgresql/8.3/main/base/
Arrêter la sauvegarde complète des BDD
sudo -u postgres psql postgres=# SELECT pg_stop_backup(); postgres=# \q
C'est fait!
Comment restaurer une sauvegarde incrémentale
La page du manuel PostreSQL ici (en)archivage continu, explique aussi comment effectuer une restauration.
| | Cet article ou cette section nécessitent d'être 'relu'. Si vous connaissez bien le français, n'hésitez pas! Merci pour DAViCal. |

