自动备份MySQL数据库到Google Drive
服务器环境
系统:Debian 11 x64
下载安装gdrive
项目地址:https://github.com/prasmussen/gdrive/releases
一把梭
1 | wget -qO- https://github.com/prasmussen/gdrive/releases/download/2.1.1/gdrive_2.1.1_linux_amd64.tar.gz | tar -zxf- -C /usr/bin && chmod +x /usr/bin/gdrive |
后续可根据更新版本自行换最新版gdrive
使用mysqldump导出mysql数据
格式:
1 | mysqldump -u$username -p$passwd $datebase > $filename.sql |
注意:-u
和-p
后面没有空格
参数 | 必要性 | 备注 |
---|---|---|
$username | yes | MySQL用户名 |
$passwd | no | MySQL用户密码,此处可以留空,后续隐式输入 |
$datebase | yes | MySQL数据库名称 |
$filename | yes | 导出的文件名 |
此处为了方便后续做成脚本,密码就直接在命令行里输入了
使用mysqldump导出mysql数据并用zip压缩
使用zip压缩:
1 | mysqldump -u$username -p$passwd $datebase | zip > $filename.zip |
使用zip压缩+加密:
1 | mysqldump -u$username -p$passwd $datebase | zip -P $zip_passwd > $filename.zip |
参数 | 备注 |
---|---|
$zip_passwd | 设置zip压缩包密码 |
配置gdrive
配置环境
若经过ls
确定存在gdrive
文件,执行时却仍出现 -bash: gdrive: command not found
无以上问题可略过此步骤
则需补充安装环境:
1 | apt install musl -y |
用命令行登录gdrive
1 | gdrive about |
此处需先提前在Google Drive中创建一个文件夹用于存储备份文件,也可以使用现有的文件夹
1 | gdrive list |
输出结果:
| Id | Name | Type |
| ——– | ———- | —- |
| 文件夹Id | 文件夹名称 | dir |
创建备份脚本
1 | mkdir sh |
我这里采用的是zip
压缩+加密方式备份,如需其他配置也可自行修改
如果使用echo
代替nano
写入记得用echo -e
用/044代替美元符号
写入脚本
1 | mysqldump -u$username -p$passwd $datebase | zip -P $zip_passwd > /root/mysql_backup/$(date +%Y%m%d_%H)_mysql.zip && gdrive upload /root/mysql_backup/$(date +%Y%m%d_%H)_mysql.zip -p $YourDirId |
需要替换的参数 | 备注 |
---|---|
$username | MySQL用户名 |
$passwd | MySQL用户密码,此处可以留空,后续隐式输入 |
$datebase | MySQL数据库名称 |
$zip_passwd | 设置zip压缩包密码 |
$YourDirId | 上面通过gdrive list获取到的文件夹Id |
$(date +%Y%m%d_%H)
含义:
参数 | 含义 |
---|---|
%Y | 年 |
%m | 月 |
%d | 日 |
%H | 时 |
写入后按下Ctrl+S保存,Ctrl+X退出nano
给脚本赋权
记得给脚本赋权
1 | chmod +x /root/sh/auto_backup.sh |
用crontab定时执行
修改crontab规则
1 | crontab -e |
添加此规则:
1 | 0 */3 * * * /root/sh/auto_backup.sh |
0 */3 * * *
代表每3小时执行备份一次,可根据站点需要自行修改参数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CandyRaws!