-
mySQL, mariaDB > sauvegarde des bases de données (backup)
Sauvegarde / backup
mysqldump -h ma_machine -u moi -p ma_base > sauvegarde.mysql
-h ma_machine: si le serveur mysql n’est pas sur la même machine. (optionnel)-u moi: nom du user mysql-p: pour demander le mot de passema_base: le nom de la base à sauvegarderSauvegarder TOUTES les bases
L’utilisateur
rootest obligatoire :mysqldump --all-databases -u root -p > sauvegarde.sql
Éviter la demande de mot de passe
mysqldump --all-databases -u root --password=mot_de_passe > sauvegarde.sql
Formater la sauvegarde avec la date
mysqldump -uroot -pmonpass ${i} > _`date +"%F"`.sql mysqldump --user=xxx --password=xxx $i > _`date +"%F"`.sql
Chez Free.fr
wget http://sql.free.fr/backup.php --post-data="login=toto&password=foobar&check=1&all=1" -O $(date +%F).sql.gz
SCRIPTS
script 1 - Sauvegarder chaque Base dans son propre fichier
Dans un fichier
sauvegarde_db.shpar exemple :#!/bin/bash mysql_user=root mysql_pass=mot_de_passe_root bases=`mysql -u $mysql_user --password=$mysql_pass -e "show databases;" -B -s 2>/dev/null` if [ -z "$bases" ];then echo "Erreur d'accès ou aucune base" exit 1 fi echo "Début de la sauvegarde" for base in $bases ; do echo "Sauvegarde de $base..." mysqldump -u $mysql_user --password=$mysql_pass "$base" > $base.sql done echo "Sauvegarde terminée"
./sauvegarde_db.sh
SCRIPT 2
#!/bin/bash qui="" mdp="" host="" nom_db="" rep="/chemin/destination" date=$(date +"%d-%b-%Y") umask 177 mysqldump --user=$qui --password=$mdp --host=$host $nom_db > $rep/$nom_db_$date.sql # efface les fichiers vieux de plus de 30 jours find $rep/* -mtime +30 -exec rm {} \; if [ "${host[$i]}" = "sql.free.fr" ]; then { wget http://sql.free.fr/backup.php --post-data="login=$qui&password=$mdp&check=1&all=1" -O $(date +%F_%H-%M-%S).sql.gz } else { mysqldump -h${serveur_sql[$i]} -u${qui[$i]} -p${mdp[$i]} $j > ${j}_`date +%D | sed 's;/;-;g'`.sql # compression en gz gzip $rep/$date.sql # Compression en tar.bz2 tar jcf ${j}_`date +%D | sed 's;/;-;g'`.sql.tar.bz2 ${j}_`date +%D | sed 's;/;-;g'`.sql rm ./mysql/$date.sql }fi
—
PC1 = serveur hébergeant les Bases de données.
PC2 = serveur sur lequel importer les Base de données.
Export de la base de données.
Sur PC1 :
# mysqldump -u root -p -q --databases DB1 > /chemin/DB1.sql # mysqldump -u root -p -q --databases DB2 > /chemin/DB2.sql
-qAccélérer la création du fichier SQL (Quick Mode)Envoyer les deux fichiers sur DB2:
# scp /chemin/DB1.sql root@192.168.1.1:/chemin/DB1.sql # scp /chemin/DB2.sql root@192.168.1.1:/chemin/DB2.sql
Récupération / Restauration
mysql -u monUser -p maBase < databasename_backup.sql;
Import de la base de données.
Avant d’importer les bases et leurs données, créer deux bases ayant le même nom.
MariaDB > CREATE DATABASE DB1; MariaDB > CREATE DATABASE DB2;
Importer les bases de données :
# mysql -u root -p DB1 < /chemin/DB1.sql # mysql -u root -p DB2 < /chemin/DB2.sql
Voili voilou