Google compute engine 为什么从谷歌云快照恢复的虚拟机没有';它的数据库里没有数据吗?

Google compute engine 为什么从谷歌云快照恢复的虚拟机没有';它的数据库里没有数据吗?,google-compute-engine,restore,snapshot,Google Compute Engine,Restore,Snapshot,我正在google compute engine中运行一个web应用程序,并为VM[Ubuntu 16.04]安排了一个快照 我尝试从上一个可用快照还原VM。我能够从恢复的VM启动web应用程序。但问题是数据库[mongodb]中没有任何数据。由应用程序创建的所有集合和默认数据[部署期间播种的数据]都存在于恢复的VM中的mongodb中,但除此之外,没有数据 谷歌快照就是这样工作的吗?在创建快照之前,新恢复的虚拟机不应该拥有所有数据吗?在所有应用程序运行时创建快照可能不会100%准确,因为有些数

我正在google compute engine中运行一个web应用程序,并为VM[Ubuntu 16.04]安排了一个快照

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


谷歌快照就是这样工作的吗?在创建快照之前,新恢复的虚拟机不应该拥有所有数据吗?

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

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

谷歌对此非常清楚:

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

暂停向其写入数据的应用程序或操作系统进程 持久磁盘。然后在创建磁盘之前刷新磁盘缓冲区 快照

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

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

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


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

是的,没错。但我的应用程序包含很久以前的数据[近一年的数据]。可以理解的是,在快照期间,我可能丢失了一些最近未写入磁盘的数据。但事实并非如此。还原VM没有从时间开始的数据。奇怪的是/var/lib/mongodb的大小在活动虚拟机和恢复虚拟机中都是相同的。我是否需要在恢复的VM的mongo中执行一些操作,以便它能够显示所有这些数据?看起来这不是快照的问题,正如您所猜测的,只是一些linux/mongodb配置。。。我为谷歌支持部门工作,这是我能帮你做的,因为我们不支持虚拟机内部的任何东西。