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