谷歌云GKE服务停服后,是否可从存储磁盘恢复MongoDB数据库数据?
GKE集群失联后从持久化磁盘恢复MongoDB数据操作指南
操作前请先确认你查看GKE集群时选择的区域和之前创建集群的区域一致,排除区域选择错误导致集群找不到的情况。
1. 定位并挂载MongoDB持久化磁盘
- 进入谷歌云控制台Compute Engine的「磁盘」页面,筛选对应区域,找到你之前挂载给GKE MongoDB工作负载的持久化磁盘(PD)。注意不要误选GKE节点的系统盘,MongoDB的磁盘容量与你之前申请的PVC存储大小匹配,名称通常带有PVC相关标识前缀
- 临时创建一台同区域、同可用区的轻量Compute Engine VM实例,操作系统选择Debian/Ubuntu等常用Linux发行版即可,配置无需过高,满足磁盘挂载要求即可
- 实例创建完成后,在磁盘列表中找到目标MongoDB磁盘,点击「挂载」,选择刚才创建的临时VM作为挂载实例,挂载模式选择「只读」避免误操作修改原始数据
2. 挂载磁盘到系统目录并验证数据
- 通过SSH连接到临时VM,执行以下命令查看已挂载的磁盘设备:
lsblk - 新挂载的非系统盘通常显示为
/dev/sdb这类路径,先创建挂载目录:sudo mkdir -p /mnt/mongo-data - 按照文件系统类型挂载磁盘,GKE默认使用ext4文件系统,对应命令为:
sudo mount -o ro,noload /dev/sdb1 /mnt/mongo-data;如果使用的是XFS文件系统,替换为对应XFS挂载参数即可 - 进入
/mnt/mongo-data目录,确认存在WiredTiger、collection-*.wt、journal等MongoDB专属数据文件,验证为目标数据盘
3. 导出MongoDB数据
推荐优先使用结构化导出方案,兼容性更强:
方案A:mongodump结构化导出
- 在临时VM上安装与你之前运行的MongoDB大版本一致的MongoDB社区版,避免版本兼容问题
- 执行命令以只读模式启动临时MongoDB实例,指向挂载的数据目录:
sudo mongod --dbpath /mnt/mongo-data --readOnly --port 27017 --bind_ip 127.0.0.1 - 新开一个SSH连接窗口,执行导出命令:
mongodump --uri="mongodb://127.0.0.1:27017" --out /tmp/mongo-structured-backup - 导出完成后打包备份文件,通过SCP或者gcloud工具下载到本地即可
方案B:直接打包原始数据文件
如果需要完整保留原始数据文件,可直接打包整个数据目录:sudo tar -zcvf /tmp/mongo-raw-backup.tar.gz /mnt/mongo-data,之后下载压缩包即可
4. 注意事项
- 全程优先使用只读模式挂载目标磁盘,避免意外覆盖原始数据
- 若挂载时提示文件系统损坏,可先执行文件系统修复:ext4格式用
sudo fsck /dev/sdb1,XFS格式用sudo xfs_repair /dev/sdb1;执行修复前建议先对磁盘创建快照备份 - 数据导出完成后可自行删除临时VM,原始磁盘根据需求选择保留或删除
内容的提问来源于stack exchange,提问作者AlexAcc
相关产品推荐
相关产品推荐

