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

写程序操作数据库时,SQL疏漏可能导致大批量更改或删除数据,完善的备份操作很有必要。本文介绍对MySQL数据库进行完善备份的操作,思路是一小时备份一次,实现方式为用crontab每小时执行备份脚本,还可定时将备份文件移至挂载盘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当你在写程序对数据库操作时,当有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

              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值