MySQL备份python代码
2024-09-03 07:40:05
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
最新文章
- 关于AJAX 的交互模型、交互流程及代码示范
- matplotlib 基础
- @font-face usage
- Java中的大数处理类BigInteger和BigDecimar浅析
- 给Asp.net MVC Forms 验证设置角色访问控制
- struts2处理.do后缀的请求
- mouse的各种事件
- JS base64 加密和解密
- Word,Excel,PowerPoint协作实用功能
- System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止
- 用mpvue构建微信小程序
- SQL Where in (1,2,3,4) 换成字段一列的值
- nginx的80端口跳转到443
- 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
- jquery ajax中 php前台后台文件中编辑都是uft-8,返回数据还是乱码
- THINKPHP3.2.3增加阿里云短信接口思路整理
- WPF 自定义ComboBox样式,自定义多选控件
- liunx ubuntu java 环境的配置
- Spring Boot gradle 集成servlet/jsp 教程及示例
- 单元测试 使用 Effort 内存数据库 报错
热门文章
- Springboot Actuator之八:actuator的执行原理
- Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考
- C++完全二叉树的权值
- HDU校赛 | 2019 Multi-University Training Contest 4
- 「UNR#2」黎明前的巧克力
- Linux学习笔记之秋水BBR一键部署
- C#使用HttpWebRequest发送数据和使用HttpWebResponse接收数据的一个简单示例
- 推荐算法之E&;E
- 电脑远程连接windows阿里云服务器解决卡顿【小白教程】
- 当前标识(IIS APPPOOL\DefaultAppPool)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”的写访问权限