python - 定时任务,每天定时备份数据库

一、代码说话

# 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

你可能感兴趣的:(python,python)