sqlmig: ajout de la restauration de la base test à partir d'une copie de la prod
This commit is contained in:
parent
a5be8d8770
commit
4ad84c0c47
66
sqlmig
66
sqlmig
|
@ -116,6 +116,15 @@ OPTIONS
|
||||||
-c, --connect
|
-c, --connect
|
||||||
Se connecter avec le client natif (mysql ou sqlplus) sur la base de
|
Se connecter avec le client natif (mysql ou sqlplus) sur la base de
|
||||||
données courante.
|
données courante.
|
||||||
|
-r, --restore-test
|
||||||
|
Restaurer une sauvegarde d'une base de production sur la test. Cette
|
||||||
|
option n'est (actuellement) supportée que pour MySQL.
|
||||||
|
L'argument attendu est un fichier de sauvegarde DATABASE.sql[.gz]
|
||||||
|
effectué avec la commande
|
||||||
|
mysqldump --databases --add-drop-database DATABASE
|
||||||
|
Dans le fichier spécifié, on remplace toutes les occurences de DATABASE
|
||||||
|
par DATABASE_test, ensuite on lance (re)création de la base de données
|
||||||
|
mysql <DATABASE_test.sql
|
||||||
--update-all
|
--update-all
|
||||||
Mettre à jour la base de données. C'est l'option par défaut
|
Mettre à jour la base de données. C'est l'option par défaut
|
||||||
-t, --updatedir UPDATEDIR
|
-t, --updatedir UPDATEDIR
|
||||||
|
@ -948,6 +957,7 @@ args=(
|
||||||
-0,--init action=init
|
-0,--init action=init
|
||||||
-e:,--export: '$action=export; set@ exportdir'
|
-e:,--export: '$action=export; set@ exportdir'
|
||||||
-c,--connect action=connect
|
-c,--connect action=connect
|
||||||
|
-r,--restore-test action=restore_test
|
||||||
--update-all action=update
|
--update-all action=update
|
||||||
-t:,--updatedir: updatedir=
|
-t:,--updatedir: updatedir=
|
||||||
-d:,--databasedir: dbdir=
|
-d:,--databasedir: dbdir=
|
||||||
|
@ -1185,6 +1195,62 @@ elif [ "$action" == connect ]; then
|
||||||
done
|
done
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
elif [ "$action" == restore_test ]; then
|
||||||
|
set_dbdirs
|
||||||
|
|
||||||
|
if [ ${#dbdirs[*]} -gt 1 ]; then
|
||||||
|
die "Avec --restore-test, une seule base de données doit être spécifiée"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dbdir="${dbdirs[0]}"
|
||||||
|
[ -n "$dbname" ] || setx dbname=basename "$dbdir"
|
||||||
|
|
||||||
|
etitle "$dbname"
|
||||||
|
|
||||||
|
ensure_dbtype "$dbdir" "$type"
|
||||||
|
ensure_dbmode "$dbtype" "$mode"
|
||||||
|
|
||||||
|
[ "$dbtype" == mysql ] || die "Seule les bases de type MySQL sont supportées"
|
||||||
|
|
||||||
|
# construire les paramètres pour mysql
|
||||||
|
mysql_set_userargs "$dbdir" "$dbname"
|
||||||
|
mysql_set_mysqlargs
|
||||||
|
|
||||||
|
if [ -n "$suffix" ]; then
|
||||||
|
estepi "Suffixe: $dbname --> $dbname$suffix"
|
||||||
|
dbname="$dbname$suffix"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dump="$1"
|
||||||
|
[ -n "$dump" ] || die "Vous devez spécifier le fichier de dump"
|
||||||
|
[ -f "$dump" ] || die "$dump: fichier de dump introuvable"
|
||||||
|
|
||||||
|
ac_set_tmpdir tmpdir
|
||||||
|
if [[ "$dump" == *.gz ]]; then
|
||||||
|
gzip -dc "$dump" >"$tmpdir/prod.sql"
|
||||||
|
elif [[ "$dump" == *.sql ]]; then
|
||||||
|
cat "$dump" >"$tmpdir/prod.sql"
|
||||||
|
else
|
||||||
|
die "$dump: n'est pas un fichier sql"
|
||||||
|
fi
|
||||||
|
dump="$tmpdir/prod.sql"
|
||||||
|
|
||||||
|
pname="$dbname"
|
||||||
|
tname="${dbname}_test"
|
||||||
|
sed <"$tmpdir/prod.sql" >"$tmpdir/test.sql" "\
|
||||||
|
s/\`$pname\`/\`$tname\`/g
|
||||||
|
s/\`${pname}_updates_\`/\`${tname}_updates_\`/g"
|
||||||
|
|
||||||
|
enote "Vous allez restaurer un fichier de sauvegarde de le base $pname vers la base $tname"
|
||||||
|
ask_yesno "Voulez-vous continuer?" X || die
|
||||||
|
|
||||||
|
array_del mysqlargs -B # désactiver le mode batch
|
||||||
|
mysql "${userargs[@]}" "${mysqlargs[@]}" <"$tmpdir/test.sql"
|
||||||
|
ac_clean "$tmpdir"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
elif [ "$action" != update ]; then
|
elif [ "$action" != update ]; then
|
||||||
die "BUG: $action: action non implémentée"
|
die "BUG: $action: action non implémentée"
|
||||||
|
|
Loading…
Reference in New Issue