Difference between revisions of "Fr:Backups"

From Davical
Jump to navigationJump to search
m (New page: == Sauvzgarde complete == == Full backup == *Les donnees de DAViCal sont enregistrees dans une base de donees PostgreSQL. Vous devriez les sauvegarder periodiquement avec la commande Postg...)
 
m
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Sauvzgarde complete ==
+
{{Languages|Backups}}
== Full backup ==
+
== Sauvegarde complete ==
*Les donnees de DAViCal sont enregistrees dans une base de donees PostgreSQL. Vous devriez les sauvegarder periodiquement avec la commande PostgreSQL pg_dump:
+
*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:
*The DAViCal data is stored in the PostgreSQL database. You should back this up periodically using the PostgreSQL pg_dump command:
 
 
  pg_dump -Fc davical >davical.pgdump
 
  pg_dump -Fc davical >davical.pgdump
  
*Pour restaurer la base de donnees utilisez la commande PostgreSQL pg_restore:
+
*Pour restaurer la base de données utilisez la commande PostgreSQL pg_restore:
*To restore the database use the PostgreSQL command pg_restore:  
 
 
  createdb --owner davical_dba --encoding UTF8 --template template0 davical
 
  createdb --owner davical_dba --encoding UTF8 --template template0 davical
 
  pg_restore -Fc -d davical davical.pgdump
 
  pg_restore -Fc -d davical davical.pgdump
  
 
==== Note ====
 
==== Note ====
Si vous restaurer sur un nouveau serveur vous devrez creez la table des utilisateurs (habituellement 'davical_dba' et 'davical_app'), et vous devrez probablement ''alter'' le fichier pg_hba.cong comme lors d'une nouvelle installation.
+
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.
If you are restoring on a new server you will need to create the database users (usually 'davical_dba' and 'davical_app'), and you will probably also need to alter the pg_hba.conf as for a new installation.
 
  
== Sauvegarde incrementale ==
+
== Sauvegarde incrémentale ==
== Incremental backup ==
+
PostgreSQL supporte les sauvegardes incrémentale automatique.
PostgreSQL supporte les sauvegardes incrementale automatique.<br/>
 
  
"Qu'est ce que cela signifie?"<br/>
+
''Qu'est ce que cela signifie?''<br/>
PostgreSQL supports automatic incremental backups.<br/>
 
  
''What does this mean?''<br/>
+
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'.
Au lieu de sauvegarder la base de donnee entiere -et devoir se souvenir de ke faire- PostgreSQL enregistrera les modifications dans des 'fichiers incrementes'.
 
Instead of backing up the entire database - and having to remember to do it - PostgreSQL will store the changes in 'increment files'.
 
  
''Why should you care?''<br/>
+
''Pourquoi vous devriez faire attention?''<br/>
vous devriez toujours garder de multiple sauvegarde de n'importe quel base de donnees. Si par exemple, vous ne conservez qu'une seule sauvegarde et qu'accidentellement vous effacer un evenement et ecrasez votre sauvegarde, vous ne pourrez jamais restaurer ce dernier.
 
You should always keep multiple backups of any database you have.
 
If, for example, you only have one backup and you accidentally delete an event and overwrite your previous backup, you cannot recover that event.
 
  
L'inconvenient de conserver plusieurs sauvegarde et l'utilisation rapide d'espace disque. Donc au lieux d'avoir plusieurs sauvegardes complete, il est plus judicieux de conserver une sauvegardr complete et d'enregistrer ke s changements au fur et a mesure depuis cette derniere.
+
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.
The trouble with keeping multiple backups is that you use a lot of disk space very quickly. So instead of having multiple complete backups, it makes sense to have a complete backup and store incremental changes from that complete backup.
 
  
Benfuces des sauvegatdes incrementales:
+
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.
*restauration a un moment precis
 
*sauvegardes autolatiques
 
*taille des sauvegardes optimisee
 
Having incremental backups has the following benefits:
 
* Point-in-time restorations
 
* Automatic backups
 
* Space efficient backups
 
  
Il est important de noter que kes sauvegardes incrementale d'effectue sur k'ensemble des bases de donnees et pas seulement les tables de DAViCal.
+
Bénéfices des sauvegardes incrémentales:
It is important to note that incremental backups backup the entire database cluster, not just the DAViCal database.
+
*restauration a un moment précis
 +
*sauvegardes automatiques
 +
*taille des sauvegardes optimisée
  
=== How to set up incremental backups ===
+
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.
The PostgreSQL manual has a page on [http://www.postgresql.org/docs/8.3/static/continuous-archiving.html continuous archiving], which gives you a complete guide on how to do incremental backups and should be read to understand what is going on.
 
  
Here is a basic guide to setting up incremental backups:
+
=== Comment configurer les sauvegardes incrémentales ===
 +
Une page du manuel PostreSQL en parle ici '''''(en)'''''[http://www.postgresql.org/docs/8.3/static/continuous-archiving.html 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.
  
'''Create a backup directory and set permissions'''
+
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/
 
  mkdir /var/backups/postgres/
 
  chown postgres:postgres /var/backups/postgres/
 
  chown postgres:postgres /var/backups/postgres/
 
  chmod 750 /var/backups/postgres/
 
  chmod 750 /var/backups/postgres/
  
'''Create a backup script'''<br/>
+
'''Créer un script de sauvegarde'''<br/>
Here is an example I store in /usr/local/bin/postgres-backup.
+
Voici un exemple que j'enregistre dans /usr/local/bin/postgres-backup.
 
<pre>#!/bin/bash
 
<pre>#!/bin/bash
  
Line 64: Line 50:
 
NOTIFY_SUBJECT="Postgres backup fail - $0"
 
NOTIFY_SUBJECT="Postgres backup fail - $0"
  
# Check if the correct number of arguments have been given
+
# Vérifiez si le nombre correct d'arguments a été donné
 
if test ${BASH_ARGC} -ne 2;
 
if test ${BASH_ARGC} -ne 2;
 
then
 
then
Line 71: Line 57:
 
fi
 
fi
  
# Copy arguments into friendlier variable names
+
# Arguments copier dans des noms de variables convivial
 
SRC_FILE=${1}
 
SRC_FILE=${1}
 
DST_FILENAME=${2}
 
DST_FILENAME=${2}
  
# Test if backup directory exists
+
# Test si le répertoire de sauvegarde existe
 
if test ! -d ${BACKUP_DIR};
 
if test ! -d ${BACKUP_DIR};
 
then
 
then
Line 82: Line 68:
 
fi;
 
fi;
  
# Test if the source file exists
+
# Test si le fichier source est disponible
 
if test ! -f ${SRC_FILE};
 
if test ! -f ${SRC_FILE};
 
then
 
then
Line 104: Line 90:
 
fi</pre>
 
fi</pre>
  
'''Make the script executable'''
+
'''Rendre le script exécutable'''
 
  chown postgres:postgres /usr/local/bin/postgres-backup
 
  chown postgres:postgres /usr/local/bin/postgres-backup
 
  chmod 550 /usr/local/bin/postgres-backup
 
  chmod 550 /usr/local/bin/postgres-backup
  
'''Modify PostgreSQL to do archiving'''<br/>
+
'''Modifier PostgreSQL pour faire de l'archivage'''<br/>
You need to modify your <tt>postgresql.conf</tt>, which, on Debian, is stored in <tt>/etc/postgresql/8.3/main/</tt><br/>
+
Vous de vez modifier votre fichier <tt>postgresql.conf</tt>, qui dans Debian est enregistré dans <tt>/etc/postgresql/8.3/main/</tt><br/>
These options need to be changed.
+
Ces options ont besoins d'être modifié.
  archive_mode = on                                        # Turn on archiving
+
  archive_mode = on                                        # Active l'archiavge
  archive_command = '/usr/local/bin/postgres-backup %p %f' # What command to run
+
  archive_command = '/usr/local/bin/postgres-backup %p %f' # Quelle commande à lancer
  archive_timeout = 86400                                  # Do a forced backup every 7 days
+
  archive_timeout = 86400                                  # Forcer une sauvegarde tout les 7 jours
  
'''Reload PostgreSQL'''
+
'''Relancer PostgreSQL'''
 
  /etc/init.d/postgresql-8.3 reload
 
  /etc/init.d/postgresql-8.3 reload
  
'''Start a full database cluster backup'''
+
'''Démarrer une sauvegarde complète de l'ensemble des bases de données'''
 
  sudo -u postgres psql
 
  sudo -u postgres psql
 
  postgres=# SELECT pg_start_backup('/var/backups/postgres/');
 
  postgres=# SELECT pg_start_backup('/var/backups/postgres/');
 
  postgres=# \q
 
  postgres=# \q
  
'''Backup the full database cluster'''
+
'''Archiver la sauvegarde complète'''
 
  tar czvf /var/backups/postgres/fullbackup-$(date +%Y%m%d).tar.gz /var/lib/postgresql/8.3/main/base/
 
  tar czvf /var/backups/postgres/fullbackup-$(date +%Y%m%d).tar.gz /var/lib/postgresql/8.3/main/base/
  
'''Stop the full database cluster backup'''
+
'''Arrêter la sauvegarde complète des BDD'''
 
  sudo -u postgres psql
 
  sudo -u postgres psql
 
  postgres=# SELECT pg_stop_backup();
 
  postgres=# SELECT pg_stop_backup();
 
  postgres=# \q
 
  postgres=# \q
  
'''You are done!'''
+
'''C'est fait!'''
 +
 
 +
=== Comment restaurer une sauvegarde incrémentale ===
 +
La page du manuel PostreSQL ici '''''(en)'''''[http://www.postgresql.org/docs/8.3/static/continuous-archiving.html archivage continu], explique aussi comment effectuer une restauration.
  
=== How to restore incremental backups ===
+
{{à relire}}
The PostgreSQL manual has a page on [http://www.postgresql.org/docs/8.3/static/continuous-archiving.html continuous archiving], which also guides you on how to do recover a database using incremental backups.
 

Latest revision as of 19:05, 22 February 2011

Help
Available languages

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.

Besoin de relécture Cet article ou cette section nécessitent d'être 'relu'. Si vous connaissez bien le français, n'hésitez pas! Merci pour DAViCal.