一、代码说话
# coding=utf-8
...
os.system('comand') 执行括号中的命令
os.path.exists 查看path是否存在
mysql命令 mysqldump -uusername -ppassword dbname > dbname.sql 导出整个数据库 (导出过程会锁表)
mysql命令 mysqldump --single-transaction -uusername -ppassword dbname > dbname.sql 导出整个数据库 (innodb 导出过程不锁表)
mysql命令 mysqldump --lock-tables=false -uusername -ppassword dbname > dbname.sql 导出整个数据库 (myisam 导出过程不锁表)
...
import os
import time
# from apscheduler.schedulers.blocking import BlockingScheduler
DB_USER = 'root'
DB_PASSWORD = '123456'
DB_NAME = 'yourdbname'
BACK_DIR = '/data/mysql/'
TODAY = time.strftime('%Y-%m-%d') # -%H-%M-%S
TODAY_DIR = BACK_DIR + TODAY
def backupsql():
# 如果目录不存在,新建目录
if not os.path.exists(TODAY_DIR):
os.makedirs(TODAY_DIR)
# 执行mysql命令,导出数据库到新建的文件
sqlcmd = "mysqldump --single-transaction -u" + DB_USER + " -p" + DB_PASSWORD + " " + DB_NAME + " > " + TODAY_DIR + "/" + DB_NAME + ".sql"
os.system(sqlcmd)
# 主函数
def main():
# 方式一
# ----------------- 使用 schedule 定时 --------------
# 经测试,schedule的定时任务没有生效 ...... 换一种思路。
# python代码只执行备份操作,定时任务由linux系统自带的定时任务实现
# schedule = BlockingScheduler()
# 每天凌晨1点执行定时任务
# schedule.add_job(func=backupsql, trigger='cron', month='*', day='*', hour='1', minute='0')
# 启动定时器
# schedule.start
# 方式二
# ----------------- 只 执行备份函数 --------------
backupsql()
# 执行主函数
if __name__ == '__main__':
main()
二、支持(方式二)
1、添加系统级别的定时任务
vim /etc/crontab
打开后的文件:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
最后一行添加
# 每天凌晨1点,定时执行testmysql.py
0 1 * * * root python /data/testmysql.py
查看日志
cat /var/log/cron
三、支持(方式一)
定时任务没启动,知道怎么写的望留言告知
1、安装apscheduler
apscheduler不是python内置的模块,所以需要安装
(1) 下载源码
https://pypi.python.org/pypi/APScheduler/#downloads
(2) 解压
tar -zxvf APScheduler-3.5.3.tar.gz
(3) 安装
# 进入目录
cd APScheduler-3.5.3
# 安装
python setup.py install
2、使用(脚本怎么用)
cd /data
vim test.py
# 将上面的代码内容粘贴到vim编辑器里面,保存并退出
# 执行python脚本
python test.py
3、开机启动
vim /etc/rc.local
# 在最后一行添加
python /data/test.py
# 保存并退出
# 修改test.py的执行权限
cd /data
chmod 777 test.py