python实现数据库自动备份

楚天乐 1645 0 条

python实现数据库自动备份

设计要求

  1. 执行环境centos 7 x64
  2. 每天某一个时刻自动执行备份操作,执行时间可调整
  3. 数据库备份文件保留在特定目录中,目录路径可设置
  4. 自动将当前备份版本发送到指定邮件地址,发件邮箱信息和收件邮箱信息可设置
  5. 对于每一个数据库备份书数据库备份文件保留七天,超过七天则删除
  6. 部署后,源代码不泄露

实现

  1. 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/
  1. 执行数据库备份操作
    运行命令行mysqldump工具即可备份数据库。python自身提供的os包中有system命令可以执行shell命令行。
    比如:
    import os
    os.system("echo HelloWorld");  # 在屏幕上输出HelloWorld,效果如下图。最后多输出一个0,是os.system的返回值,实际运行时不会输出这个0

    微信图片_20180801170425.png

mysqldump命令参数可以指定保存备份文件的目录,比如

// --password无需交互式输入密码
mysqldump -u root --password=对应的密码 数据库名称 > 导出文件名.sql
  1. python发邮件
    使用smtplib包,具体请参照(这里不多说):
    https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000

  2. 本分文件保留七天,超过七天删除
    备份文件以日期命名,每次备份检测七天前文件是否存在,若存在删掉即可。
    微信图片_20180801172140.png

  3. 部署后,源代码不泄露
    便以为pyc文件部署即可,

=====================================

测试发现gmail不能发送大于25m的附件

解决方案: 切换google drive,所有备份文件直接上传google drive



发表我的评论
'
昵称 (必填)
邮箱 (必填)
网址