windows操作系统下mysql数据库备份及上传阿里云OSS

 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最好是限制上传速度

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值