« MySQL : Backup d'un serveur » : différence entre les versions

De Adadov.net wiki
Aucun résumé des modifications
Ligne 49 : Ligne 49 :
{{LinuxTerminal2|text=mysql -p}}
{{LinuxTerminal2|text=mysql -p}}
{{MySQLTerminal|text=GRANT USAGE,SELECT,LOCK TABLES ON *.* TO 'backup'@'localhost';}}
{{MySQLTerminal|text=GRANT USAGE,SELECT,LOCK TABLES ON *.* TO 'backup'@'localhost';}}
Nous avons maintenant un utilisateur 'backup' capable de se connecter au serveur MySQL pour sauvegarder chacune des bases sans avoir besoin de saisir un mot de passe.
== Configuration de la connexion SSH au serveur de backup ==

Version du 18 avril 2012 à 23:26

Article en cours de rédaction ou de modification !
WorkInProgress.png
Le présent article est actuellement en cours de rédaction ou de modification.
Adressez-vous à la personne en charge pour toute proposition ou modification.
Auteur / Editeur : Adadov
Dernière édition : 18/04/2012
Ecrit Par : Adadov

Introduction

On ne pense jamais assez aux sauvegardes et perdre les données d'un serveur peut vite devenir un énorme problème.
Donc j'ai mis en place un script de backup qui est capable à chaud de venir sauvegarder toutes les bases de données d'un serveur MySQL.
Il se base sur la liste des dossiers présents dans le répertoire de données de MySQL, ainsi il suffira de créer une nouvelle base de données pour qu'elle soit sauvegardée.

Script de backup

#!/bin/bash

MUSER='backup' # Nom d'utilisateur pour MySQL
BUSER='backup' # Nom d'utilisateur pour la connexion SSH au serveur de backup
BSRV='srv2'    # Adresse ou non du serveur de backup
DEST='/backup' # Répertoire où envoyer le fichier sur le serveur de backup

DATE=`date +%y%m%d`
HOST=`hostname -s`
DATADIR='/var/lib/mysql'
BACKDIR='/backup'
CGZIP='/bin/gzip'
CFIND='/bin/find'
CSCP='/usr/bin/scp'

############################################
## RIEN A MODIFIER AU DELÀ DE CETTE LIGNE ##
############################################

cd $DATADIR
for i in `${CFIND} * -type d`; do mysqldump -u ${MUSER} ${i} | ${CGZIP} -9 > ${BACKDIR}/${HOST}_${i}_${DATE}.sql.gz; done

${CSCP} ${BACKDIR}/*_${DATE}.sql.gz ${BUSER}@${BSRV}:${DEST}/

${CFIND} ${BACKDIR}/*.sql.gz -ctime +${RETDAY} -type f -delete

cd -

Configuration du serveur MySQL

Afin de pouvoir facilement faire le backup du serveur MySQL il faut créer un utilisateur qui aura le droit de lire les données et de verrouiller les tables de toutes les bases.
On autorisera cet utilisateur à se connecter uniquement depuis localhost vu qu'il n'aura pas de mot de passe.

{{#linuxcmd:mysql -p|[user@linux] $}}
{{#sqlcmd:GRANT USAGE,SELECT,LOCK TABLES ON *.* TO 'backup'@'localhost';|mysql>}}

Nous avons maintenant un utilisateur 'backup' capable de se connecter au serveur MySQL pour sauvegarder chacune des bases sans avoir besoin de saisir un mot de passe.

Configuration de la connexion SSH au serveur de backup