1、mysql备份命令是mysqldump,自动执行可以用cron,但是文件名需要带有时间标志,shell处理起来很麻烦,我就选择了python来解决
2、文件名用time模块来解决,执行系统命令用os.system,
需要注意的是,我是在CenOS6.5上测试的,默认安装的python不包含time,需要更新,命令为yum install python
3、代码如下
#file_name create_bf.py
import os
import time
#备份文件目录
file_path = '/opt/mysql_backup/'
command_path = '/opt/lampstack-5.4.26-0/mysql/bin/'
#时间格式
time_now = time.strftime('%Y-%m-%d-%H-%M-%S')
#备份文件名
mysql_back_file_name = 'mysql-'+time_now+'.sql'
#压缩文件名
mysql_gz_file_name = 'mysql-'+time_now+'.gz'
#备份文件
os.system(command_path+'mysqldump dbname -uroot -proot >'+file_path+mysql_back_file_name)
#压缩文件
os.system('cd '+file_path+';tar zcvf '+mysql_gz_file_name+' '+mysql_back_file_name)
#删除原始文件
os.system('rm '+file_path+mysql_back_file_name)
需要注意的一点是,在压缩文件时,需要进入备份目录来执行,所以有一个cd命令,如果写成两个os.system,好像不好用
最终创建的文件名类似如下
mysql-2014-04-15-11-20-01.gz
4、cron设置
crontab -e
0 1 * * * python /opt/mysql_backup/create_bf.py
代表每天晚上一点创建一个备份