Couchbase备份与恢复 #
一、备份概述 #
1.1 为什么需要备份 #
text
数据丢失风险:
- 硬件故障
- 人为误操作
- 软件Bug
- 自然灾害
- 网络攻击
1.2 备份类型 #
| 类型 | 说明 | 恢复时间 |
|---|---|---|
| 全量备份 | 完整数据备份 | 较长 |
| 增量备份 | 只备份变更 | 较短 |
| 差异备份 | 与上次全量的差异 | 中等 |
1.3 备份策略 #
text
推荐策略:
- 每日全量备份
- 每小时增量备份
- 异地备份存储
- 定期恢复演练
二、cbbackup工具 #
2.1 全量备份 #
备份单个Bucket:
bash
/opt/couchbase/bin/cbbackup \
http://localhost:8091 /backup/full_$(date +%Y%m%d) \
-u Administrator -p password \
-b my-bucket \
--single-node
备份所有Bucket:
bash
/opt/couchbase/bin/cbbackup \
http://localhost:8091 /backup/full_$(date +%Y%m%d) \
-u Administrator -p password \
--single-node
备份指定节点:
bash
/opt/couchbase/bin/cbbackup \
http://192.168.1.101:8091 /backup/node1_$(date +%Y%m%d) \
-u Administrator -p password \
--single-node
2.2 增量备份 #
bash
/opt/couchbase/bin/cbbackup \
http://localhost:8091 /backup/incr_$(date +%Y%m%d_%H%M) \
-u Administrator -p password \
-b my-bucket \
--single-node \
--mode diff
2.3 备份参数 #
| 参数 | 说明 |
|---|---|
| -b | 指定Bucket |
| –single-node | 从单节点备份 |
| –mode | 备份模式(full/diff/accu) |
| -t | 线程数 |
| -x | 额外选项 |
2.4 备份选项 #
bash
/opt/couchbase/bin/cbbackup \
http://localhost:8091 /backup/custom_$(date +%Y%m%d) \
-u Administrator -p password \
-b my-bucket \
--single-node \
-x "max_retry=10,retry_backoff=5"
常用选项:
| 选项 | 说明 |
|---|---|
| max_retry | 最大重试次数 |
| retry_backoff | 重试间隔(秒) |
| batch_size | 批量大小 |
| conflict_resolve | 冲突解决 |
三、cbrestore工具 #
3.1 全量恢复 #
bash
/opt/couchbase/bin/cbrestore \
/backup/full_20240115 http://localhost:8091 \
-u Administrator -p password \
-b my-bucket
3.2 恢复到不同Bucket #
bash
/opt/couchbase/bin/cbrestore \
/backup/full_20240115 http://localhost:8091 \
-u Administrator -p password \
-b my-bucket \
--bucket-destination restored-bucket
3.3 增量恢复 #
bash
/opt/couchbase/bin/cbrestore \
/backup/incr_20240115_1000 http://localhost:8091 \
-u Administrator -p password \
-b my-bucket
3.4 恢复参数 #
| 参数 | 说明 |
|---|---|
| -b | 源Bucket |
| –bucket-destination | 目标Bucket |
| -x | 额外选项 |
3.5 恢复选项 #
bash
/opt/couchbase/bin/cbrestore \
/backup/full_20240115 http://localhost:8091 \
-u Administrator -p password \
-b my-bucket \
-x "max_retry=10,retry_backoff=5,batch_size=1000"
四、cbbackupmgr工具 #
4.1 配置备份 #
bash
/opt/couchbase/bin/cbbackupmgr config \
--archive /backup/archive \
--repo my-backup \
--cluster http://localhost:8091 \
--username Administrator \
--password password
4.2 执行备份 #
bash
/opt/couchbase/bin/cbbackupmgr backup \
--archive /backup/archive \
--repo my-backup \
--cluster http://localhost:8091 \
--username Administrator \
--password password
4.3 查看备份 #
bash
/opt/couchbase/bin/cbbackupmgr info \
--archive /backup/archive \
--repo my-backup
4.4 执行恢复 #
bash
/opt/couchbase/bin/cbbackupmgr restore \
--archive /backup/archive \
--repo my-backup \
--cluster http://localhost:8091 \
--username Administrator \
--password password \
--bucket-source my-bucket \
--bucket-destination restored-bucket
4.5 合并备份 #
bash
/opt/couchbase/bin/cbbackupmgr merge \
--archive /backup/archive \
--repo my-backup \
--start oldest \
--end latest
4.6 删除备份 #
bash
/opt/couchbase/bin/cbbackupmgr remove \
--archive /backup/archive \
--repo my-backup \
--backup backup-name
五、自动备份脚本 #
5.1 每日备份脚本 #
bash
#!/bin/bash
BACKUP_DIR="/backup/couchbase"
DATE=$(date +%Y%m%d)
LOG_FILE="/var/log/couchbase_backup.log"
echo "$(date) - 开始备份" >> $LOG_FILE
/opt/couchbase/bin/cbbackupmgr backup \
--archive $BACKUP_DIR \
--repo daily \
--cluster http://localhost:8091 \
--username Administrator \
--password $CB_PASSWORD \
>> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo "$(date) - 备份成功" >> $LOG_FILE
else
echo "$(date) - 备份失败" >> $LOG_FILE
exit 1
fi
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
echo "$(date) - 清理旧备份完成" >> $LOG_FILE
5.2 定时任务 #
bash
crontab -e
0 2 * * * /opt/scripts/couchbase_backup.sh
六、备份验证 #
6.1 验证备份完整性 #
bash
/opt/couchbase/bin/cbbackupmgr info \
--archive /backup/archive \
--repo my-backup \
--json | jq '.backups[].complete'
6.2 测试恢复 #
bash
/opt/couchbase/bin/couchbase-cli bucket-create \
--cluster localhost:8091 \
--username Administrator \
--password password \
--bucket test-restore \
--bucket-type couchbase \
--bucket-ramsize 256
/opt/couchbase/bin/cbrestore \
/backup/full_20240115 http://localhost:8091 \
-u Administrator -p password \
-b my-bucket \
--bucket-destination test-restore
/opt/couchbase/bin/couchbase-cli bucket-delete \
--cluster localhost:8091 \
--username Administrator \
--password password \
--bucket test-restore
6.3 数据校验 #
sql
SELECT COUNT(*) AS count FROM `my-bucket`.`_default`.`_default`;
SELECT COUNT(*) AS count FROM `test-restore`.`_default`.`_default`;
七、灾难恢复 #
7.1 恢复流程 #
text
步骤:
1. 评估灾难影响
2. 准备恢复环境
3. 恢复集群配置
4. 恢复数据
5. 验证数据完整性
6. 切换应用
7.2 集群配置恢复 #
bash
/opt/couchbase/bin/couchbase-cli cluster-init \
--cluster localhost:8091 \
--cluster-name recovery-cluster \
--cluster-username Administrator \
--cluster-password password \
--cluster-ramsize 4096 \
--services data,index,query
7.3 数据恢复 #
bash
/opt/couchbase/bin/cbbackupmgr restore \
--archive /backup/archive \
--repo my-backup \
--cluster http://localhost:8091 \
--username Administrator \
--password password
7.4 索引重建 #
sql
BUILD INDEX ON `my-bucket`.`_default`.`_default`(
idx_users_name,
idx_users_email,
idx_users_city
);
八、云存储备份 #
8.1 AWS S3备份 #
bash
aws s3 sync /backup/archive s3://my-bucket/couchbase-backup/
aws s3 sync s3://my-bucket/couchbase-backup/ /backup/archive
8.2 自动上传脚本 #
bash
#!/bin/bash
BACKUP_DIR="/backup/couchbase"
S3_BUCKET="s3://my-bucket/couchbase-backup"
/opt/couchbase/bin/cbbackupmgr backup \
--archive $BACKUP_DIR \
--repo daily \
--cluster http://localhost:8091 \
--username Administrator \
--password $CB_PASSWORD
aws s3 sync $BACKUP_DIR $S3_BUCKET/$(date +%Y%m%d) \
--storage-class STANDARD_IA
九、备份最佳实践 #
9.1 备份策略 #
text
生产环境建议:
- 每日全量备份
- 每小时增量备份
- 保留30天备份
- 异地备份存储
- 定期恢复演练
9.2 存储规划 #
text
存储需求计算:
备份大小 = 数据大小 × 压缩比 × 保留份数
示例:
数据大小:100GB
压缩比:0.5
保留份数:30
备份存储:100GB × 0.5 × 30 = 1.5TB
9.3 监控告警 #
bash
#!/bin/bash
BACKUP_DIR="/backup/couchbase"
MAX_AGE_HOURS=26
latest_backup=$(find $BACKUP_DIR -type d -name "backup-*" | sort | tail -1)
backup_age=$(( ($(date +%s) - $(date -d "${latest_backup##*-}" +%s)) / 3600 ))
if [ $backup_age -gt $MAX_AGE_HOURS ]; then
echo "警告:备份已过期 ${backup_age} 小时"
exit 1
fi
十、总结 #
备份恢复要点:
| 工具 | 说明 |
|---|---|
| cbbackup | 传统备份工具 |
| cbrestore | 传统恢复工具 |
| cbbackupmgr | 新版备份管理工具 |
最佳实践:
- 制定备份策略
- 定期执行备份
- 验证备份完整性
- 定期恢复演练
- 异地备份存储
下一步,让我们学习性能优化!
最后更新:2026-03-27