Script Python pour la sauvegarde de la base de données MySQL

Script Python pour la sauvegarde de la base de données MySQL

Ceci est un simple script Python pour sauvegarder les bases de données MySQL à l'aide de l'utilitaire MySQLDump. Ce script a été testé avec le Python 3.5 et 2.7.15.

Comment utiliser le script

Ce script est très facile à utiliser, à télécharger ou à copier ce script sur votre système local et à l'exécuter avec Python. Ce script est capable de prendre plusieurs bases de données de sauvegarde

Sauvegarde de base de données unique: Si vous souhaitez utiliser ce script pour prendre une seule sauvegarde de la base de données, modifiez le script ci-dessous. Par exemple, le nom de la base de données est MyDB.

 Db_name = 'mydb' 

Sauvegarde des bases de données multiples: Pour prendre plusieurs bases de données sauvegarde, créez un fichier texte comme / sauvegarde / dbNames.txt et ajouter des bases de données noms un par ligne comme ci-dessous

# Cat / Backup / DbnName.Txt Database1 MyDB 

Et ajouter ce fichier au script comme ci-dessous.

 Db_name = '/ backup / dbNames.SMS' 

Changer l'emplacement de la sauvegarde: Vous pouvez modifier la variable ci-dessous pour modifier l'emplacement du chemin de sauvegarde.

 Backup_path = '/ backup / dbbackup /' 

Script de sauvegarde Python MySQL

Cliquez ici ou utilisez la commande ci-dessous pour télécharger le script depuis github ou vous pouvez simplement copier le script ci-dessous.

#!/ usr / bin / python ############################################ ################ # # # Ce script Python est utilisé pour la sauvegarde de la base de données MySQL # Utilisation de MySQLDump et Tar Utility. # # Écrit par: Rahul Kumar # Site Web: http: // tecadmin.Net # Date de création: 03 décembre 2013 # Dernière modification: 17 août 2018 # Testé avec: Python 2.7.15 & Python 3.5 # Révision du script: 1.4 # ################################################## ########## # Importation de bibliothèques Python requises Importation du système d'exploitation Temps d'import. Assurez-vous ci-dessous que l'utilisateur a suffisamment de privilèges pour prendre la sauvegarde des bases de données. # Pour prendre plusieurs bases de données sauvegarde, créez n'importe quel fichier comme / sauvegarde / dbNames.TXT et mettez les bases de données en noms sur chaque ligne et affectées à la variable DB_NAME. Db_host = 'localhost' db_user = 'root' db_user_password = '_mysql_user_password_' #db_name = '/ backup / dbNamesList.txt 'db_name =' db_name_to_backup 'backup_path =' / backup / dbbackup '# Obtenir actuel dateTime pour créer le dossier de sauvegarde séparé comme "20180817-123433". DateTime = temps.strftime ('% y% m% d-% h% m% s') aujourd'huibackuppath = backup_path + '/' + datetime # vérification si le dossier de sauvegarde existe déjà ou non. S'il n'est pas existant. Essayez: OS.stat (aujourd'huibackuppath) sauf: OS.MKDIR (TodayBackuppath) # code pour vérifier si vous souhaitez prendre une seule sauvegarde de base de données ou assurer plusieurs sauvegardes dans DB_NAME. Imprimer ("Vérifier le fichier des noms de bases de données.") Si OS.chemin.existant (db_name): file1 = open (db_name) multi = 1 print ("Fichier de bases de données trouvé…") print ("Démarrage de la sauvegarde de tous les DB répertoriés dans le fichier" + db_name) else: print ("Fichier de données non trouvé…") Imprimer ("Démarrage de la sauvegarde de la base de données" + DB_NAME) Multi = 0 # Processus de sauvegarde de la base de données réelle de démarrage. si multi: in_file = open (db_name, "r") flength = len (in_file.lecture lines ()) dans_file.close () p = 1 dbfile = open (db_name, "r") tandis que p "+ tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (dumpcmd) gzipcmd = "gzip" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (gzipcmd) p = p + 1 dbfile.close () else: db = db_name dumpcmd = "mysqldump -h" + db_host + "-u" + db_user + "-p" + db_user_password + "" + db + ">" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (dumpcmd) gzipcmd = "gzip" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) print ("") print ("Script de sauvegarde terminé") Print ("Vos sauvegardes ont été créées dans" "+ TodayBackuppath +" '' Directory ")
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/ usr / bin / python ############################################ ################ al.## Écrit par: Rahul Kumar # Site Web: http: // tecadmin.Net # Date de création: 03 décembre 2013 # Dernière modification: 17 août 2018 # Testé avec: Python 2.7.15 & Python 3.5 # Révision du script: 1.4 ################################################### ########## # Importation de bibliothèques Python requises Importation OSIMPORT TIMPLEIMPORT DateTimeImport Pipes # Détails de la base de données MySQL auxquels la sauvegarde doit être effectuée. Assurez-vous ci-dessous que l'utilisateur a suffisamment de privilèges pour prendre la sauvegarde des bases de données.# Pour prendre plusieurs bases de données sauvegarde, créez n'importe quel fichier comme / sauvegarde / dbNames.TXT et mettez les bases de données en noms sur chaque ligne et affectées à la variable DB_NAME. Db_host = 'localhost' db_user = 'root'db_user_password =' ​​_mysql_user_password _ '# db_name =' / backup / dbNamesList.txt'db_name = 'db_name_to_backup'backup_path =' / backup / dbbackup '# Obtenir actuel DateTime pour créer le dossier de sauvegarde séparé comme "20180817-123433".DateTime = temps.strftime ('% y% m% d-% h% m% s') aujourd'huibackuppath = backup_path + '/' + datetime # vérification si le dossier de sauvegarde existe déjà ou non. S'il n'est pas existant.Essayez: OS.stat (aujourd'huibackuppath) sauf: OS.MKDIR (TodayBackuppath) # code pour vérifier si vous souhaitez prendre une seule sauvegarde de base de données ou assurer plusieurs sauvegardes dans DB_NAME.Imprimer ("Vérifier le fichier des noms de bases de données.") Si OS.chemin.existant (db_name): file1 = open (db_name) multi = 1 print ("Fichier de bases de données trouvé…") print ("Démarrage de la sauvegarde de tous les DB répertoriés dans le fichier" + db_name) else: print ("Fichier de données non trouvé…") Imprimer ("Démarrage de la sauvegarde de la base de données" + DB_NAME) Multi = 0 # Processus de sauvegarde de la base de données réelle de démarrage.si multi: in_file = open (db_name, "r") flength = len (in_file.lecture lines ()) dans_file.close () p = 1 dbfile = open (db_name, "r") tandis que p <= flength: db = dbfile.readline() # reading database name from file db = db[:-1] # deletes extra line dumpcmd = "mysqldump -h " + DB_HOST + " -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > "+ tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (dumpcmd) gzipcmd = "gzip" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (gzipcmd) p = p + 1 dbfile.close () else: db = db_name dumpcmd = "mysqldump -h" + db_host + "-u" + db_user + "-p" + db_user_password + "" + db + ">" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.système (dumpcmd) gzipcmd = "gzip" + tuyaux.Quote (aujourd'huibackuppath) + "/" + db + ".SQL "OS.System (gzipcmd) print ("") print ("Script de sauvegarde terminé") Print ("Vos sauvegardes ont été créées dans" "+ TodayBackuppath +" '' Directory ")

Exécuter le script Python

Après le téléchargement du script, faites l'exécutable du script à l'aide de la commande suivante

chmod + x dbbackup.py 

et exécuter ce script comme ci-dessous

python2 dbbackup.py 

Vous pouvez également planifier ce script pour s'exécuter quotidiennement à intervalle régulier en utilisant Crontab. Ajouter la commande ci-dessous dans Crontab.

0 2 * * * / usr / bin / python dbbackup.py 

En savoir plus sur Crontab à 20 exemples utiles pour planifier des emplois.

Merci! pour utiliser ce script. Si vous avez une suggestion pour mon script, n'hésitez pas à m'envoyer un e-mail ou à mettre un commentaire ci-dessous. Vos commentaires m'aideront à améliorer.