SQL Server 中使用镜像、日志传送、复制和集群的场景都有哪些

Posted

技术标签:

【中文标题】SQL Server 中使用镜像、日志传送、复制和集群的场景都有哪些【英文标题】:What are the scenarios for using mirroring, log shipping, replication and clustering in SQL ServerSQL Server 中使用镜像、日志传送、复制和集群的场景有哪些 【发布时间】:2010-10-06 06:05:57 【问题描述】:

据我所知,SQL Server 提供了 4 种技术来提高可用性。

我认为这些是主要的使用场景,总而言之:-

1) 复制将主要适用于在线-离线数据同步场景(笔记本电脑、移动设备、远程服务器)。

2) 日志传送可用于手动切换故障转移服务器,而

3) 数据库镜像是一种自动故障转移技术

4) 故障转移集群是一种高级数据库镜像。

我说的对吗?

谢谢。

【问题讨论】:

优秀的答案。我想补充一件事。现在快到 2013 年了。女士建议不要使用镜像。它最终会消失。此外,镜像仅限于一个合作伙伴。 【参考方案1】:

故障转移群集是一种可用性技术,可在硬件级别提供冗余,并且构建在 Windows 群集技术之上,即它并非特定于 SQL Server。

例如,服务器 A 上的处理器发生故障。幸运的是,服务器 A 是 SQL Server 群集的一部分,因此服务器 B 在几秒钟内就接管了提供 SQL Server 服务的工作。所有这些都是自动发生的,并且对数据库用户和/或集群所服务的应用程序是透明的。

数据库镜像和集群之间的主要区别在于 SQL 集群在实例级别提供冗余,而数据库镜像在数据库级别提供冗余。

以下链接提供了您可能会发现使用的这两种技术之间的比较。

http://msdn.microsoft.com/en-us/library/ms191309(SQL.90).aspx

日志传送更多地被认为是一种冗余技术。

例如,它可用于提供主环境的完整副本,通常用作可手动联机的热备用。这可用于为您的备份策略提供额外的冗余。 通过在备用位置/服务器上创建生产数据库的只读副本,日志传送还可用于从主服务器卸载报告。

复制是一种非常多样化的技术,可用于满足许多不同的场景,其中的选择将决定所实施的特定复制类型。

例如,合并复制可用于通过将应用程序的工作负载分散到多个服务器(即分布式处理架构)来支持分布式处理。

合并复制通常需要一个相对了解其环境的应用程序。还必须考虑冲突解决等技术,以确保整个集成环境中的数据一致性。

事务复制可以以类似的方式用于记录传送,但是您可以限制复制到订阅者的特定对象。如果报表只需要一部分表,这将很有用。

我希望这可以为您解决一些问题。您可以在 SQL Server 在线书籍中找到有关每种技术的大量文档,或者在 Google 中搜索每种技术。也就是说,如果您有任何具体问题,我很乐意为您提供帮助,因此请随时联系我。

干杯,约翰

【讨论】:

【参考方案2】:

在 SQL 2008 Enterprise 中,还有一种叫做变更数据捕获 (CDC) 的东西,我们在我工作的地方成功地使用了它。

我们有一个过度规范化的数据库,这使得获取信息变得非常困难。我们需要在将这些数据复制到另一台服务器以获取报告等的同时更改数据结构。

它对我们非常有效。

【讨论】:

我最近与一位使用 SQL Server 2005 的用户交谈,他还说他们的数据库过度规范化,他们将数据复制到报表服务器。数据库不应该同时处理事务和报告吗?为什么我必须投资 2 台服务器并进行复制?我认为这是一个开销。 @Chakra 这不是规则,它只是在您的服务器无法很好地使用用于生产工作负载和报告的数据库时使用。【参考方案3】:

AFAIK 日志传送和复制可能更适合反过来。

日志传送是计划同步,因此复制更适合手动切换,因为备份服务器将尽可能保持最新,除非您有任何通信问题(但是,日志传送也会有同样的问题)。

离线数据不像备份服务器那样对延迟敏感,但我个人认为根本不需要日志传送,我看不出它何时会是更合适的替代方案到复制(但可能是在 sql2005 之前没有实现复制)

也许我将复制与镜像混淆了,请注意,镜像不会为您提供自动故障转移,只有 HA-cluster 为您提供该功能,意思是:

至少使用 SQL Server 2005 标准、Windows Enterprise 和共享数据存储(如 SAN)。

【讨论】:

你错了。镜像具有故障转移功能,但只有在您使用见证 sql 实例时才会自动进行。镜像工作在数据库级别,它将事务发送到远程 sql 实例,如果它处于高安全模式,则仅在远程端运行事务时才会提交事务。与事务复制的区别在于它允许模式更改和添加表,因为它是一个完整的数据库镜像。复制绑定到数据库对象,因此如果您在数据库上创建新对象,它不会自动添加。 LogShipping 具有更高的同步延迟。 是的,在输入这​​个答案之前,进一步的调查给了我这个结论。但是,HA-cluster 具有镜像没有的两个节点之间完全切换的优势。故障转移后,您必须再次手动设置“向后”镜像。

以上是关于SQL Server 中使用镜像、日志传送、复制和集群的场景都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server为啥日志文件越来越大

SQL Server AlwaysOn架构及原理

几个技巧解析SQL Server群集的难题[2]

sql server 高可用日志传送

SQL Server 日志传送配置屏幕

SQL Server复制情况下的高可用方案镜像+复制