一 : 为什么要进行数据库的备份?
最主要的原因:尽可能地减少损失,包括时间上、精神上和金钱上的损失。很多人都不注意备份数据,以致在发生问题后丢失大量的重要数据。要知道,在地球上网是很危险的,即使做好安全预防措施,也难免会发生不可预想的问题。因此,数据备份是日常必不可少的操作。数据库的备份用mysqldump
二 : 定时自动备份数据库
由于数据库如此重要,以至于我们要经常备份数据库,但是,由于白天的时候,数据库处于活跃的状态,这时候备份数据库可能会漏存数据,更有可能会导致出错,因此一般会选择在凌晨备份数据库。问题来了,难道要一个数据库管理员凌晨两点起床备份数据库?这时候LINUX的CRONTAB定时任务排上用场了!有关CRONTAB的内容请参考我的另一篇博客 CRONTAB定时任务(window系统可以使用 ‘任务计划’)
三 : 编写一个shell脚本,执行备份
我们可以在根目录下编写这么一个脚本 : /serverBack/mysqlBack.sh
脚本内容如下:
方法一:
##使用mysqldump备份数据库test
mysqldump -uroot -ppasswd test >> /serverBack/dbBack/test_$(date+”%Y_%m_%d”).sql
##找到/serverBack/dbBack/下文件名称以test_开头,以 .sql 结尾的文件,并且是7天前系统修改过的文件,将其删除
find /serverBack/dbBack/ -mtime +7 -name “test_*.sql” -exec rm -rf {} \;
方法二:
mysqldump -uroot -ppwd dbname > dir/db_date +%F
.sql
保留近一周的备份文件,更早的删除
find /dir -mtime +7 -name”db_*.sql” -exec rm -rf {} \;
方法三:
filename=’date +%y%m%d’
mysqldump -uroot-proot test >>/serverBack/dbBack/$filename.sql
比较齐全,常用的shell脚本内容如下:
## 记录日志
echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup start" >> /serverBack/dbBack/dbBackLog.log
## 开始备份
mysqldump -uroot -ppwd test >> /serverBack/dbBack/test_$(date +"%Y-%m-%d").sql
## $? 判断上一次操作是否成功,备份成功返回0
if [ 0 -eq $? ];then
if [ -f "/serverBack/dbBack/test_$(date +"%Y-%m-%d").sql" ];then
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup success!" >> /serverBack/dbBack/dbBackLog.log
else
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup fail!" >> /serverBack/dbBack/dbBackLog.log
fi
else
echo $(date +"%Y-%m-%d %H:%M:%S") "test Database backup error!" >> /serverBack/dbBack/dbBackLog.log
fi
echo "---------------------------------------------------" >> /serverBack/dbBack/dbBackLog.log
## 删除七天前的数据,防止数据冗余
find /serverBack/dbBack/ -mtime +7 -name "test_*.sql" -exec rm -rf {} \;
## find后面的';'不能省略
此时,我们在命令行模式下执行该脚本: sh /serverBack/mysqlBack.sh
此时我们就可以备份数据库了,但是我们还没有实现定时自动备份。赶紧测试一下你能不能备份成功吧!
四 : 实现定时自动备份数据库
有关CRONTAB的内容请参考我的另一篇博客 crontab定时任务
crontab –e ##编辑定时任务
添加定时任务内容:
##每天定时15:00:00 执行脚本 /serverBack/mysqlBack.sh
00 15 * * * sh /serverBack/mysqlBack.sh
命令:
crontab –e ##编辑定时任务
crontab –r 删除所有定时任务
crontab –l 列出所有定时任务
转:https://blog.csdn.net/baidu\_30000217/article/details/51106192