关于mysql备份,程序猿应该知道的

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

              

猜你喜欢

转载自blog.csdn.net/fmyzc/article/details/82223850