1. 编写备份脚本
1) vim /home/task/***_back.sh
#!/bin/bash
#数据库认证
user="****"
password="*******"
host="*.*.*.*"
db_name="***"
#其它
backup_path="/home/task/bak/"
new_date='date "+%Y%m%d"'
old_date='date -d "-30 day" "%Y%m%d"'
new_tab="${backup_path}${db_name}${new_date}.sql"
old_tab="${backup_path}${db_name}${old_date}.sql"
#打印日志
echo "${new_date} --- ${old_date}"
echo "${new_tab}
echo "${old_tab}
#Dump数据库到sql文件
/usr/local/mysql/bin/mysqldump -h$host -u$user -p$password $db_name > $new_tab
echo "['date "+%Y-%m-%d %H:%M:%S"'] back end."
echo "删除30天之前的备份文件 ${old_tab}"
rm -rf $old_tab
上面有一点注意:
mysqldump 命令最好用全路径,
2)创建shell脚本中的路径
mkdir /home/task/bak
3) 保存后设置shell脚本权限可执行
chmod u+x *_back.sh
2. 设置定时任务
1) corntab -e 编写定时任务
-e (edit) -l(list) 查看当前系统所有定时任务
2) 编辑定时任务
0 0 * * * /home/task/**_back.sh >> /home/task/log/**_bak.log 2>&1 &
命令解析:
(linux)corn 表达式,注意与spring的cron表达式不同
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 命令
在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。
用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
正斜线(/)可以用来指定间隔频率。在范围后加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务
>> 将备份数据库时的日志(echo)重定向到 /home/task/log/**_bak.log
2>&1 指将标准输出、标准错误指定为同一输出路径
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。
STDIN是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端;STDERR是标准错误,默认将输出结果输出至终端。
由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
&
3. 查看备份文件(进行备份可用性恢复测试)
搭建相同数据库执行sql