千家信息网

mysql mysqldum备份脚本

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章主要讲如何使用shell实现mysql全量,增量备份。增量备份在周一-周六凌晨3点,会复制mysql-bin.00000*到指定目录;而全量备份则使用mysqldump将所有的数据库导出,每周
千家信息网最后更新 2025年11月08日mysql mysqldum备份脚本

本篇文章主要讲如何使用shell实现mysql全量,增量备份。增量备份在周一-周六凌晨3点,会复制mysql-bin.00000*到指定目录;而全量备份则使用mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000*。然后对mysql的备份操作会保留在bak.log文件中。如下图:

开始:2013年05月02日 15:10:57 结束:2013年05月02日 15:12:16 20130502.sql.tgz succ是由DBFullyBak.sh产生的,每周备份一次;mysql-bin.000001 copying;mysql-bin.000002 skip!;2013年05月02日 16:53:15 Bakup succ!则是由DBDailyBak.sh产生的,每天一次。

实现:

1.编写全量备份脚本


# vim /root/DBFullyBak.sh //添加以下内容

#!/bin/bash

# Program

# use mysqldump to Fully backup mysql data per week!

# History

# 2013-04-27 guo first

# Path

# ....

BakDir=/home/mysql/backup

LogFile=/home/mysql/backup/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y年%m月%d日 %H:%M:%S"`

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz

if [ ! -d "$BakDir" ]; then

mkdir -p $BakDir

fi

cd $BakDir

/usr/local/mysql/bin/mysqldump -uroot -p123456 --quick --all-databases --flush-logs --delete-master-logs --single-transaction > $DumpFile

/bin/tar czvf $GZDumpFile $DumpFile

/bin/rm $DumpFile

Last=`date +"%Y年%m月%d日 %H:%M:%S"`

echo 开始:$Begin 结束:$Last $GZDumpFile successful!!! >> $LogFile

cd $BakDir/daily

rm -f *


2.编写增量备份脚本

# cat /root/DBDailyBak.sh //内容为下

#!/bin/bash

# Program

# use cp to backup mysql data everyday!

# History

# 2013-05-02 guo first

# Path

# ....

BakDir=/home/mysql/backup/daily

BinDir=/data/mysql

LogFile=/home/mysql/backup/bak.log

BinFile=/data/mysql/mysql-bin.index

if [ ! -d "$BakDir" ]; then

mkdir -p $BakDir

fi

/usr/local/mysql/bin/mysqladmin -uroot -p123456 flush-logs

#这个是用于产生新的mysql-bin.00000*文件

Counter=`wc -l $BinFile |awk '{print $1}'`

NextNum=0

#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。

for file in `cat $BinFile`

do

base=`basename $file`

#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $Counter ]

then

echo $base skip! >> $LogFile

else

dest=$BakDir/$base

if(test -e $dest)

#test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。

then

echo $base exist! >> $LogFile

else

cp $BinDir/$base $BakDir

echo $base copying >> $LogFile

fi

fi

done

echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup successful! >> $LogFile



3.设置crontab任务,每天执行备份脚本


复制代码 代码如下:



# crontab -l //内容为下

#每个星期日凌晨3:00执行完全备份脚本

0 3 * * 0 /root/DBFullyBak.sh >/dev/null 2>&1

#周一到周六凌晨3:00做增量备份

0 3 * * 1-6 /root/DBDailyBak.sh >/dev/null 2>&1


备份 文件 脚本 增量 内容 代码 是由 两个 任务 数据 数据库 文件名 文章 星期 每周日 目录 目标 天一 循环 检测 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库流水翻一倍写入 免费服务器防火墙软件 erp软件开发工程是怎么入行 江苏计算机软件开发价钱是多少 jsp在线书店数据库 纯港股互联网科技 生态环境局网络安全自查自评报告 数据库查找没有电话号码的人 成都app软件开发价格 普陀区车载网络技术创新服务 多个服务器上的文件怎么管理 联想服务器融资 软件开发企业中程序员辛苦吗 软件开发公司有会计吗 无法验证ssl服务器 丹东众艺网络技术有限公司 智能交通和软件开发有关系吗 自动售货机系统数据库设计 网络安全持续 江苏嘉趣网络技术公司怎么样 微软sql数据库费用 深圳市融川成医网络技术 长宁区正规网络技术服务质量保证 数据库好找工作嘛 私人云服务器搭建 网络安全法 规定 个人 湖南采购管理软件开发 我的世界三百人服务器运营成本 云服务器真的安全吗 互联网科技创新的重要性
0