python自動化腳本之備份mysql數據庫


綜合別人的python實現備份mysql的自動化腳本,centos7下用python3實現的腳本(python2的只需要修改下print的位置即可)

親測可執行,且服務器可以定義為其他服務器,未對數據庫名是否正確做判斷和處理(測試了僅僅輸出的備份文件里沒什么有效信息而已,不影響)

腳本如下:

 

 1 #!/usr/bin env python3
 2 import os
 3 import time
 4 import datetime
 5 #定義服務器,用戶名、密碼、數據庫名稱(多個庫分行放置)和備份的路徑
 6 DB_HOST = 'localhost'
 7 DB_USER = 'root'
 8 DB_USER_PASSWD = 'mypassword'
 9 DB_NAME = '/mnt/dbbackup/dbnames.txt'
10 BACKUP_PATH = '/mnt/dbbackup/mysql/'
11 
12 DATETIME = time.strftime('%Y%m%d-%H%M%S')
13 TODAYBACKUPPATH = BACKUP_PATH + DATETIME
14 
15 print("createing backup folder!")
16 #創建備份文件夾
17 if not os.path.exists(TODAYBACKUPPATH):
18         os.makedirs(TODAYBACKUPPATH)
19 
20 print("checking for databases names file")
21 
22 
23 #定義執行備份腳本,讀取文件中的數據庫名稱,注意按行讀寫,不校驗是否存在該庫
24 def run_backup():
25         in_file = open(DB_NAME,"r")
26         for dbname in in_file.readlines():
27                 dbname = dbname.strip()
28                 print("now starting backup database %s" %dbname)
29                 dumpcmd = "mysqldump -u" +DB_USER + " -p"+DB_USER_PASSWD+" " +dbname+" > "+TODAYBACKUPPATH +"/"+dbname+".sql"
30                 print(dumpcmd)
31                 os.system(dumpcmd)
32         file1.close()
35 #執行壓縮的函數
36 def run_tar():
37         compress_file = TODAYBACKUPPATH + ".tar.gz"
38         compress_cmd = "tar -czvf " +compress_file+" "+DATETIME
39         os.chdir(BACKUP_PATH)
40         os.system("pwd")
41         os.system(compress_cmd)
42         print("compress complete!")
43         #刪除備份文件夾
44         remove_cmd = "rm -rf "+TODAYBACKUPPATH
45         os.system(remove_cmd)
46 
47 #備份數據庫文件存在就執行備份和壓縮,否則退出
48 if os.path.exists(DB_NAME):
49         file1 = open(DB_NAME)
50         print("starting backup of all db listed in file "+DB_NAME)
51         run_backup()
52         run_tar()
53         print("backup success!")
54 else:
55         print("database file not found..")
56         exit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM