数据备份 2、阿里云 OSS
将本地数据库备份文件同步到阿里云 OSS(对象存储),实现异地容灾。相比只存在服务器本地的备份,OSS 可避免服务器硬盘损坏、勒索病毒等导致"备份与数据库一同丢失"的风险。
一、准备工作
在动手前,请先完成以下四项:
- 开通 OSS 服务:登录阿里云控制台,进入「对象存储 OSS」并开通;
- 创建 Bucket:
- 地域尽量与服务器不同可用区或不同地域(异地容灾);
- 建议开启 版本控制(误删/覆盖可恢复);
- 存储类型选「标准存储」即可,后续通过生命周期规则自动转低频/归档更省钱;
- 创建 RAM 子账号并授权:
- 禁止使用主账号 AccessKey,新建一个 RAM 子账号;
- 仅授予该 Bucket 的
oss:GetObject / PutObject / ListObjects / DeleteObject权限;
- 下载 ossutil:到阿里云官网下载对应系统版本(Windows 为
ossutil64.exe)。
二、安装与配置 ossutil
以 Windows 为例:
- 将
ossutil64.exe放到一个固定目录(如C:\ossutil\); - 在该目录打开命令行,执行配置:
ossutil64 config
按提示填写三项:
- Endpoint:Bucket 所在地域地址,如
oss-cn-hangzhou.aliyuncs.com; - AccessKey ID / AccessKey Secret:RAM 子账号的密钥(切勿写入文档或提交到代码库)。
配置成功后,可用 ossutil64 ls oss://你的bucket名 验证连通性。
三、手动上传备份文件
将本地某个备份文件上传到 OSS:
# 上传单个文件
ossutil64 cp "D:\backup\db_20260913.bak" "oss://your-bucket/jinshi-backup/db_20260913.bak"
递归上传整个备份目录:
ossutil64 cp "D:\backup\" "oss://your-bucket/jinshi-backup/" -r
四、设置定时自动同步(Windows 任务计划程序)
手动上传不便且易忘,推荐用「任务计划程序」每天自动同步。
1. 编写同步脚本
新建 upload_to_oss.bat,内容如下:
@echo off
cd /d "C:\ossutil"
ossutil64 cp "D:\backup\" "oss://your-bucket/jinshi-backup/" -r -u -f
参数说明:
-r:递归处理子目录;-u(--update):仅上传源端比目标端更新的文件,实现增量同步,大幅减少重复传输;-f(--force):强制覆盖同名文件。
2. 加入任务计划程序
- 开始菜单搜索并打开「任务计划程序」;
- 右侧「创建基本任务」,命名如
JinshiOSSBackup; - 触发器选「每天」,设置凌晨低峰时间(如 03:00);
- 操作选「启动程序」,指向
upload_to_oss.bat; - 完成。此后每天凌晨会自动把最新备份同步上云。
建议:把本地备份目录(由前文"SQL Server 自动备份"生成)直接作为同步源,两者配合即可形成"本地定时备份 + 云端异地副本"的完整链路。
五、备份策略建议
| 策略 | 做法 | 作用 |
|---|---|---|
| 版本控制 | Bucket 开启版本控制 | 误删或文件被覆盖后可回滚到历史版本 |
| 生命周期规则 | 30 天后转低频访问、90 天后转归档、180 天后删除过期文件 | 在保留足够历史版本的同时控制存储成本 |
| 跨区域复制 | 将 Bucket 复制到另一地域 | 抵御单地域级故障(地震、机房问题) |
| 权限最小化 | 仅用 RAM 子账号 + 限定 Bucket 权限 | 即使密钥泄露,影响范围也被限制 |
设置生命周期示例(将以下 JSON 通过 ossutil lifecycle --add 提交):
{
"Rules": [{
"ID": "jinshi-backup-lifecycle",
"Status": "Enabled",
"Prefix": "jinshi-backup/",
"Expiration": { "Days": 180 },
"Transition": [
{ "Days": 30, "StorageClass": "IA" },
{ "Days": 90, "StorageClass": "Archive" }
]
}]
}
六、常用命令速查
| 场景 | 命令 |
|---|---|
| 列举 Bucket 文件 | ossutil64 ls oss://your-bucket/jinshi-backup/ |
| 上传单个文件 | ossutil64 cp 本地路径 oss://your-bucket/目标路径 |
| 递归上传目录 | ossutil64 cp 本地目录 oss://your-bucket/目标目录 -r |
| 增量同步 | ossutil64 cp 本地目录 oss://your-bucket/目标目录 -r -u |
| 下载文件 | ossutil64 cp oss://your-bucket/文件路径 本地路径 |
| 删除文件 | ossutil64 rm oss://your-bucket/文件路径 |
| 统计存储占用 | ossutil64 du oss://your-bucket/ |
安全提醒:AccessKey 等同于你账号的钥匙,不要写在文档、脚本明文或截图里;如怀疑泄露,立即到 RAM 控制台禁用并轮换。
文档更新日期:2026-09-13 · 金石系统管理员手册 · 数据备份