1 #/usr/bin/python
2 # -*- coding:utf-8 -*-
3
4 import ConfigParser
5 import os
6 import subprocess
7 import re
8 import datetime
9
10 """
11 备份数据库
12 删除数据库
13 导入数据库
14 """
15
16 mysqlbackup_Dir = 'mysqlbackup' # 备份mysql的目录 默认在当前目录下创建这个目录
17 now_time = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M')
18 query_data_file = '/tmp/log.mysqlDatabaseBackupForCoremail_%s' % now_time # 输出的日志
19
20 cf = ConfigParser.ConfigParser()
21 datasource = '/home/coremail/conf/datasources.cf'
22 cf.read(datasource)
23 mysql_bin = "/home/coremail/mysql/bin/mysql"
24 db_server = cf.get('cm_md_db', 'Server')
25 db_port = cf.get('cm_md_db', 'Port')
26 db_user = cf.get('cm_md_db', 'User')
27
28 def get_mysql_password(): # 获取数据库的登陆密码
29 with open(datasource) as f:
30 for line in f:
31 password_line = re.search('([Ee]ncpassword)', line)
32 if password_line: # 将加密的密码解密
33 encpassword = line.strip().split('"')[1]
34 db_password_stdout = subprocess.Popen('/home/coremail/bin/cmxdb decrypt %s' % encpassword, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
35 db_password = db_password_stdout.stdout.readlines()[1]
36 break
37 password_line2 = re.search('([Pp]assword)', line)
38 if password_line2: # 获取没有加密的密码
39 db_password = line.strip().split('"')[1]
40 break
41 return db_password
42
43
44 def connect_mysql(mysqlDatabase):
45 mysqlbackup_file = os.path.join(mysqlbackup_Dir, '%s_%s.sql' % (mysqlDatabase.strip('"'), now_time))
46 print '/home/coremail/mysql/bin/mysqldump -u%s -p%s -h%s -P%s --databases %s > %s' % (db_user, get_mysql_password().strip(), db_server, db_port, mysqlDatabase, mysqlbackup_file)
47
48 def backup_mysql():
49 print "备份mysql数据库"
50
51
52 def delete_mysql_database():
53 pass
54
55 def import_mysql_database():
56 pass
57
58
59 if __name__ == '__main__':
60 connect_mysql("cmxt")