MySQL数据库自动备份、删除脚本(含Linux、Windows)

Oracle自动备份脚本移步->Oracle数据库自动备份、删除脚本(含Linux、Windows)

MySQL数据库自动备份删除脚本

脚本说明:

1.sh脚本为Linux环境下自动备份、删除脚本;
2.bat脚本为Windows环境下自动备份、删除脚本;
3.执行脚本前,请先对脚本进行修改后,再使用。

功能介绍

1.sh脚本执行逻辑为先对数据库进行备份,备份完成之后再保留最近的x个备份文件;
2.bat脚本执行逻辑为先将x天前的备份文件删除,再对数据库进行备份;
3.脚本需要结合定时任务使用,在做定时任务前,建议先手动执行一次,确保能够正常备份。

脚本文件

mysql_back.sh

# !/bin/bash
#
# 文 件 名: mysql_back.sh
# 脚本功能: linux下备份Mysql数据库
# 

# 数据库参数配置部分
# ==================== 按需修改以下内容 ===========================
# 本地存放备份数据库目录
backupDir="/data/mysqlbak"
# mysql安装目录
mysqlDir="/apps/mysql/bin"
# 用户名
dbUser="root"
# 密码
dbPasswd="Abc@123"
# 主机IP
dbHost="127.0.0.1"
# 数据库名称
backupDB="cs"
# 备份方式 0-压缩备份(后缀为.gz) 1不压缩备份(后缀为.sql)
backType=1
# 保留最近几个备份文件
reservedNum=3
# 后缀类型
formatType=".gz"
# 备份文件后缀时间
time="$(date +%Y%m%d%H%M%S)" 
# ==================== 按需修改以上内容 ===========================

# 数据库备份目录配置部分
if [ ! -d ${backupDir} ]; then
  mkdir -p ${backupDir}
  echo -e "备份目录 ${backupDir} 创建成功。"
else
  echo "备份目录 ${backupDir} 已经存在。"
fi

# 数据库备份部分
echo "数据库${backupDB}开始备份..."

case "$backType" in
				0) ${mysqlDir}/mysqldump -h${dbHost} -u${dbUser} -p${dbPasswd} --databases ${backupDB} | gzip > ${backupDir}/${backupDB}_${time}.sql.gz; 
				formatType=".sql.gz";
				echo "gz文件使用:gzip -d xxx.gz解压"; ;;
				1) ${mysqlDir}/mysqldump -h${dbHost} -u${dbUser} -p${dbPasswd} --databases ${backupDB} > ${backupDir}/${backupDB}_${time}.sql;
			    formatType=".sql"; ;;
esac

echo "数据库${backupDB}备份完成。。。"

# 备份文件删除部分
fileNum=$(ls -l  ${backupDir}/*${formatType} |grep ^- |wc -l)

while(( fileNum > reservedNum))
do
    OldFile=$(ls -rt  ${backupDir}/*${formatType}| head -1)
    echo  "Delete File:" $OldFile
    rm -f $OldFile
    let "fileNum--"
done

内容由Windows环境复制过去,在Linux执行时候会报错,如“mysql_back.sh:行37: 未预期的符号 `$‘\r’’ 附近有语法错误”,可在Linux上,使用命令:dos2unix mysql_back.sh修改脚本编码。

mysql_back.bat

@echo off
rem
rem 文 件 名: mysql_back.bat
rem 脚本功能: Windows下备份Mysql数据库
rem 
rem ==================== 按需修改以下内容 ===========================
rem 设置MySql数据库的连接信息
rem 主机IP
set host=127.0.0.1
rem 数据库端口
set port=3306
rem 数据库登陆用户名
set user=root
rem 数据库密码
set pass=Abc@123
rem 需要备份的数据库名称
set dbname=cs
rem 数据文件保留最新的几天
set days=7
rem 备份文件存储路径
set backupfile=E:\backup
rem mysql数据库安装目录
set mysqlDir=C:\Program Files\MySQL\MySQL Server 8.0\bin
rem ==================== 按需修改以上内容 ===========================
rem 设置时间日期显示格式
set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set backup_date=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%
rem 设置编码格式为UTF8
chcp 65001

rem 数据文件删除
echo 删除%days%天前备份的数据文件...
forfiles /p %backupfile% /s /m *.sql /d -%days% /c "cmd /c del @file /f"
echo %days%天前备份的数据文件删除完成...

rem 数据库备份
IF NOT EXIST "%backupfile%" MD "%backupfile%"
echo %dbname%数据库备份中...
"%mysqlDir%\mysqldump.exe" -h%host% -P%port% -u%user% -p%pass% %dbname% > %backupfile%\%dbname%_%backup_date%.sql 
echo %dbname%数据库备份完成...

定时任务

Linux:crontab
Windows:定时任务
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值