多租户网站,单独的数据库 - 如何推出架构/共享数据更新?

时间:2012-01-14 12:49:03

标签: database deployment multi-tenant

我们有一个多租户系统,每个租户都有一个单独的数据库(但具有相同的架构和应用程序代码)。我们如何才能最好地向租户推出更新?部署过程是自动化的,但是我并不特别希望在每个租户数据库运行任何更新脚本时让整个系统脱机? (特别是如果一个租户由于他们系统中的数据而出现一些意想不到的问题 - 显然我们的目标是避免这些问题。)

人们成功使用了哪些策略?如果我要在一个单独升级的单独网站实例上运行每个租户 - 会有更多的维护开销,但是如果遇到问题升级可能会有更大的灵活性?从长远来看,不确定哪个可能不那么痛苦?感谢。

1 个答案:

答案 0 :(得分:2)

我们处理这个问题的方法是:

  • 有两个实例,一个运行旧代码,一个运行新代码
  • 开始(显然)所有租户网站指向旧版本
  • 循环租户(可能是自动)
  • ....将数据库复制到临时
  • ....运行update ond DB copy
  • ....清洗,冲洗,重复直至数据转换成功
  • ....使用临时转换的数据库
  • 测试新代码
  • .... drop temporary DB
  • ....让租户网站离线
  • ....在真实数据库上运行更新(除非最后一刻更改引入了新问题,否则这应该有效)
  • ....将租户网站指向新代码/转换后的数据库
  • 的组合
  • 结束周期

到目前为止,这种方法运作良好,实际上它经常保存我们的培根:问题往往与前几个租户有关,这可能会在新代码中提示错误修正或错误。