![交换数据库以提高数据库更新期间的可用性](https://linux22.com/image/530173/%E4%BA%A4%E6%8D%A2%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BB%A5%E6%8F%90%E9%AB%98%E6%95%B0%E6%8D%AE%E5%BA%93%E6%9B%B4%E6%96%B0%E6%9C%9F%E9%97%B4%E7%9A%84%E5%8F%AF%E7%94%A8%E6%80%A7.png)
我有一个 SQL 服务器数据库,其中的数据由第三方提供。他们提供了一个工具来每周更新数据库数据。该工具相当老旧,使用 ODBC。更新可能需要几个小时。为了实现高可用性,建议使用 2 个 SQL 数据库,并在另一个数据库中存储“活动数据库”设置,以确定应用程序应使用这两个数据库中的哪一个(而另一个数据库可以正在更新)。
我们遇到的一个问题是:如何在其他数据库的存储过程中引用活动数据库?
这是正确的方法吗,或者还有更好的方法吗?
注意:更新可以是增量更新,也可以删除所有数据库数据然后重新创建数据。除更新工具外,数据库目前都是只读的。
答案1
他们提供了多么令人愉快的复杂解决方案 - 请尝试以下方法:
- 有两个数据库服务器,A 和 B
- 拥有一个数据库 IP 地址(除了系统的基本 IP 地址之外)
- 将数据库 IP 地址分配给您希望查询转到的任何数据库服务器
更新时间到来时:
- 更新非活动计算机(“计算机 B”)
- 将数据库 IP 地址交换到“机器 B”
- 更新“机器 A”
请注意,这容易受到 ARP 缓存问题的影响 - 您也可以使用 DNS 和(非常)短 TTL(假设您的 DNS TTL 受到尊重)、使用虚拟 MAC 的高可用性包或负载平衡前端获得相同的结果。