我真的找不到有关如何使用Google App Engine和CloudSQL处理迁移的文档。我正在使用Go运行时。
显然,随着时间的推移,应用程序的模式将会发生变化和演变,并且需要运行迁移。目前我是手动运行迁移。这不可扩展。
是否有人有解决方案?
我看到了一些特定的挑战:
我可以使用VersionID获取当前
app.yaml
部署版本的版本号。但是,如何检查是否对此版本进行了迁移?我需要在数据库表中保留一个版本号,并在init()
函数中检查吗?然而,当您上传应用的新版本并使用新模式时,GAE将逐渐迁移您的流量,这意味着一旦新版本中第一个
init()
实例运行并完成迁移后,旧版本的流量在这些db事务中将失败。通过为我的API进行版本控制,我可以在某种程度上减轻上述问题。但是,这限制了迁移策略,例如删除表等。
最后,我很失望没有找到任何文档。