版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fmyzc/article/details/82223850
前言
当你在写程序对数据库操作时,当有sql疏漏的时候,那就可能会对数据库进行一个大批量的操作(更改/删除)。
这时,如果你之前对数据库没有进行一个比较完善的备份操作,那就是一场灾难。
下面讲的就是
如何对mysql数据库进行一个比较完善的备份操作?
思路
一个小时备份一次数据库
对于比较重要的系统,数据的重要性不言而喻,一个小时备份一次很有必要。当出现问题时,找到最近的那个节点,然后将数据导回。
实现
1.写crontab 每小时执行一次备份数据库的shell脚本
0 */1 * * * sh /root/bksql.sh >/dev/null 2>&1
2.写shell脚本去备份数据库
#!/bin/bash
d=`date +%Y-%m-%d-%H-%M` #时间
mysqldump -v --add-drop-table -u用户民 -p密码 数据库名 | gzip > /root/aaa/aaa.$d.sql.gz
#判断备份操作有没有出现问题,如出现问题,发送邮件提醒
if [ $? -ne 0 ]
then
echo `date` "DB backup failed." | mail -s " DB backup failed" 邮箱
exit 1
fi
3.可以定时将/root/aaa目录下的sql.gz文件移动到某个挂载盘中,如果本机器的硬盘出现问题,还有共享盘里的数据可以使用
每6小时进行一次移动到备份硬盘的操作
10 */6 * * * sh /root/mvbak.sh >/dev/null 2>&1
#!/bin/bash -x
if grep -qs /mnt/文件夹名 /proc/mounts;
#判断硬盘是否挂载上
then
find /mnt/文件夹名 -name '*.gz' -mtime +30 -exec rm {} \;
#将生成时间大于30天的删除掉
mv /root/aaa/*.gz /mnt/文件夹名
#将/root/aaa/下的所有.gz文件都移动到挂载盘下
else
echo `date` "Backup Mount failed." | mail -s "Backup Mount failed" 邮箱
#挂载失败,发送邮件提醒
fi