0%

mysql_schedule_backup定时备份mysql工具

mysql_schedule_backup是定时、全量备份指定mysql数据库的程序。可设置是否压缩备份文件、备份文件保留的天数。
使用场景是简单的备份逻辑,通过schedule就能满足的备份逻辑,没有DAG流程。

Requirements

  • schedule==0.4.2

How to run

  • 先安装schedule
1
pip install schedule
  • 根据demo配置conf.py中相关的备份信息
  • 修改mysql_schedule_backup.py文件中schedule.every().day.at("06:00").do(backup_mysql, bacup_conf)为你的业务时间
  • 在mysql_schedule_backup目录下运行
1
python mysql_schedule_backup.py

备份结果

  • 备份是文件夹或者压缩文件,以备份时间为名称
  • 文件夹(压缩文件)里面分为*.sql*.json两类文件,其中conf.json为备份的配置文件,*.sql为备份的主文件,以datetime_database.sql方式命名
  • 最终的备份样例
1
2
3
4
5
└─20170611
├─20170611_sakila.sql
├─20170611_tmp.sql
├─20170611_world.sql
└─conf.json

Features

  • 使用schedule支持定时备份
  • 使用配置文件conf.py统一除了备份时间外的配置备份信息(schedule的定时计划比较复杂,没有放置到配置文件conf.py中,而是放在主程序mysql_schedule_backup.py
  • 支持多个数据库备份
  • 支持压缩备份文件
  • 支持设置备份文件保留时间
  • 备份文件中包含mysql_schedule_backup运行的配置信息

项目构成

1
2
3
4
└─mysql_schedule_backup
├─conf.py
├─mysql_schedule_backup.py
└─requirements.txt
  • requirements.txt:项目的requirements列表
  • mysql_schedule_backup.py:是备份运行的主程序,其中backup_mysql函数是与配置文件conf.py交互的主函数。如果定制配置文件的样式可以对backup_mysql函数进行相应的修改
1
2
3
4
5
6
7
8
9
10
if __name__ == "__main__":
SLEEP_TIME = 30
# 测试定时运行程序 每分钟运行一次
# schedule.every().minutes.do(backup_mysql)
# 每天固定时间运行程序
schedule.every().day.at("06:00").do(backup_mysql)

while True:
schedule.run_pending()
time.sleep(SLEEP_TIME)
  • conf.py:mysql_schedule_backup是定时的配置文件,可配置内容包括备份存放路径、备份保留时间、备份是否压缩、备份的数据库及表(支持多个库备份)。一般的备份文件如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
job = {
"setting": {
# 备份的根目录
"root": "F:/mysql_schedule_backup",
# 备份保持的时间
"keep_day": 60,
# 是否压缩备份
"is_zip": "true"
},
"db_connection": [
# 第一个要备份的库
{
"usr": "root",
"pwd": "mysql",
"host": "127.0.0.1",
"port": "3306",
"db_and_table": {
# "backup_database": ["backup_table_1", "backup_table_2", ...]
"tmp": [
"tb1",
"tb2"
],
# "backup_database": ["*"] # *默认全库备份
"world": [
"*"
]
}
},
# 第二个要备份的库
{
"usr": "root",
"pwd": "mysql",
"host": "127.0.0.1",
"port": "3306",
"db_and_table": {
# "backup_database": ["backup_table_1", "backup_table_2", ...]
"sakila": [
"*"
]
}
}
]
}

欢迎start

mysql_schedule_backup地址,欢迎start或者fork