综合别人的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()
来源:oschina
链接:https://my.oschina.net/u/4265383/blog/3887772