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



评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统