crontab的相关设置&linux定时备份数据库

时间:2023-03-09 04:03:55
crontab的相关设置&linux定时备份数据库

对于才了解crontab的人来说,应该按照以下的步骤来设置crontab

1.首先要检查是否装了crontab

http://blog.sina.com.cn/s/blog_4881040d01011gp4.html

2.安装crontab

cd /etc/cron.d

yum install crontabs

3.crontab的启动与关闭

service crond statu 

service crond start / stop /restart

4.crontab的语法

* * * * * (分 时 天 月 年) 

5.写入文件以检测crontab是否执行

1 * * * * /bin/echo 'date' > /dev/console

1 * * * * date >> /backup/test.txt  (写入文件,更好检测) 

好啦 crontab 建好啦,该定时备份数据库啦

1. 备份数据库语句 (你可以用下面的语句直接运行,看看备份的数据对不对)

for db in `echo "show databases" | mysql -p321| grep -v Database | grep -v mysql | grep -v test | grep -v info`;do mysqldump -p321 $db > $db-$(date +%y-%m-%d:%H:%M).sql;done

2.写bash文件 

     #yangling teached by qingrui
#create by 2015-07 #if [ -d /backup/dbback/$(date+%y_%m_%d) ];then
# bkfs=`wc -l /backup/dbback/$(date + %y_%m_%d)`
# if [bkfs !eq 0 ];then #if [ ! -d /backup/dbback/$(date + %y_%m_%d) ];then Days_backup_dir=$(date +%y_%m_%d) if [ ! -d /backup/dbback/${Days_backup_dir} ];then
mkdir -p /backup/dbback/${Days_backup_dir};
fi dbs=`ls /backup/dbback/${Days_backup_dir}/ | wc -l` if [ ${dbs} -eq 0 ];then
for db in `echo "show databases" | mysql -p321| grep -v Database | grep -v mysql | grep -v test | grep -v info`;do mysqldump -p321 $db > /backup/dbback/${Days_backup_dir}/$db-$(date +%y-%m-%d:%H:%M).sql;done
fi

  

3.启动crontab

* 03 * * * /backup/back-yl.sh 2>&1 >> /var/log/mysql-backup.log

crontab的相关设置&linux定时备份数据库

在mysql备份的时候报错:(虽然我的表不是这个表,我是直接baidu出来的答案)

mysqldump: Got error: 1146: Table 'chj-goods-db.t_basegoods' doesn't exist when using LOCK TABLES

在表里面找不到该表,后来google了一下是该表删了,但是mysql的表文件还在

解决办法

直接删除t_basegoods.frm文件就可以了

个人情况:我直接在navicate中删除,刷新 表确实也不存在啦