这段时间接手运维的工作,刚开始就尝到了数据丢失的痛!老板抱怨,同事抱怨!都说先删库再跑路,我还不想跑!
下面是我的备份记录:(分4步)
1.编写备份执行文件sqlAutoBak.sh
1 #!/bin/sh 2 3 # Database info 4 DB_USER="数据库用户" 5 DB_PASS="数据库密码" 6 DB_HOST="localhost" 7 DB_NAME="数据库名" 8 9 # Others vars 10 BIN_DIR="/usr/local/mysql/bin" #the mysql bin path 11 BCK_DIR="/root/data_backups/timing" #备份文件位置 12 DATE=$(date "+%Y-%m-%d_%H:%M:%S") 13
14 # 备份命令
15 $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql
2.上传到服务器中,给文件sqlAutoBak.sh赋权限
# chmod 777 sqlAutoBak.sh
3.编辑定时任务
crontab -e
将下面语句加到任务中
17 17 * * * /bin/sh /root/data_backups/timing/sqlAutoBak.sh #(每天17时17分备份)
19 17 * * * /bin/sh /root/data_backups/timing/sqlAutoBak.sh #(每天17时19分备份)
19 17 * * * /bin/sh /root/data_backups/timing/sqlAutoBak.sh #(每天17时19分备份)
上面语句时间分别对应:
19 17 * * *
分 时 日期 月 星期
/root/data_backups/....对应执行文件位置!
注:多个任务就加多条任务语句,多个数据库就多加执行文件
4.重启crond
service crond restart //重启
service crond status //查看状态
Linux 系统下,如果已经有了Crond的作业,但是发现它并没有执行的话,可能有下面几个原因:
1、crond服务没有启动;
2、crontab没有按要求添加;
3、crontab的使用者帐号受到限制;
4、脚本或者命令没有可执行权限;
5、服务器时间与本地时间的不同步;