Scripts de migration de bases de données entre deux serveurs mysql

Objectif

Les bases de données mysql doivent migrer d’un serveur à un autre. L’opération est effectuée en plusieurs temps :

-

la base de données est exportée depuis le premier serveur dans un fichier bdd.sql

-

le fichier bdd.sql est recopié vers le second serveur

-

la base de données est (re)crée, puis le script bdd.sql est exécuté.

Pour récupérer les logins et les droits, vous devez auparavant avoir exporté puis importé la base mysql.

Les deux scripts fournis vous permettent d’automatiser de façon simple les opérations. Testé en réel : très pratique ! Mais vous pouvez améliorer le système... A vous d’adapter en fonction de vos configurations (la copie s’effectue ici par scp, mais vous pouvez faire ce que vous voulez).

Script à exécuter dans l’ancien serveur

migration :

#!/bin/bash
CHEMIN='/opt/backup/mysql/migration/'
CHEMINDISTANT='svbdd:/opt/migration/'
LOGIN='root'
BDD=$1
if test -z $BDD;then
       echo "la base de donneees n'a pas ete renseignee. Fin du script"
       exit 65
fi
echo "traitement de la base de donnees $BDD"
read -s -p "Mot de passe MYSQL (compte $LOGIN)?" mdp
mysqldump $BDD --user=$LOGIN --password=$mdp --opt > $CHEMIN$BDD'.sql'
scp $CHEMIN$BDD'.sql' $CHEMINDISTANT

Script à exécuter dans le nouveau serveur pour importer la base de données

import :

#!/bin/bash
# Script permettant d'importer une base de donnees mysql a partir d'une sauvegarde
BDD=$1
CHEMIN='/opt/migration/'
SCRIPT='/tmp/dropCreateDB.sql'
LOGIN='root'
if test -z $BDD;then
        echo "la base de donneees n'a pas ete renseignee. Fin du script"
        exit 65
fi
echo "traitement de la base de donnees $BDD"
read -s -p "Mot de passe MYSQL (compte $LOGIN)?" mdp
# Suppression de la base de donnees
# Creation du script adequat
echo 'drop database '$BDD';' > $SCRIPT
echo 'create database '$BDD';' >> $SCRIPT
mysql --user=$LOGIN --password=$mdp < $SCRIPT
# Remplissage de la base de donnees
mysql --user=$LOGIN --password=$mdp $BDD < $CHEMIN$BDD'.sql'
# Affichage du contenu de la base de donnees
mysqlshow --user=$LOGIN --password=$mdp $BDD