import os, time, pymysql, shutil

from apscheduler.schedulers.blocking import BlockingScheduler  # 定时任务

def getDatabaseNames():
"""
连接数据库
返回指定数据库的所有的表
"""
conn = pymysql.connect(host='10.100.102.224', port=3316, db='indexdb', user='root', passwd='root')
cur = conn.cursor()
cur.execute('show tables;')
tables = cur.fetchall()
cur.close()
conn.close()
return tables def db_bf(path):
"""
创建存储路径
并且备份指定数据库下的表
"""
path = path.strip()
path = path.rstrip("\\") if not os.path.exists(path): # 判断系统是否存在该路径
os.makedirs(path) # ,不存在则创建
tables = getDatabaseNames()
for table in tables:
try:
tablename = table[0]
# 导出db
cmd = "mysqldump -h%s -u%s -p%s %s > %s/%s.sql" % ('10.100.102.224','root', 'indexdb', tablename, folder, tablename)
print(cmd)
os.system(cmd) except Exception as e:
print(e)
return True
else:
return False def mysql_rm(path, timestr):
"""
删除备份目录下超过一定时长的文件
"""
# 列出目录下所有的备份
f = list(os.listdir(path))
print(f)
now_time = timestr[0:8]
# 设置超过的时间
days = 3
for i in f: exit_time = i[0:8]
update_time = int(exit_time) + days
# if update_time < int(now_time) or exit_time == now_time:
# 如果备份的数据超过规定的天数就删除了
if update_time < int(now_time):
shutil.rmtree(path + i)
# with open(self.__filerm_log, 'a') as file_log:
# file_log.write("%s删除备份文件%s \n" % (timestr[0:8], i)) # def hf_bf(path, db):
# """
# 把备份的数据恢复到指定的数据库
# """
# f = list(os.listdir(path))
#
# # for x in f:
# cmd = "mysql-u%s -p%s %s < %s/%s" % ('root', 'root', db, path, f[0])
# print(cmd)
# os.system(cmd) if __name__ == '__main__':
# 创建备份的存储路径,
timestr = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
folder = "mysql_data_bak/" + timestr
db_bf(folder)
# 恢复数据库备份
# hf_bf("mysql_data_bak/20191028114943",'ceshi')
scheduler = BlockingScheduler()
# 函数将会在6,7,8,11,12月的第3个周五的1,2,3点运行
# scheduler.add_job(db_bf,args=[folder,], trigger='cron', month='6-8,11-12', day='3rd fri', hour='0-3')
# 截止到2019-12-30 00:00:00,每周一到周五早上五点半运行
# scheduler.add_job(db_bf,args=[folder,], trigger='cron', day_of_week='mon-fri', hour=5, minute=30, end_date='2019-12-31')
# 每天14.39执行任务
scheduler.add_job(db_bf, args=[folder, ], trigger='cron', hour=14, minute=39)
try:
scheduler.start()
except (KeyboardInterrupt, SystemExit):
pass

最新文章

  1. 关于AJAX 的交互模型、交互流程及代码示范
  2. matplotlib 基础
  3. @font-face usage
  4. Java中的大数处理类BigInteger和BigDecimar浅析
  5. 给Asp.net MVC Forms 验证设置角色访问控制
  6. struts2处理.do后缀的请求
  7. mouse的各种事件
  8. JS base64 加密和解密
  9. Word,Excel,PowerPoint协作实用功能
  10. System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止
  11. 用mpvue构建微信小程序
  12. SQL Where in (1,2,3,4) 换成字段一列的值
  13. nginx的80端口跳转到443
  14. 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
  15. jquery ajax中 php前台后台文件中编辑都是uft-8,返回数据还是乱码
  16. THINKPHP3.2.3增加阿里云短信接口思路整理
  17. WPF 自定义ComboBox样式,自定义多选控件
  18. liunx ubuntu java 环境的配置
  19. Spring Boot gradle 集成servlet/jsp 教程及示例
  20. 单元测试 使用 Effort 内存数据库 报错

热门文章

  1. Springboot Actuator之八:actuator的执行原理
  2. Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考
  3. C++完全二叉树的权值
  4. HDU校赛 | 2019 Multi-University Training Contest 4
  5. 「UNR#2」黎明前的巧克力
  6. Linux学习笔记之秋水BBR一键部署
  7. C#使用HttpWebRequest发送数据和使用HttpWebResponse接收数据的一个简单示例
  8. 推荐算法之E&amp;E
  9. 电脑远程连接windows阿里云服务器解决卡顿【小白教程】
  10. 当前标识(IIS APPPOOL\DefaultAppPool)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限