我可以通过 SSH 隧道进行 SQL Server 2005 合并复制吗?

Posted

技术标签:

【中文标题】我可以通过 SSH 隧道进行 SQL Server 2005 合并复制吗?【英文标题】:Can I do SQL Server 2005 merge replication through an SSH tunnel? 【发布时间】:2010-09-19 04:07:22 【问题描述】:

我们的用例是一个负责帐户、会话、许可证等的数据库——它需要在客户端启动时进行轮询,因此高可靠性至关重要。因此,我们希望在物理上独立的网络中跨不同服务器进行复制,以防整个数据中心发生故障。我已经成功设置了对同一网络中另一台服务器的推送订阅,所以这通常有效。我现在需要连接到网络外部的服务器。

复制不能直接跨网络工作。微软suggests either a *** or web replication。后者让我觉得效率低下(他们确实说“注意:Web 同步是为与便携式计算机、手持设备和其他客户端同步数据而设计的。Web 同步不适用于大容量的服务器到服务器应用程序。”)

前者,***,可以工作,但我仍然认为它是一个不必要的复杂解决方案(更不用说增加的安全问题的可能性),以持续运行 *** 连接。 我宁愿只运行一个 SSH 隧道。 但是,我找不到任何文章解释如何执行此操作并且与 mysql 无关。

我在订阅服务器上设置了 SSH 服务器,并使用 PuTTY 建立了从 <publisher>:1434<subscriber>:1433 的隧道。但是,我无法让 SQL Server Management Studio 以这种方式连接(我不确定它是否支持 : 端口语法)。我还在<publisher> 的SQL Server 配置管理器上设置了一个别名,@@servername<subscriber> 指向localhost:1434。连接到那个似乎也不起作用。

我使用了推送订阅选项,所以我认为发布者需要连接到订阅者,而不是反过来。

两台服务器均使用默认实例,并在 Windows Server 2003 SP 2 上运行 SQL Server 2005 SP 2。订阅服务器上的 SSH 服务器为 freeSSHd 1.2.1。

这可能吗?有没有另一种方法可以利用 SSH 假装机器存在于同一个网络中?还是我必须使用 ***?

【问题讨论】:

我在回答中添加了一些关于这个域问题的文字 【参考方案1】:

当您谈到服务器的不同位置时,是否也意味着不同的域?您对 Web 复制的评论是正确的,但仅适用于对数据库所做的日常更改。您的初始快照可以是任意大小,即使它是一个巨大的数据库。如果您的每日更新是有限的(对我来说几 1000 次似乎没问题),那就去吧。很快!

编辑:

当您开始考虑在服务器之间交换数据时,存在一个主要的域/安全问题。如果您需要通过 *** 或任何专用链接连接属于不同域的服务器,并且如果您不想通过 SQL 安全(避免它!),您将面临与域信任相关的特定(和许可!)问题. Web 复制的聪明之处之一是通过 https 协议保护连接来避免此类问题(和额外费用)。

【讨论】:

域是相同的(虽然我看不出有什么不同),但网络是完全独立的。我会研究网络复制,看看是否足够好,谢谢!【参考方案2】:

我知道这是一篇旧帖子,但希望这会有所帮助:SQL Server Management Studio 使用逗号将主机与端口分开。

How do you specify a different port number in SQL Management Studio?

【讨论】:

【参考方案3】:

作为一名从业者,我认为 SSH 隧道(它允许客户端调用自身以调用服务器)不会起作用。如果您打开 ssh 隧道,您可能需要保持 ssh 会话打开。 SSH 不适合将长时间打开的连接作为第一优先级,它会失败。

最好的选择是一个合适的虚拟专用网络(而不是那些来自互联网的代理服务器每年向您收取 10 美元)。如果您想节省成本,可以使用 Open***。 *** 的好处是所有这些节点(数据库服务器)都可以假装它们在同一个本地网络中并且......它会工作。

【讨论】:

以上是关于我可以通过 SSH 隧道进行 SQL Server 2005 合并复制吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中进行 ssh 隧道

PostgreSQL 通过 SSH 隧道

无法使用 sqlcmd 通过 SSH 隧道访问 SQL 数据库

我可以将这些 SSH 隧道命令组合成一个命令吗?

通过 SSH 隧道的 mySQL 连接字符串,无需密码

原创Linux基础之SSH隧道/端口转发