这个问题与在两个不同的服务器上同步两个数据库时实现冗余有关。首先,我将解释设置,以便您了解问题的背景。
我有两台不同的服务器,在 2 个不同的位置运行具有不同数据库类型的不同操作系统。
Server 1 (local server):
Windows 2003 Small Business Server OS
MSSQL DB Server
Server-Side Language - C# ASP.NET
Server 2 (website server):
Linux CentOS 6
MySQL DB
Server-Side Language - PHP
服务器 1 运行软件的内部管理端,服务器 2 是外部网站接口(服务器 2 有一些管理方面 2)。不幸的是,我们经常看到我们办公室的宽带中断,这意味着两台服务器之间的通信可能并不总是可能的(我们有 3G 宽带冗余,但动态 DNS 需要时间来使用我们的新 IP 地址更新 DNS 记录)我们失去了主要的宽带)。这就是导致每台服务器都需要拥有自己的数据库的原因——因为我们不能让这两方中的一方完全脱机。
因此,我已将它构建到两台服务器中,以便它们都有自己的本地数据库,但也将任何更改应用于其他服务器。如果无法连接到其他服务器,它将查询保存到本地数据库,以便在其他服务器再次可用时可以应用查询。这留下了两个问题:
关于在这样的数据库之间同步的一般要点 - 我怎样才能最好地避免在服务器重新连接时应用冲突的查询?有关我的意思的描述,请参见下面的示例 1。这个问题被最小化了,因为连接应该只丢失几分钟 - 直到 DNS 记录被更新。
应用积压查询时,我希望脚本自动应用查询(而不是手动启动脚本来解决积压查询)。但是,我不确定如果用户在后台应用积压查询时离开页面会产生什么影响。
示例 1:
如果网站端(服务器 2)的用户更改了他们的电子邮件地址或电话号码等,而管理端(服务器 1)的用户更改了该用户的详细信息,那么这两个查询将具有冲突的信息。当服务器重新连接时,这两个查询将应用于另一台服务器 - 条目仍将不同步。
PS对不起,问题太长了。