Comment utiliser MySQL dump à partir d'une machine distante
Comment puis-je sauvegarder une base de données mysql qui s'exécute sur un serveur distant, j'ai besoin de stocker le fichier de sauvegarde dans le pc local.
7 réponses
Essayer avec Mysqldump
#mysqldump --host=the.remotedatabase.com -u yourusername -p yourdatabasename > /User/backups/adump.sql
Avez-vous accès à SSH?
Vous pouvez utiliser cette commande dans shell pour sauvegarder une base de données entière:
mysqldump -u [username] -p[password] [databasename] > [filename.sql]
Il s'agit en fait d'une commande suivie de l'opérateur >
, qui dit: "Prenez la sortie de la commande précédente et stockez-la dans ce fichier."
Remarque: L'absence d'espace entre -p et le mot de passe mysql n'est pas une faute de frappe. Cependant, si vous laissez l'indicateur -p
présent, mais que le mot de passe réel est vide, vous serez invité à entrer votre mot de passe. Parfois, c'est recommandé de garder les mots de passe hors de votre historique bash.
Personne ne mentionne quoi que ce soit à propos de l'option --single-transaction. Les utilisateurs doivent l'utiliser par défaut pour les tables InnoDB afin d'assurer la cohérence des données. Dans ce cas:
mysqldump --single-transaction -h [remoteserver.com] -u [username] -p [password] [yourdatabase] > [dump_file.sql]
Cela garantit que le vidage est exécuté dans une seule transaction isolée des autres, empêchant la sauvegarde d'une transaction partielle.
Par exemple, considérez que vous avez un serveur de jeu où les gens peuvent acheter des engrenages avec leurs crédits de Compte. Il y a essentiellement 2 opérations contre le base de données:
- Déduire le montant de leurs crédits
- Ajouter l'équipement à leur arsenal
Maintenant, si le vidage se produit entre ces opérations, la prochaine fois que vous restaurez la sauvegarde entraînera la perte de l'élément acheté par l'utilisateur, car la deuxième opération n'est pas vidée dans le fichier de vidage SQL.
Bien que ce soit juste une option , Il n'y a pas beaucoup de raison pour laquelle vous n'utilisez pas cette option avec mysqldump.
Ce sujet apparaît sur la première page de mon résultat google, alors voici un petit conseil utile pour les nouveaux arrivants.
Vous pouvez également vider le sql et le gzip en une ligne:
mysqldump -u [username] -p[password] [database_name] | gzip > [filename.sql.gz]
mysqldump -h [domain name/ip] -u [username] -p[password] [databasename] > [filename.sql]
Essayé toutes les combinaisons ici, mais cela a fonctionné pour moi:
mysqldump -u root -p --default-character-set=utf8mb4 [DATABASE TO BE COPIED NAME] > [NEW DATABASE NAME]
Vous pouvez choisir une autre manière:
mysql -u [username] [databasename]
" Et choisissez votre fichier sql comme :
source mydumpdatabase.sql