参考资料:https://www.cnblogs.com/M-98k/p/12674705.html
https://www.jianshu.com/p/d6d8d9f7f60c
详细的参考资料:https://www.cnblogs.com/intval/p/5763929.html
1、crontab -e 进入定时任务编辑界面
如上,输入定时命令
00 01 * * * /bin/sh ~/database_backup.sh
如果进入的‘GNU nano 2.5.3’输入框,请使用‘ctr+O’进行保存,然后‘ctr+X’退出。
2、查看生成的定时任务文件
cd /var/spool/cron/crontabs
3、其他常用命令
crontab -l 查看当前用户的定时任务列表
crontab -r 清空当前用户的定时任务列表
4、数据库mysqldump安装
yum -y install mysql-client / apt-get install mysql-client
5、脚本文件database_backup.sh如下:
#!/bin/bash
dbpwd='123456'
dbuser='root'
hosts=(106.259.12.60 )
port=7083
DATE=`date "+%Y-%m-%d"`
save_sql_file=`date "+%H-%M-%S"`
save_sql_name=$save_sql_file".sql"
BACKUP_PATH=/home/gaofei/project/db_bachup/follow_up_visit/v2
LOG=$BACKUP_PATH/$DATE/$save_sql_file"backup.log"
echo ${LOG}
keep_backup_days=10
# if BACKUP_PATH doesn't exists,mkdir
[ -d $BACKUP_PATH ] || mkdir -p $BACKUP_PATH/$DATE
if [ !-d$BACKUP_PATH/$DATE ];then
mkdir -p $BACKUP_PATH/$DATE
fi
for host in ${hosts[*]}
do
alldb=(`echo show databases|mysql -u$dbuser -p$dbpwd -h$host -P$port --default-character-set=utf8mb4 |grep -v "information_schema\|mysql\|performance_schema\|sys\|Database"`)
echo -e "=================== $host $DATE `date +%T` DUMP Begin ==============" >>$LOG
/usr/local/mysql/bin/mysqldump -u$dbuser -p$dbpwd -h$host -P$port --default-character-set=utf8mb4 --single-transaction --master-data=2 --triggers --routines --events --complete-insert --set-gtid-purged=OFF --databases ${alldb[*]} >$BACKUP_PATH/$DATE/$save_sql_name 2>>$LOG
echo -e "=================== $host $DATE `date +%T` DUMP End ================ " >>$LOG
if [ $? -eq 0 ];then
echo "$(date +%F%T) $host backup is Success and End" >> success.txt
find $BACKUP_PATH -mtime +1 -type d -exec rm -rf {} \;
fi
done
# mysqldump -uroot -p123456 -h111.205.137.59 -P7083 --default-character-set=utf8mb4 --single-transaction --master-data=2 --triggers --routines --events --complete-insert --set-gtid-purged=OFF --databases follow_up_db2.0 >> /home/gaofei/project/db_bachup/follow_up_visit/v2/111.sql
完成后重新加载/etc/init.d/crond restart 或者 /etc/init.d/crond restart ,看到ok字样表名重新加载成功。
6、在运行sh文件之前,请先转义:
sed -i 's/\r$//' xxx.sh
7、定时任务简介
crontab每分钟定时执行:
*/1 * * * * service mysqld restart //每隔1分钟执行一次
*/10 * * * * service mysqld restart //每隔10分钟执行一次
crontab每小时定时执行:
0 */1 * * * service mysqld restart //每1小时执行一次
0 */2 * * * service mysqld restart //每2小时执行一次
crontab每天定时执行:
0 10 * * * service mysqld restart //每天10点执行
30 19 * * * service mysqld restart //每天19点30分执行
crontab每周定时执行:
0 10 * * 1 service mysqld restart //每周一10点执行
30 17 * * 5 service mysqld restart //每周五17点30分执行
crontab每年定时执行:
0 10 1 10 * service mysqld restart //每年的10月1日10点执行
0 20 8 8 * service mysqld restart //每年的8月8日20点执行
8、mysql导入定时生成的文件
(1)、从mysql中导出数据库test:
在终端运行:mysqldump -h localhost -u root -p test > /home/chuzj/daochu.sql
其中localhost是服务器名字 test是数据库名字,其后可以直接跟表名