Sauvegarde de la base de données

Sauvegarde de la base de données MySQL/mariadb

Que le serveur soit productif ou non, il est très important de sauvegarder l’ensemble des données. L’exportation des données proposée par phpmyadmin ou adminer ne suffit pas toujours. Et pour cause, cette exportation ne vous sauvegarde que les tables et leurs données. Néanmoins les données plus « au coeur » de la base tels que les utilisateurs et leurs mot de passe par exemple, eux ne seront pas exportés. Il exite une solution qui consiste à copier l’ensemble de la base.

Sauvegarde à froid:

La sauvegarde à froid est très simple en elle-même mais elle a un petit incovénient, il faut arrêter le service mariadb pendant la copie. Même si la copie ne prend que une à deux secondes, le serveur de base de donnée seul est inaccessible mais ce moyen de sauvegarde est sur à 99%. Faisons le avec cette commande:

sudo systemctl stop mariadb.service
sudo tar cvf ~/save-mysql.tgz -C /var/lib/mysql
sudo systemctl start mariadb.service

Pour restaurer la sauvegarde, il faut également arrêter le service maridb et il suffit d’extraire l’archive dans /var/lib comme ceci:

sudo tar -zxvf save-mysql.tgz -C /var/lib

Sauvegarde à chaud:

Les sauvegardes à chaud sont très pratiques surtout pour des serveurs productifs car l’arrêt des services n’est pas obligatoire. Il est préférables en plus de cela de faire une sauvegarde à froid de temps en temps (une fois par semaines par exemple). Faisons une sauvegarde à chaud avec cette commande:

sudo mysqldump --user=root --password=motdepasse -all-databases | gzip >save.mysql.sql.gz

Pour restaurer la sauvegarde à chaud de notre archive crée au dessus, on extrait dans le chemin que l’on souhaite puis on fait cette commande la:

sudo mysql --user=root --password=motdepasse < save.mysql.sql

Sauvegarde de la base de données postgreSQL

Pour sauvegarder une base de données postgresql c’est à peu près la même chose du moins à froid.

Sauvegarde à chaud:

Pour faire une sauvegarde à chaud, on peut utiliser pg_dump si on veut sauvegarder une base de données spécifique mais dans notre cas, on va sauvegarder l’ensemble des bases et utiliser pg_dumpall comme ceci:

sudo PGPASSWORD='motdepasse' pg_dumpall -U postgres | bzip2 > sauvegarde-pgsql.tar.bz2

Pour restaurer notre sauvegarde, on fera la commande suivante:

sudo psql -U postgres -f <(bzcat sauvegarde-pgsql.tar.bz2)

Faite attention, car ce genre de sauvegarde, ne sauvegarde pas les utilisateurs mais uniquement l’ensemble des bases et leurs données. PostgreSQL utilise les utilisateurs de l’OS comme système.

Sauvegarde à froid:

Maintenant, même principe que pour mariadb, c’est à dire, pour sauvegarder à froid, là aussi il faut arrêter le service comme ceci:

sudo systemctl stop postgresql.service
sudo tar cjf sauvegarde-pgsql.tar.bz2 /var/lib/pgsql/data
sudo systemctl start postgresql.service

Pour restaurer notre sauvegarde, il faut extraire l’archive dans le chemin /var/lib/pgsql comme ceci:

sudo tar -zjvf sauvegarde-pgsql.tar.bz2 /var/lib/pgsql

ATTENTION: Ce type de sauvegarde n’est pas compatible entre deux versions majeures de PostgreSQL, le dossier data ne serait plus utilisable. Préférez l’utilisation des outils de sauvegarde PostgreSQL pg_dumpall.