Created
April 12, 2010 13:52
-
-
Save jlecour/363573 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
SRC_DB_NAME='source db name' | |
SRC_DB_USER='source db user name' | |
SRC_DB_PWD='source db password' | |
DEST_DB_NAME='destination db name' | |
DEST_DB_USER='destination db user name' | |
DEST_DB_PWD='destination db password' | |
PARENT_DIR="/tmp" | |
cd $PARENT_DIR | |
echo "# Sauvegarde de la base $DEST_DB_NAME" | |
DUMPDIR="dump_$DEST_DB_NAME" | |
if [ ! -d $PARENT_DIR/$DUMPDIR ]; then | |
echo "- le dossier de dump doit être créé" | |
mkdir -p $PARENT_DIR/$DUMPDIR | |
else | |
echo "- le dossier de dump doit être vidé" | |
rm -rf $DUMPDIR/* | |
fi | |
chmod a+w $DUMPDIR | |
echo "- dump de $DEST_DB_NAME" | |
mysqldump -u $DEST_DB_USER -p$DEST_DB_PWD -Q --tab=$DUMPDIR $DEST_DB_NAME | |
echo "# Sauvegarde de la base $SRC_DB_NAME" | |
DUMPDIR="dump_$SRC_DB_NAME" | |
if [ ! -d $PARENT_DIR/$DUMPDIR ]; then | |
echo "- le dossier de dump doit être créé" | |
mkdir -p $PARENT_DIR/$DUMPDIR | |
else | |
echo "- le dossier de dump doit être vidé" | |
rm -rf $DUMPDIR/* | |
fi | |
chmod a+w $DUMPDIR | |
echo "- dump de $SRC_DB_NAME" | |
mysqldump -u $SRC_DB_USER -p$SRC_DB_PWD -Q --tab=$DUMPDIR $SRC_DB_NAME | |
echo "# Import de $SRC_DB_NAME dans $DEST_DB_NAME" | |
cd $DUMPDIR | |
echo "- import de la structure dans $DEST_DB_NAME" | |
cat $PARENT_DIR/$DUMPDIR/*.sql | mysql -u $DEST_DB_USER -p$DEST_DB_PWD $DEST_DB_NAME | |
echo "- import du contenu dans $DEST_DB_NAME" | |
mysqlimport -u $DEST_DB_USER -p$DEST_DB_PWD $DEST_DB_NAME $PARENT_DIR/$DUMPDIR/*.txt |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
L'idée est de copier le contenu d'une base en production pour l'importer dans une base de test ou de pré-production (staging).
La base de destination est sauvegardée avant car elle sera écrasé par l'import.
Si la base de destination contient des tables qui ne sont pas dans la source, elles seront conservées.
Je suis nul en Shell donc je ne sais pas bien comment écrire une fonction (avec des paramètres) afin de refactoriser le code de la partie "dump".
Je n'ai pas non plus utilisé beaucoup de test pour interrompre l'exécution en cas d'erreur intermédiaire.
N'hésitez pas à utiliser ce script et à proposer des améliorations.