1 #!/usr/bin/python 2 ########################################################### 3 # 4 # This python script is used for mysql database backup 5 # using mysqldump utility. 6 # 7 # Written by : Rahul Kumar 8 # Website: http://tecadmin.net 9 # Created date: Dec 03, 2013 10 # Last modified: Dec 03, 2013 11 # Tested with : Python 2.6.6 12 # Script Revision: 1.1 13 # 14 ########################################################## 15 16 # Import required python libraries 17 import os 18 import time 19 import datetime 20 21 # MySQL database details to which backup to be done. Make sure below user having enough privileges to take databases backup. 22 # To take multiple databases backup, create any file like /backup/dbnames.txt and put databses names one on each line and assignd to DB_NAME variable. 23 24 DB_HOST = 'localhost' 25 DB_USER = 'root' 26 DB_USER_PASSWORD = '_root_user_password_' 27 #DB_NAME = '/backup/dbnames.txt' 28 DB_NAME = 'db_name' 29 BACKUP_PATH = '/backup/dbbackup/' 30 31 # Getting current datetime to create seprate backup folder like "12012013-071334". 32 DATETIME = time.strftime('%m%d%Y-%H%M%S') 33 34 TODAYBACKUPPATH = BACKUP_PATH + DATETIME 35 36 # Checking if backup folder already exists or not. If not exists will create it. 37 print "creating backup folder" 38 if not os.path.exists(TODAYBACKUPPATH): 39 os.makedirs(TODAYBACKUPPATH) 40 41 # Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME. 42 print "checking for databases names file." 43 if os.path.exists(DB_NAME): 44 file1 = open(DB_NAME) 45 multi = 1 46 print "Databases file found..." 47 print "Starting backup of all dbs listed in file " + DB_NAME 48 else: 49 print "Databases file not found..." 50 print "Starting backup of database " + DB_NAME 51 multi = 0 52 53 # Starting actual database backup process. 54 if multi: 55 in_file = open(DB_NAME,"r") 56 flength = len(in_file.readlines()) 57 in_file.close() 58 p = 1 59 dbfile = open(DB_NAME,"r") 60 61 while p <= flength: 62 db = dbfile.readline() # reading database name from file 63 db = db[:-1] # deletes extra line 64 dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql" 65 os.system(dumpcmd) 66 p = p + 1 67 dbfile.close() 68 else: 69 db = DB_NAME 70 dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql" 71 os.system(dumpcmd) 72 73 print "Backup script completed" 74 print "Your backups has been created in '" + TODAYBACKUPPATH + "' directory"
# chmod +x dbbackup.py
# python dbbackup.py 做定时任务执行: crontab -e 0 2 * * * /usr/bin/python dbbackup.py