问题
我的硬盘无法再启动到 Ubuntu 18.04 桌面(我怀疑 UI 无法加载,但其他一切都应该正常工作)。分析问题出在哪里需要太多时间,所以我想备份位于 /var/lib/mongodb 的所有物理 MongoDB 数据并将其恢复到另一台 PC。
我开始启动 Ubuntu live,但只能找到使用 MongoDB 服务(如“mongodump 和 mongorestore”)备份/恢复 MongoDB 数据库的信息;这些信息在这里无法应用。但是是否可以将文件夹 /var/lib/mongodb 复制到 USB 驱动器,然后将其恢复到新 PC 中的相同位置?是否有需要运行的权限命令?
与 MySQL 在此处提供的内容类似https://stackoverflow.com/questions/484750/restoring-mysql-database-from-physical-files
答案1
回答这个问题:是的。官方的备份/恢复文档将其称为“冷备份”,并有如下内容:
使用
cp
或备份rsync
如果您的存储系统不支持快照,则可以使用 、 或类似工具直接复制文件
cp
。rsync
由于复制多个文件不是原子操作,因此在复制文件之前必须停止对 mongod 的所有写入。否则,您将复制处于无效状态的文件。通过复制底层数据生成的备份不支持副本集的时间点恢复,并且对于较大的分片集群来说难以管理。此外,这些备份更大,因为它们包括索引和重复的底层存储填充和碎片。相比之下,mongodump 创建的备份较小。
- 你需要停下来
mongo
您可以使用...进行备份
rsync -vahP /var/lib/mongodb/ /media/backup/
备份到本地目录或
rsync -vahP /var/lib/mongodb/ {user}@{url}:/{dir}/
用于备份到远程系统
恢复:停止mongo
并切换2个位置。
答案2
注意在目标主机上安装相同的 mongodb 版本。否则 mongod 启动将中止并在日志中显示一条消息。如果您出于某种原因不知道原始版本,请从高版本开始,然后尝试使用较晚的版本重新安装,直到启动为止。