Mac下通过aws命令将MySQL数据库备份在Cloudflare的R2存储云中
1、Mac上安装awscli程序
brew install awscli
aws --version
查看版本信息,如果展示则说明安装成功
2、通过浏览器登录cloudflare并创建R2存储桶
3、通过Account Details处创建API Tokens的secret密钥
4、在创建API令牌的时候,要记录获取三个参数,并点击「完成」按钮
AWS Access Key ID: 创建API令牌时的 「访问密钥 ID」
AWS Secret Access Key: 创建API令牌时的 「机密访问密钥」
End Point: 创建API令牌时的「使用管辖权地特定终结点」
5、命令行中运行aws的配置命令:
aws configure
回车
依次输入:
「访问密钥 ID」
「机密访问密钥」
auto
json
6、在当前项目路径下,使用vi命令创建备份脚本文件,写入下面的备份脚本:
vi backup_mysql_to_r2.sh
脚本代码如下:
#!/bin/bash
# ===== 配置区 =====
DB_NAME="student_management"
DB_USER="你的账号"
DB_PASSWORD="你的密码"
R2_BUCKET="你的R2存储桶名称"
R2_ENDPOINT="你的「使用管辖权地特定终结点」"
# ===== 时间戳 =====
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILE_NAME="${DB_NAME}_backup_${DATE}.sql"
FILE_PATH="/tmp/${FILE_NAME}"
echo "开始备份数据库..."
# ===== MySQL 备份 =====
mysqldump -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > ${FILE_PATH}
if [ $? -ne 0 ]; then
echo "❌ 数据库备份失败"
exit 1
fi
echo "✅ 备份完成: ${FILE_PATH}"
# ===== 上传到 R2 =====
aws s3 cp ${FILE_PATH} s3://${R2_BUCKET}/${FILE_NAME} \
--endpoint-url ${R2_ENDPOINT}
if [ $? -ne 0 ]; then
echo "❌ 上传失败"
exit 1
fi
echo "✅ 上传成功到 R2"
# ===== 删除本地文件(可选)=====
rm -f ${FILE_PATH}
echo "🎉 全部完成"
7、手动触发备份命令(脚本)
给脚本文件赋予执行权限:
chmod +x backup_mysql_to_r2.sh
命令行中输入:
./backup_mysql_to_r2.sh
8、下载备份文件到本地
aws s3 cp s3://m1macmini/student_management_backup_2026-04-11_23-26-24.sql.gz ./backup.sql --endpoint-url https://b8877214975b3****28f85a1f0576c.r2.cloudflarestorage.com
9、本地创建同名数据库并恢复
gunzip < backup.sql.gz | mysql -u root -p test222
-------------------------------------------------
如果下载的不是.gz压缩格式的数据库备份文件,可以通过下面方式直接恢复数据库:
mysql -u root -p test222 < backup.sql


评论
发表评论