即时同步多个 SQL 服务器

Lev*_*sen 7 sql-server data-synchronization sql-server-2014

首先,如果这是重复的,我很抱歉。我找不到解决这个特定问题的人,或者我在阅读时可能没有意识到这一点。很可能我使用了错误的搜索短语,因为我对术语并不十分熟悉。

我们有3台服务器:

一个。SQL服务器

。警报系统

Ç。网站+API+其他

服务器BC必须一直连接到服务器A,并且出现了几次宕机的情况,导致了很多客户的不满。


我们想要以下内容:(不同的字母使评论更容易,尽管可能不是 :p )

w ^。报警系统(带 SQL 服务器)

。网站 + API(带 SQL 服务器)

网站+ API(带 SQL 服务器)

Z。其他(使用 SQL 服务器)

编辑: XY在技​​术上是相同的,但X通常会托管网站,而我们的应用程序和 3rd 方解决方案通常会连接到服务器Y上的 API ,以确保仅通过一个渠道感觉到故障。如果X崩溃,那么Y将同时为网站和 API 提供服务,直到X重新上线,反之亦然。

同步 SQL 服务器至关重要。如果客户端通过网站(服务器X)对数据库进行更改,然后激活警报系统W(更改很重要),那么它必须已经同步。

每个系统只使用部分数据库和表,为了节省资源,我们只能立即同步重要数据,每隔几个小时左右就可以同步其余数据。 编辑:不是一个选项


我们将在所有服务器上使用SQL Server 2014(除非有人说服我)

  • 我们是否需要任何3rd 方软件来完成此操作?
  • 我们显然热衷于使用最具成本效益的解决方案,无论是在金钱方面还是资源方面,但必须不惜一切代价结束客户的不满,我们从未失去过一个客户,我们也不打算因为便宜而失去一个.
  • 对于重要表,我们是否必须使用触发器,还是应该使用触发器
  • 我们可以使用视图吗?
    • 也就是说; 在所有 SQL 服务器上创建相同的视图,这些视图从任何服务器加载,该服务器具有该特定表的最新时间戳,以这种方式进行即时同步。真正的同步仍然是必要的,但频率较低。
    • 不确定这将如何工作,但如果有人在某个时候这样做了,并为所有明显和不太明显的问题找到了解决方案,我不会感到惊讶。
  • 我们有几个功能程序作业时不时更改,这些可以同步吗,还是我必须手动更新它们(这没什么大不了的)?

更新:

我们一直在与一家过去帮助我们设置服务器并获得正确版本和许可证的公司取得联系。他们的建议如下:

  • 为每个 SQL 服务器提供一个表的副本,它们将在其中读取和写入数据。
  • 已经从每台服务器上的其他服务器复制了所有表;它只能从中读取

这样,每个服务器都可以独立工作,并且可以访问其他服务器上所做的任何更改。

我不太确定如何检测行的删除,除了运行并查看丢失的内容,除非TRIGGERS在复制表中后同步工作?

编辑:我的另一个问题是在不同的服务器上的同一个表中插入了一些东西,而复制由于网络问题或其他原因而停止时会发生什么。然后我们将有2 行具有相同的 ID,我们没有理由假设后者不是前者的编辑(除了 ID 仅在 4 个服务器中的 2 个中,但它很可能如果网络长时间关闭,则全部为 4)

这些问题都可以通过为创建日期上次编辑日期插入 ID全局 ID添加更多列来解决。但是,我们必须在我们的网站和其他系统上进行大量更改,因此我们宁愿避免它。

  • 我们在使用此解决方案时可能面临的任何其他障碍?
  • 有什么更好的想法吗?

Sin*_*our 2

看来您可以在服务器之间和您需要的对象上使用合并复制,您可以使复制每 1 分钟同步一次,因此每个更改都将在不到一分钟的时间内交付。(不是实时的,但是非常高效)它可以同步表以外的对象,如果你没有非常复杂的数据库设计,它不需要太多维护。您甚至可以在不同数据库中同时对同一记录进行更新,合并复制它具有冲突解决机制,如果可能的话,根据您定义的优先级在您的业务中解决任何冲突。由于更改是收集然后同步的,因此即使服务器出现故障,其他服务器也将正常工作并捕获更改,并且当服务器恢复时,所有内容都将同步。