在数据库更新期间交换数据库以增加可用性

我有一个从第三方提供的数据的SQL服务器数据库。 他们提供了一个工具来每周更新数据库数据。 该工具是相当古老,并使用ODBC。 更新可能需要几个小时。 为了获得高可用性,build议有2个SQL数据库,并在另一个数据库中存储“活动数据库”设置,以确定两个数据库应用程序应使用哪一个(而另一个可能正在更新)。

我们遇到的一个问题是:如何在其他数据库的存储过程中引用活动数据库?

这是正确的方法,还是有更好的方法?

注意:更新可以是增量式,也可以删除所有数据库数据,然后重新创build数据。 除了更新工具之外,数据库目前是只读的。

他们提供的DELIGHTFULLY CONVOLUTED解决scheme – 请尝试以下操作:

  • 有两个数据库服务器,A和B.
  • 有一个数据库IP地址(除了系统的基本IP地址)
    • 将数据库IP地址分配给要查询的任何数据库服务器

更新时间到了时:

  • 更新不活动的机器(“机器B”)
  • 将数据库IP地址交换到“机器B”
  • 更新“机器A”

请注意,这很容易受到ARPcaching问题的影响 – 您也可以使用DNS和一个非常短的TTL(假设您的DNS TTL被尊重),使用虚拟MAC的高可用性软件包或与负载均衡前端。