- 生产环境
- 测试环境
- 开发环境
据我所知,测试环境需要与生产环境保持同步, 但是,
当我们在开发时,我们可以随意更改开发环境的数据库结构。 现在问题出现了。
为了在测试环境中进行测试,测试环境数据库结构需要根据开发环境所做的更改而改变。 但测试数据库需要与生产环境保持同步。
那么你们如何解决这个问题?
在部署新变更之前,预发布环境需要与生产环境保持同步。
或者创建第四个环境——测试环境,用于验证新升级。我们称之为UAT/Test,通常是在预发布服务器上设置的第二个数据库。
确切的方法取决于您如何保持同步。您是否实际使用了复制?还是只是将生产环境备份/还原到预发布环境中?
“Staging database need to be in sync with Production”这句话不是真的。
生产模式(“设计”)与暂存模式同步。暂存模式先行,生产模式随后。
有时候人们会将生产数据移动到暂存模式来进行测试,但这可能会很危险,具体取决于您所在的行业。
暂存模式是“纯净的”。
通过将真实数据放入纯净的暂存模式中,可以构建生产模式。
有些人会有两个数据库。
今天,#1是生产模式,#2是暂存模式。
明天我们计划对模式进行更改。我们将#2升级到新的设计。然后我们将数据从#1移动到#2。
然后,在我们完成数据移动之后,我们将应用程序软件切换为使用#2作为生产模式。
我们使用#2作为生产模式,直到下一次更改的时间到来。
我们只使用暂存数据库来测试部署机制,它与生产环境相匹配。
我们在开发环境中创建更改,并定期将其部署到QA。一旦准备好进入生产环境,我们将所有更改聚合到一个发布包中。该发布包首先在暂存环境中进行测试,如果没有部署问题,则推送到生产环境。
如果你有能力添加一个测试环境,那么你可能需要考虑一下。
否则,你基本上需要在开发环境中进行测试,直到你对发布的内容足够自信,可以在预备环境中进行模式更改。频繁备份并拥有良好的回滚程序,以便在将模式更改推送到预备环境时出现问题时,您可以随时回滚。
此外,一个比较数据库模式的好工具是SqlCompare。在推送模式更改之前,你应该始终使用这样的工具。