如何将App Engine线上Datastore复制到本地开发Datastore?
我太懂你这种找了旧方法却发现不好使的郁闷了!作为一直在Java+Windows环境折腾GAE的开发者,给你分享现在官方推荐的、完全有效的同步生产Datastore到本地的步骤:
1. 先搞定Google Cloud SDK(gcloud)的安装和配置
- 去Google Cloud官网下载适配Windows的Cloud SDK安装包,一路默认安装就行,安装过程会引导你登录关联自己的Google Cloud账号,记得选对要同步的目标项目。
- 验证安装成功:打开CMD或者PowerShell,输入
gcloud --version,能正常输出版本信息就没问题。
2. 导出生产环境的Datastore数据到GCS
- 打开终端,运行下面的命令把数据导出到你自己的Google Cloud Storage(GCS)存储桶里(如果还没存储桶,先去Cloud Console创建一个):
gcloud datastore export --async gs://你的存储桶名称/自定义导出文件夹名 - 导出是异步的,你可以用
gcloud datastore operations list查看进度,直到状态显示DONE就说明导出完成了。
3. 把导出的数据下载到本地
- 用
gsutil工具把GCS上的导出文件下载到本地的某个目录,比如C:\local-datastore-backup:gsutil cp -r gs://你的存储桶名称/自定义导出文件夹名 C:\local-datastore-backup
4. 启动本地Datastore并导入数据
- 如果你用的是App Engine本地开发服务器,启动时指定本地Datastore的存储路径和导入数据的目录就行。以Java项目常用的
dev_appserver.jar为例,命令如下:java -jar dev_appserver.jar --datastore_path=C:\local-datastore\local_db.bin --import=C:\local-datastore-backup\自定义导出文件夹名\all_namespaces\kind- 说明:
--datastore_path是本地Datastore的持久化文件路径,--import指向你下载的导出数据里的all_namespaces/kind子目录(这个目录里存着所有实体数据)。
- 说明:
- 启动完成后,本地Datastore就已经是生产环境的副本了,本地开发时直接用就行。
一些额外提醒
- 确保你的Google Cloud账号拥有Datastore导出权限和GCS的读写权限,不然会遇到权限报错。
- 现在官方已经不再使用旧的
backup.xml格式,所以之前基于XML导入的方法完全失效,必须用上面的新流程。 - 如果你的项目用了命名空间(Namespace),导出时可以加上
--namespaces=你的命名空间参数,只导出特定命名空间的数据,能节省导入时间。
内容的提问来源于stack exchange,提问作者Campey
相关产品推荐
相关产品推荐

