本文介绍了Ubuntu下设置mysql自动定时备份的方法
实验平台:
OS: 为某厂商云平台下的Ubuntu云服务器
DB: mysql
步骤:
一.创建执行备份的程序
二.让其自动定时执行
方法:
步骤一:
1.创建一个文件夹,用来放你备份的文件。
地址可以你定,下面是我的方式
注:下文这种颜色的表示在命令行中输入的~
2.创建备份程序
#nano /usr/sbin/bakmysql
注:表示使用nano编辑器(nano是一个比vi简单一些的文本剪辑器。),在/usr/sbin/目录下创建名为bakmysql的文件
进入编辑器后,输入:
rq=`date +%Y%m%d`
mysqldump --all-databases -u root -p密码 >/home/ubuntu/data_backup/mysql$rq.sql
怎么退出nano?编辑界面下面有提示,看不懂?^+O是啥意思?^就是Ctrl,表示按Ctrl+O,写入文件,然后按回车,让你确定路径和文件名,回车就是了。然后Ctrl+X,退出。其它用法自行参考nano用法。
注:第一行是定义一个变量rq(日期),注意标点符号是`(英文状态下按Esc下面那个键)不是',然后取了系统的date中的年Y月m日d,date和+号之间有空格。
第二行,使用mysqldump命令(mysql自带)来备份数据库;参数 --all-databases是指备份所有数据库,如果只想备份某个数据库,替换为该数据库的名字即可(不用加-);-u后面输入空格和数据库的用户名root(确保有权限);-p后面不带空格,输入密码;>表示重定向,后面的参数表示文件存放的地址和文件名,其中$rq表示引用第一行的变量rq,这样备份出来的文件就是"mysql20141201.sql"这样子。
3.为备份程序添加权限:
直接使用暴力的:
#chmod 777 /usr/sbin/bakmysql
本来使用chmod +x 就可以的,表示+(添加)x(执行)的权限,这样会安全一些,但是如果你的可能使用其它用户来执行可能会出现permission denied的情况,所以直接暴力777了,你懂的。
4.测试这个备份程序
不用我告诉你这么执行这个文件了吧o(╯□╰)o,执行完看data_backup文件夹下有没有那个sql文件,就对了。
步骤二:
1.修改/etc/crontab
#nano -w /etc/crontab
注:-w表示不使用自动换行,这个在修改系统文件时必须加上,避免出现问题,在这里可以加可以不加,安全起见还是我是加了~
在下面添加
30 3 * * * root /usr/sbin/bakmysql
注:表示每天3点30分以root用户执行/usr/sbin/bakmysql
2.重启crontab
# /etc/init.d/crond restart
出错处理:如果执行2出现提示:
cron: can’t lock /var/run/crond.pid, otherpid may be 2699: Resource temporarily unavailable
解决办法: rm -rf /var/run/crond.pid