python实现数据库自动备份
设计要求
- 执行环境centos 7 x64
- 每天某一个时刻自动执行备份操作,执行时间可调整
- 数据库备份文件保留在特定目录中,目录路径可设置
- 自动将当前备份版本发送到指定邮件地址,发件邮箱信息和收件邮箱信息可设置
- 对于每一个数据库备份书数据库备份文件保留七天,超过七天则删除
- 部署后,源代码不泄露
实现
- python如何在centos上实现定时执行
使用Linux定时任务功能Cron即可达到目标。在此之前,请确保服务器时区设置和当前所在时区一致。
// 命令行输入
crontab -e
// 加入这一行即可实现每天凌晨两点执行数据库备份:
0 2 * * * python /path/source.py
crontab命令基本用法
M H D m d 要执行的命令
* M H D 代表: 分钟(0-59) 小时(0-23) 天(1-31)
* m d 代表:月(1-12) 周(0-6)
更多细节参照: https://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/
- 执行数据库备份操作
运行命令行mysqldump工具即可备份数据库。python自身提供的os包中有system命令可以执行shell命令行。
比如:import os os.system("echo HelloWorld"); # 在屏幕上输出HelloWorld,效果如下图。最后多输出一个0,是os.system的返回值,实际运行时不会输出这个0
mysqldump命令参数可以指定保存备份文件的目录,比如
// --password无需交互式输入密码
mysqldump -u root --password=对应的密码 数据库名称 > 导出文件名.sql
-
python发邮件
使用smtplib包,具体请参照(这里不多说):
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000 -
本分文件保留七天,超过七天删除
备份文件以日期命名,每次备份检测七天前文件是否存在,若存在删掉即可。
-
部署后,源代码不泄露
便以为pyc文件部署即可,
=====================================
测试发现gmail不能发送大于25m的附件
解决方案: 切换google drive,所有备份文件直接上传google drive