#!/usr/bin/python
#################################################### #########
#
# 这个python脚本用于mysql数据库备份
# 使用 mysqldump 和 tar 实用程序。
#
# 撰稿:拉胡尔·库马尔
# 网站:http://tecadmin.net
# 创建日期:2013 年 12 月 3 日
# 最后修改时间:2018 年 8 月 17 日
# 测试使用:Python 2.7.15 和 Python 3.5
# 脚本修订版:1.4
#
#################################################### ########
# 导入需要的python库
import os
import time
import datetime
import pipes
# MySQL 数据库详细信息要对其进行备份。确保以下用户有足够的权限来进行数据库备份。
# 要进行多个数据库备份,请创建任何文件,例如 /backup/dbnames.txt,并将数据库名称每行一个并分配给 DB_NAME 变量。
DB_HOST = '本地主机'
DB_USER = 'root'
DB_USER_PASSWORD = '_mysql_用户_密码_'
#DB_NAME = '/backup/dbnameslist.txt'
DB_NAME = '要备份的数据库名称'
备份路径 = '/备份/dbbackup'
# 获取当前日期时间以创建单独的备份文件夹,例如“20180817-123433”。
DATETIME = time.strftime('%Y%m%d-%H%M%S')
今天备份路径 = 备份路径 + '/' + DATETIME
# 检查备份文件夹是否已存在。如果不存在将创建它。
try:
os.stat(今天备份路径)
except:
os.mkdir(今天备份路径)
# 用于检查是否要进行单个数据库备份或在 DBNAME 中分配多个备份的代码。
print (“检查数据库名称文件。”)
if os.path.exists(DB_NAME):
file1 = open(DB_NAME)
multi = 1
print (“发现数据库文件...”)
print (“开始备份文件中列出的所有数据库” + DB_NAME)
else:
print (“找不到数据库文件...”)
print (“开始备份数据库” + DB_NAME)
multi = 0
# 开始实际的数据库备份过程。
if multi:
in_file = open(DB_NAME,"r")
flength = len(in_file.阅读行())
in_file.close()
p = 1
dbfile = open(DB_NAME,"r")
while p <= flength:
db = dbfile.readline() # 从文件中读取数据库名称
db = db[:-1]# 删除多余的行
dumpcmd = “mysqldump -h” + DB_HOST + " -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + pipes.quote(今天备份路径) + "/" + db + ".sql"
os.system(dumpcmd)
gzipcmd = "gzip " + pipes.quote(今天备份路径) + "/" + db + ".sql"
os.system(gzipcmd)
p = p + 1
dbfile.close()
else:
db = DB_NAME
dumpcmd = “mysqldump -h” + DB_HOST + " -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + pipes.quote(今天备份路径) + "/" + db + ".sql"
os.system(dumpcmd)
gzipcmd = "gzip " + pipes.quote(今天备份路径) + "/" + db + ".sql"
os.system(gzipcmd)
print ("")
print (“备份脚本完成”)
print (“您的备份已创建于 '” + 今天备份路径 + “' 目录”)