Sauvegardes
Un système en service est assujetti à une gamme de risques divers. Avant de développer une stratégie de sauvegarde, il faut comprendre les risques, pour pouvoir assurer qu’on les a tous traité.
Panne de matériel
Problème fournisseur : exemple, l’incendie chez OVH en 2021
Modification ou suppression malicieuse (hack)
Piratage et rançon
Erreurs humaines : un utilisateur « autorisé » modifie ou supprime des données par erreur
… autres ?
Prenons un exemple (tiré d'une expérience réelle) :
Dans mon entreprise, une sauvegarde automatique se fait tous les soirs, sur un disque dur attaché au serveur.
Panne de matériel
Protégé !
Problème fournisseur : exemple, l’incendie chez OVH en 2021 :
Pas protégé !
Modification ou suppression malicieuse (hack)
Ça dépend le niveau d’accès du hacker, s’il a accès au disque de sauvegarde, pas protégé !
Piratage et rançon
Idem
Erreurs humaines : un utilisateur « autorisé » modifie ou supprime des données par erreur
Pas protégé, si on ne garde pas une historique de sauvegardes
Notre stratégie de sauvegarde n'est donc pas suffisante !
Critères d'une sauvegarde
La liste suivante est une sorte de checklist que j'utilise pour évaluer si ma stratégie de sauvegarde est suffisant :
Atomique :
Le risque est qu’une donnée change pendent la sauvegarde, mettant en péril l’intégrité de la base.
Solutions ?
verrouiller les tables pour refuser de l’accès en écriture … mais votre service devient indisponible pendant la sauvegarde
Intégralité :
Est-ce que TOUTES les informations nécessaires sont exportées ?
Les données ?
Utilisateurs et leurs droits ?
Procédures, triggers, index ?
Performant :
Il ne faut pas qu’une sauvegarde basse la performance de votre service
Stockage redondant et « off-site » :
La sauvegarde est stockée dans une data-center autre que le serveur de production ?
Est-ce que vous avez plusieurs copies des sauvegardes ?
N’oubliez pas qu’un disque dur de sauvegarde peut échouer aussi !
Stockage d’une historique :
Garder plusieurs versions de vos sauvegardes pour pouvoir analyser les évolutions et récupérer les données perdues
Stockage sécurisé :
attention à l’accès aux fichiers de sauvegarde. Est-ce que la sauvegarde est cryptée ?
Prouvée :
Est-ce que vous avez automatisé et testé un rétablissement ? Souvent on découvre que nos sauvegardes ne sont pas suffisantes seulement après une sinistre.
Sauvegardes avec MariaDB / MysQL
Chaque SGBDR dispose de ses propres moyens de sauvegarde, y compris MairaDB :
mysqldump
mariabackup
mysqldump
mysqldump
L'outil mysqldump
est installé avec MariaDB ou MySQL, et donc se trouve dans le container (comme la commande mysql
).
La documentation : https://mariadb.com/kb/en/mariadb-dumpmysqldump/
C'est une solution simple pour les petites bases de données. L'outil export le DDL et le DML nécessaire pour reconstruire le même schéma et données dans un nouveau SGBDR.
En revanche, attention aux éléments non exportés :
Les utilisateurs et leurs droits ne sont pas exportés
Les procédures stockées ne sont pas exportées
Du coup, un simple mysqldump
ne sera pas suffisant pour remettre en opération votre SGDBR si vous utilisez des procédures, ou vous avez différents niveaux d'accès pour vos utilisateurs.
Attention : par défaut mysqldump
ne verrouille pas les tables pendant l'export. Donc n'importe quel écriture durant l'export pourrait rendre la sauvegarde incohérente.
On peut activer l’option de verrouiller les tables avec le paramètre --lock-tables
. Mais, durant la sauvegarde, votre plateforme n'autorisera pas des écritures, et ceci est probablement pas acceptable !
mariabackup
mariabackup
Au lieu d'exporter un DDL et DML, mariabackup
est une solution qui sauvegarde plutôt les données brutes du disque dur. Cela veut dire que les utilisateurs, procédures, etc sont pris en compte par la sauvegarde.
En plus, mariabackup
permet une sauvegarde entière ou par incrément.
En revanche, la sauvegarde ne fonctionnera que pour MariaDB, et seulement avec la même version de MariaDB. Ceci est une contrainte peu importante, surtout pour la remise en route rapide après un sinistre.
Pour plus d'information sur mariabackup
https://mariadb.com/kb/en/full-backup-and-restore-with-mariabackup/
Réplication
Avec l'émergence des solutions cloud, et les audiences massives, la réplication des données devient un sujet de plus en plus supporté par les SGBDRS.
En bref, la réplication permet de dupliquer le SGBDR (et ses données) sur plusieurs machines physiques. Toutes les instructions d’écriture sont exécutées sur le master et les modifications sont apportées sur les autres instances (avec un petit délai). Il y a plusieurs avantages :
Des opérations de lecture peuvent être faites sur n'importe quel participant du set de réplication, et donc allège la charge sur le master
Si un participant du set de réplication disparait (y compris le master), il reste d'autres membres qui garantissent la continuité du service
Pour faire une sauvegarde, on peut verrouiller entièrement un membre (non master), et effectuer la sauvegarde tranquillement. Pendant ce temps, les autres membres peuvent continuer leurs opérations.
Dernière mise à jour