Serveur MYSQL CLUSTER cluster backup
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Script de sauvegarde |
| Rôle | Compresse et exporte vers un serveur NFS le dernier backup NDB produit sur le nœud |
| Prérequis | /etc/my.cnf, config.ini, backup NDB déjà déclenché
|
| Voir aussi | Restauration · Script cluster |
Ce script complète le backup natif de MySQL Cluster (NDB) : NDB écrit ses fichiers de sauvegarde localement sur chaque nœud de données (sous FileSystemPath/BACKUP), sans les exporter ailleurs. Ce script récupère le backup le plus récent, le compresse et le copie sur un partage NFS distant pour l'externaliser.
Important : ce script ne déclenche pas lui-même la sauvegarde NDB — il faut d'abord lancer manuellement (ou via une tâche planifiée séparée) :
ndb_mgm -e 'start backup [id] [nowait]'
avant d'exécuter ce script, qui se contente de repérer et d'exporter le backup déjà produit.
Fonctionnement
- Lit
FileSystemPathdans config.ini pour localiser le répertoire de backups NDB. - Repère automatiquement l'identifiant du backup le plus récent (
BACKUP-IDle plus élevé). - Monte le partage NFS distant (serveur/point de montage à adapter à l'environnement).
- Compresse chaque fichier du backup en
.tgz. - Copie l'archive compressée vers le partage NFS, dans un répertoire daté du jour.
- Démonte le partage NFS.
Script
Le nom du serveur NFS et le chemin de montage (variables server/tomount) sont des exemples génériques à adapter à l'environnement cible.
#!/bin/bash
[ ! -f /etc/my.cnf ] && echo "Fichier my.cnf manquant!" && exit 1
[ ! -f /usr/local/mysql-cluster/config.ini ] && echo "Fichier config.ini manquant!" && exit 1
datadir=$(grep -m1 FileSystemPath /usr/local/mysql-cluster/config.ini)
datadir=${datadir#*=}
[ ! -d "$datadir" ] && echo "Mauvaise valeur pour FileSystemPath=$datadir" && exit 1
backupdir=$datadir/BACKUP
if ! ls -d $backupdir/BACKUP-*/ >/dev/null 2>&1 ; then
echo "Aucun backup présent sur le serveur!"
echo "Lancez ndb_mgm -e 'start backup [id] [nowait]' d'abord!"
exit 1
fi
# Sauvegarde automatiquement le backup le plus récent présent localement.
ID=$(ls -d $backupdir/*/| sed "s#.*BACKUP-\([0-9]*\)/#\1#g" | sort -n| tail -n1)
iddir=BACKUP-$ID
mountdir=/mnt
tomount=/home/cluster
server=backup.example.local
nodeid=$(grep -m1 nodeid /etc/my.cnf)
nodeid=${nodeid##*=}
nodeid=${nodeid%%,*}
# Montage du partage NFS distant
mount -t nfs $server:$tomount $mountdir
[ $? -ne 0 ] && echo "Impossible de monter le repertoire de sauvegarde." && exit 1
echo "Montage OK"
# Compression des fichiers du backup NDB
echo "Compression des fichiers..."
cd $backupdir/BACKUP-$ID
for i in $(ls BACKUP-${ID}*)
do
tar -czf ${i}.tgz $i
done
cd $mountdir
directoire=cluster_back_$(date +%y%m%d)
[ -d $directoire ] || mkdir $directoire
[ -d $directoire/BACKUP-${ID} ] || mkdir $directoire/BACKUP-${ID}
echo "Copie du Backup..."
cp $backupdir/BACKUP-${ID}/*.tgz $mountdir/$directoire/BACKUP-${ID} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Backup sauvegardé avec succès!"
else
echo "Copie ratée!..."
fi
cd
umount -l $mountdir
Voir aussi
- Serveur MYSQL CLUSTER cluster restore semiauto — restauration d'un backup exporté par ce script
- Serveur MYSQL CLUSTER cluster — script de démarrage/arrêt du cluster
- Serveur MYSQL CLUSTER config.ini — configuration dont est tiré
FileSystemPath