在大多数情况下,我们都需要对重要数据进行备份,并将其存放在一个安全的地方,以备不时之需。
对于 MySQL 数据库的备份,有几种常见的方式。首先是物理备份,即直接打包复制数据库或表文件。其次是全量逻辑备份,可以使用
mysqldump 工具进行备份,将数据库以 SQL 文件的形式导出。还有增量逻辑备份,可以使用 xtrabackup
工具进行备份,它可以只备份发生更改的数据。备份数据后,我们需要选择一个合适的数据存储方式。可以将备份数据存储在本机上,也可以通过 FTP
上传到远程服务器,或者选择云存储服务,如阿里云OSS、七牛云存储等。选择适合自己需求和预算的存储方式。为了方便,我们可以编写一个脚本来定时备份数据库,并自动将备份文件上传到指定的服务器或云存储。这样就可以实现自动化备份,避免手动操作和下载所带来的麻烦。同时,异地备份也能增加数据的安全性。
在这里,我们介绍一种在 Windows 服务器上备份 MySQL 并上传到七牛云存储的方式。
准备工作
7-zip.exe 压缩工具
sed.exe windows文件查找工具
qshell.exe 七牛云命令行工具
qshell 是七牛云官方利用七牛文档上公开的 API 实现的一个方便开发者测试和使用七牛 API 服务的命令行工具。
qshell 工具上一节已经说到如何去使用了,不懂的可以翻看一下,也可以去官网找一下详细的官方文档。
由于上一期写了基础,下面直接上执行代码
@echo off
REM mysql data backup script
REM
REM use mysqldump --help to get more details.
set "dbname=数据库名"
set "user=数据库用户"
set "password=数据库密码"
set "bakDir=C:\tools\backup\sql"
set "logFile=C:\tools\log\mysqlbak.log"
set "datetime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
set "keepDay=7"
set "zipPath=C:\Program Files\7-Zip\7z.exe"
set "qshellPath=C:\tools\qshell.exe"
echo "-------------------------------------------" >> "%logFile%"
echo %date% %time% >> "%logFile%"
echo "--------------------------" >> "%logFile%"
cd "%bakDir%"
set "bakFile=%dbname%.%datetime%.sql"
mysqldump -u %user% -p%password% %dbname% > "%bakFile%"
echo "数据库 [%dbname%] 备份完成" >> "%logFile%"
echo "%bakDir%\%bakFile%" >> "%logFile%"
echo "开始压缩备份文件" >> "%logFile%"
"%zipPath%" a -tgzip "%bakFile%.gz" "%bakFile%" > nul
echo "压缩完成" >> "%logFile%"
echo "开始上传备份文件至七牛云存储" >> "%logFile%"
"%qshellPath%" rput longmvip database/%bakFile%.gz "%bakFile%.gz" true >> "%logFile%" 2>&1
echo "删除%keepDay%天前的备份文件" >> "%logFile%"
forfiles /P "%bakDir%" /D -%keepDay% /C "cmd /c if @isdir==FALSE del /Q @path" >> "%logFile%"
echo " " >> "%logFile%"
echo " " >> "%logFile%"
这段脚本是一个用于备份 MySQL 数据库的脚本。它使用了 mysqldump 命令来导出数据库,并使用 7-Zip 进行压缩,最后将备份文件上传到七牛云存储。
以下是脚本的解释和用法:
dbname: 数据库名称。
user: 数据库用户。
password: 数据库密码。
bakDir: 备份文件存储目录。
logFile: 日志文件路径。
datetime: 当前日期和时间,用于生成备份文件名。
keepDay: 保留备份文件的天数。
zipPath: 7-Zip 可执行文件的路径。
qshellPath: qshell 可执行文件的路径,用于上传文件到七牛云存储。
脚本的执行流程如下:
设置日志文件的标题和时间戳。
切换到备份文件存储目录。
使用 mysqldump 命令导出数据库,并将输出重定向到备份文件。
记录数据库备份完成的信息到日志文件。
使用 7-Zip 进行备份文件的压缩。
记录压缩完成的信息到日志文件。
使用 qshell 将备份文件上传到七牛云存储。
记录上传完成的信息到日志文件。
删除保留天数之前的备份文件。
在日志文件中添加空行,以分隔不同的备份记录。
请注意,该脚本中的路径和参数需要根据您的实际情况进行修改。确保您已经安装了 mysqldump、7-Zip 和 qshell,并将它们的路径正确配置在脚本中。
如果您有任何问题或需要进一步的帮助,请随时告诉我。