1.ossutil工具
阿里云官方下载ossutil工具及安装配置教程
2.mysql数据库备份脚本
@echo off
rem 脚本使用配置开始=======================start
::设置数据库所在ip
set ip=127.0.0.1
::设置数据库端口
set port=3306
::设置数据库连接用户(为了保证导出函数,视图,存储过程,触发器请给用户设置权限)
set user=root
::设置数据库连接用户密码(密码中的%需要两个%%转义)
set password="root"
::设置备份文件存储位置
set dataFolder=D:\database-bak
::设置压缩后备份文件存储位置
set compressDataFolder=D:\database-bak\data
::设置压缩软件WinRAR的安装目录
set winrarPath=C:\Program Files\WinRAR
::设置oss工具目录
set ossPath=D:\ossutil-v1.7.18-windows-amd64
::设置oss最大上传速度单位KB/s
set maxupspeed=200
::设置oss存储目录
set ossBucketPath=oss://ali-oss/database/
::设置日志存储路径
set logPath=D:\database-bak\log\
:: 创建时间
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%
:: 通过查询出数据库名称备份sql,可排除不需要备份的数据库
set sql="select schema_name from information_schema.schemata where schema_name in ('test1','test2','test3')"
:: 脚本使用配置结束=======================end
::获取7天前日期
echo Wscript.echo dateadd("d",-7,date)>vbs.vbs
for /f %%a in ('cscript //nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a
for /f "tokens=1,2,3* delims=// " %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k
set sevenDaysAgo=%yyyy%%mm%%dd%
::格式化日期(系统日期格式为yyyy-MM-dd)
set sevenDaysAgo=%sevenDaysAgo:-=%
:: 创建存储文件夹
IF NOT EXIST %dataFolder% (
mkdir %dataFolder%
)
:: 查询出需要备份的库名称并保存到alldataBaseName.txt文件
mysql -h %ip% -u%user% -p%password% -P %port% -e %sql% > %dataFolder%\alldataBaseName.txt
:: 创建日期文件夹
if not exist "%dataFolder%\%datevar%\" (
mkdir "%dataFolder%\%datevar%\"
)
:: 循环备份数据库
for /f "skip=1" %%i in (%dataFolder%\alldataBaseName.txt) do (
echo 开始备份=======%%i
mysqldump -R -u%user% -p%password% -h%ip% -P%port% %%i > %dataFolder%\%datevar%\%%i_%datevar%.sql
)
:: 压缩备份文件
::若压缩文件存在,先删除
if exist "%dataFolder%\%datevar%.rar" (
del %dataFolder%\%datevar%.rar
)
::使用WinRAR压缩文件并删除源文件
%winrarPath%\Rar.exe a -k -r -s -m5 -ep1 -df %dataFolder%\%datevar%.rar %dataFolder%\%datevar% >> %logPath%%datevar%.log
:: 删除名称文件
del %dataFolder%\alldataBaseName.txt
move %dataFolder%\%datevar%.rar %compressDataFolder%
::删除7天前备份文件
Forfiles /p "%compressDataFolder%" /s /d -7 /m *.rar /c "cmd /c del /q /f @path"
::上传至oss
%ossPath%\ossutil64.exe cp %compressDataFolder%\%datevar%.rar %ossBucketPath% --maxupspeed %maxupspeed% >> %logPath%%datevar%.log
::删除7天前存储至oss的本分文件
%ossPath%\ossutil64.exe rm %ossBucketPath%%sevenDaysAgo% -r >> %logPath%%datevar%.log
echo 备份结束
此脚本适用于每日备份一次,若每日备份多次需修改datevar 参数,改为获取当前时间
set datevar=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
此时由于不同系统时间设置的问题可能会产生获取时分秒小于10的时间包含空格的问题导致生成文件错误的问题,可对空格进行替换
set datevar=%datevar: =0%
关于ossutil工具上传速度的问题,若服务器长时间处于最大上传带宽可能会导致上传失败的问题,所以ossutil最好是限制上传速度