一.检查是否安装了本地任务 Crontab
systemctl status crond
二.如果没有就安装呀
yum install -y vixie-cron
yum install -y crontabs
然后启动: systemctl start crond.service
三.crontab命令结构为 时间+动作,其时间有分、时、日、月、周,操作符包括*取值范围内所有数字,/每过多少个数字,-从x到z,散列数字
例如:
1. 在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * /root/bin/backup.sh
2. 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
59 11 * * 1,2,3,4,5 /root/bin/backup.sh
下面例子与上面的例子效果一样:
59 11 * * 1-5 /root/bin/backup.sh
3. 每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh
4. 每个月的第一天 1:10 p.m 运行
10 13 1 * * /root/bin/full-backup.sh
5. 每个工作日 11 p.m 运行。
0 23 * * 1-5 /root/bin/incremental-backup.sh
三.利用crontab备份储存位置
MYSQL备份数据库需要使用mysql提供的备份语句,如果单纯COPY数据库表文件需要对数据库进行分离操作,所以通常会直接使用数据库提供的备份语句。创造数据库备份脚本
cd /usr/local
mkdir xym
touch sqlAutoBack.sh
vi sqlAutoBack.sh
并在sqlAutoBack中编写如下脚本
#!/bin/sh
#Database info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="dailian"
#Other vars
BIN_DIR="user/bin" #the mysql bin path
BCK_DIR="/mnt/mysqlBackup" #the backup file directory
DATE=`date +%F`
#备份数据库
$BIN_DIR/mysqldump --opt -u $DB_USER -p $DB_PASS -h #$DB_HOST $ DB_NAME > $BCK_DIR/db_$DATE.sql
以上编写保存后修改文件读写权限,通过crontab -e 编写定时任务执行SQL备份脚本
00 05 * * * /bin/sh/usr/local/xym/sqlAutoBak.sh
恢复数据库:
mysql -u root -p testDB < /mnt/mysqlBackup/db_20200602.sql