php-通过不可靠的网络连接在MySQL和SQL Server之间同步数据

收藏

提问

当两个数据库在2个不同的服务器上同步时,此问题与实现冗余有关.首先,我将解释该设置,以便您可以了解问题的背景.

我有两个不同的服务器,分别在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)更改了该用户的详细信息,则这两个查询将具有冲突的信息.当服务器重新连接时,这两个查询将应用于另一台服务器-条目仍将不同步.

附言抱歉,问题很长.

最佳答案

不要重新发明数据库复制.请改用数据库软件提供的软件.

但是,这意味着您应该在两端切换到相同的RDBMS. MySQL复制在WAN连接上相当可靠,并且将在平台和版本之间可靠地工作.