Je souhaite conserver une sauvegarde de toutes mes bases de données MySQL. J'ai plus de 100 bases de données MySQL. Je veux les exporter tous en même temps et les réimporter tous en même temps sur mon serveur MySQL. Comment puis je faire ça?
mysql
database-backups
mysql-backup
Nouvel utilisateur
la source
la source
Autre solution:
Il sauvegarde chaque base de données dans un fichier différent
la source
ExcludeDatabases="Database|information_schema|performance_schema|mysql"
[ligne suivante]databases=`-u $USER -p$PASWORD -e "SHOW DATABASES;" | tr -d "| " | egrep -v $ExcludeDatabases`
et supprimez complètement les lignesif
etfi
. Dans la variable,ExcludeDatabases
vous stockez les noms des bases de données qui ne doivent pas être sauvegardées [normalement les bases de données système].-Bse "show databases"
pour éviter une sortie de formatage supplémentaire et ainsi vous pouvez supprimer| tr -d "| " | grep -v Database
. Dans mon script d'exportation, cette ligne estdatabases=`mysql -u $USER -p$PASSWORD -Bse "SHOW DATABASES;"
U+200C U+200B
entre le "c" et le "h" du mot "schéma" . Cela interrompt la copie et le collage de ce bit. Plus de discussion sur ce problème ici: meta.stackexchange.com/questions/170970/…Toutes les réponses que je vois à cette question peuvent avoir des problèmes avec les jeux de caractères dans certaines bases de données en raison du problème de rediriger la sortie de
mysqldump
vers un fichier dans l'opérateur shell>
.Pour résoudre ce problème, vous devez effectuer la sauvegarde avec une commande comme celle-ci
Pour faire une bonne restauration BD sans aucun problème avec les jeux de caractères. De toute évidence, vous pouvez modifier le jeu de caractères par défaut selon vos besoins.
la source
Sur la base de ces réponses, j'ai créé un script qui sauvegarde toutes les bases de données dans des fichiers séparés, puis les compresse en une archive avec la date comme nom.
Cela ne demandera pas de mot de passe, peut être utilisé dans cron. Pour stocker le mot de passe,
.my.cnf
vérifiez cette réponse https://serverfault.com/a/143587/62749Fait aussi avec des commentaires pour ceux qui ne sont pas très familiers avec les scripts bash.
la source
Pourquoi analyser une sortie formatée alors que la commande mysql peut faire directement ce que vous voulez?
Répertorie les noms de base de données et uniquement cela.
la source
Soyez prudent lors de l'exportation et de l'importation vers différentes versions de MySQL car les tables mysql peuvent avoir différentes colonnes. Les privilèges accordés peuvent ne pas fonctionner si vous n'avez pas de chance. J'ai créé ce script (mysql_export_grants.sql) pour vider les subventions pour l'importation dans la nouvelle base de données, juste au cas où:
la source
Lorsque vous videz toutes les bases de données. De toute évidence, il s'agit de données volumineuses. Vous pouvez donc préférer ci-dessous pour mieux:
Création d'une sauvegarde:
Si erreur
- Attention: sauter les données de la table mysql.event. Spécifiez explicitement l'option --events.
Utilisation:
Restauration de la sauvegarde:
J'espère que cela vous aidera :)
la source
J'ai écrit ce commentaire il y a déjà plus de 4 ans et j'ai décidé maintenant de répondre à une question.
Le script de jruzafa peut être un peu simplifié:
Remarque:
ExcludeDatabases
la source
mysqldump -uroot -proot --all-databases> allDB.sql
note: -u "votre nom d'utilisateur" -p "votre mot de passe"
la source
Exportez toutes les bases de données dans Ubuntu
1 -
mysqldump -u root -p --databases database1 database2 > ~/Desktop/databases_1_2.sql
OU
2 -
mysqldump -u root -p --all_databases > ~/Desktop/all_databases.sql
la source