我们决定将我们的服务器放在美国东西海岸的数据中心,以保持高度冗余。在评估了复制选项的数量之后,除了 VPN 之外,没有其他方法可以为 SQL Server 进行复制。我们正在调查 VPN,但我有以下问题。
我们的大型数据库由媒体信息(图片/电影/音频/pdf)等组成,因此我们不太关心安全性,因为它们不是财务敏感数据。
SQL 2005 是否支持或可以配置为支持通过 Internet 进行复制?如果是,那么我们应该降级到 2005 年吗?
如果为 Web Sync 配置了 SQL 2008 Publisher,我们是否可以编写一个自动程序(C# Windows 服务)来充当拉取订阅者并在订阅者服务器上运行并复制订阅者数据库?
或者在 SQL 中是否有任何可用的 API,我们可以编写自己的程序以非常通用的方式进行复制?(简而言之,我们可以编写自己的基于 C# Windows 服务的订阅者程序吗?)
是的,您可以编写自己的复制,但这不是必需的。您可以在两个数据中心之间使用 SQL Server 复制,而无需在它们之间使用 VPN(始终首选 VPN)。
在配置复制之前,我强烈建议您查看两个站点之间的 SQL Server 数据库镜像。数据库镜像将为您提供另一个站点上数据库的精确副本。
无论哪种情况,您只需要在两个站点的防火墙中打开正确的 TCP 端口(如果 SQL Server 具有私有 IP,则在公共 IP 和私有 IP 之间的两个站点上配置 NAT)。然后简单地告诉复制或数据库镜像使用远程 SQL Server 的公共 IP 作为复制或镜像伙伴。
正如我上面所说,您需要在站点之间设置一个 VPN,以便您可以通过该 VPN 路由所有 Active Directory 复制流量,以及管理远程计算机时的所有管理流量。
正如 mrdenny 所说,只要您有正确的公共端口,这应该不是什么大问题。假设你有更多的基础设施,然后只有几个 MSSQL 盒子,你难道不想要一个 VPN 吗?
SQL Server 合并复制支持 Web 同步。Web 同步使用基于 SSL 的 Web 服务来支持 Internet 上的安全复制。
请参阅:http: //msdn.microsoft.com/en-us/library/ms151763.aspx
这种形式的复制比直接 TCP 连接要慢一些,但这是您为通过 SSL 进行复制所做的权衡。这个解决方案对我们很有效,我希望它对你也很有效,所以你不需要编写自定义同步服务。
我终于编写了基于触发器的自己的复制程序,现在有帮助!但是很可惜即使购买了Sql Standard License,简单复制的东西也需要手写!!!MySQL 提供了通过 Internet 轻松复制的功能,但 mysql 使用 innodb “秘密文件格式”,不仅如此,它还没有很好的自动增长功能,导致更大的表碎片过多。