为什么从 Google 云快照还原的虚拟机的数据库中没有数据?



我在谷歌计算引擎中运行一个Web应用程序,并为虚拟机[Ubuntu 16.04]安排了一个快照。

我尝试从上一个可用快照还原 VM。我能够从还原的 VM 启动 Web 应用程序。但问题是数据库中没有任何数据[mongodb]。应用程序和默认数据 [部署期间播种的数据] 创建的所有集合都存在于还原的 VM 的 mongodb 中,但除此之外,没有数据。

这就是谷歌快照的工作方式吗?新还原的 VM 是否应该在创建快照之前拥有所有数据?

在所有应用程序运行时创建快照可能无法证明 100% 准确,因为某些数据位于缓冲区/缓存等中。

创建快照时,丢失的数据可能尚未写入磁盘。

关于创建快照的Google文档对此非常清楚:

即使应用,您也可以创建永久磁盘的快照 将数据写入磁盘。但是,您可以提高快照一致性 如果在刷新磁盘缓冲区并同步文件系统之前 创建快照。

暂停向其写入数据的应用或操作系统进程 永久磁盘。然后在创建 快照。

尝试按照说明操作并测试结果。

如果由于某种原因无法完全停止数据库,请尝试将缓冲区刷新到磁盘,冻结文件系统(如果可能(,然后创建快照。

您可以通过登录实例并键入sudo fsfreeze -f [example-disk_location]和解冻sudo fsfreeze -u [example-disk_location]来冻结文件系统。

完美的方法(保证数据完整性(是停止 VM 或卸载磁盘。

最新更新