You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bitnami分片MongoDB Helm Chart数据备份与恢复求助

Bitnami分片MongoDB Helm Chart 备份与恢复方案

一、备份方法

1. VolumeSnapshot 快照备份

针对分片集群的每个有状态节点(分片、配置服务器),可通过K8s的VolumeSnapshot机制做存储级备份,这是你已经尝试过的方式。每个节点的PVC需要单独创建快照,示例配置:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: mongodb-shard-0-snapshot
spec:
  volumeSnapshotClassName: 你的快照类名称
  source:
    persistentVolumeClaimName: data-mongodb-sharded-shard-0-0

注意:mongos节点无持久化数据,不需要创建快照。

2. mongodump 逻辑备份

如果不想依赖存储快照能力,可使用MongoDB自带的mongodump做逻辑备份,直接连接mongos节点执行即可:

# 进入任意mongos Pod
kubectl exec -it <mongos-pod名称> -- mongodump --uri="mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:27017" --out=/bitnami/mongodb/dump
# 将备份文件拉取到本地
kubectl cp <mongos-pod名称>:/bitnami/mongodb/dump ./mongodb-local-backup

二、恢复方法

1. 修复VolumeSnapshot恢复失败问题

你遇到的Bitnami Helm Chart无法通过快照恢复的问题,本质是默认Chart会动态创建PVC,恢复时需要手动绑定快照生成的PVC:

  • 先基于已有快照创建恢复后的PVC,每个节点对应一个:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-mongodb-sharded-shard-0-0-restored
spec:
  storageClassName: 你的存储类名称
  dataSource:
    name: mongodb-shard-0-snapshot
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi # 需与原PVC容量一致
  • 卸载原有Helm实例:helm uninstall mongodb-sharded
  • 重新安装时,在values.yaml里指定每个节点的已有PVC:
shard:
  persistence:
    existingClaim: data-mongodb-sharded-shard-0-0-restored
configsvr:
  persistence:
    existingClaim: data-mongodb-sharded-configsvr-0-0-restored

关键注意点:所有分片、配置服务器的PVC都要从对应快照恢复,否则集群会出现数据不一致。

2. mongorestore 逻辑恢复

逻辑恢复更灵活,不需要重新部署集群,直接在现有mongos节点上操作:

# 将本地备份文件上传到mongos Pod
kubectl cp ./mongodb-local-backup <mongos-pod名称>:/bitnami/mongodb/
# 执行恢复命令
kubectl exec -it <mongos-pod名称> -- mongorestore --uri="mongodb://root:${MONGODB_ROOT_PASSWORD}@localhost:27017" /bitnami/mongodb/mongodb-local-backup

关于Deployment vs StatefulSet的说明

你提到想用Deployment替代StatefulSet简化操作,但分片MongoDB的分片、配置服务器属于有状态应用,需要稳定的网络标识、有序启停和持久化存储绑定,StatefulSet是K8s原生适配这类场景的控制器。改用Deployment会丢失这些核心特性,反而会增加集群运维的复杂度,不建议替换。

内容的提问来源于stack exchange,提问作者pds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:57:45