标准版与企业版 SQL Server 2016 SP1 只读副本
Posted
技术标签:
【中文标题】标准版与企业版 SQL Server 2016 SP1 只读副本【英文标题】:Standard vs Enterprise Edition SQL Server 2016 SP1 ReadOnly Replica 【发布时间】:2017-06-16 13:30:22 【问题描述】:首次准备 3 层架构(IIS/SQL Server)。我想为一开始添加 2 个应用程序服务器和两台机器 SQL Server 集群。到目前为止有 DB Mirror 和 Log Shipping 的经验。
根据我的阅读,DB Mirror 已被弃用,我不想使用它。但是,如果客户购买 SQL Server 2016 SP1 标准版许可证,则第二个(唯一)副本不是只读的,即不可访问??
我想将次要副本用于只读查询(以卸载主要副本)。我对数据同步延迟几秒钟(甚至一分钟)没问题,但是我希望始终得到辅助副本的响应。如果我理解正确,则无法使用 Basic 2 节点 AOAG 完成此操作??
日志传送可能不是一个选项,因为备份/复制/恢复(应用逻辑日志)序列在一分钟间隔内没有多大意义? 如果我将 HA 功能与性能功能混合在一起,我什至可以为 RO 目的添加额外的服务器,只要我实现了我们需要的功能。(所以一个副本用作 HA 功能,另一个“某种类型的复制”用作 RO 实例)我还需要将数据库复制到远程位置,但我认为日志传送将在这里完成工作(我想一个实例同时服务 AOAG 和日志传送没有限制,请分享任何经验)
此外,我想问一下,在辅助服务器上应用逻辑日志或 REDO 线程时,客户端会收到什么响应、错误或延迟(对于日志传送和 AOAG?
我们可以在客户端设置一些超时(等待延迟),但我认为它会在从 RW 实例读取时执行不足。
问题:
长话短说,有什么方法可以让我在使用标准版软件时对一个始终可用于 READS 的实例实现“连续事务日志恢复”之类的功能?
谢谢。 亚历山大
【问题讨论】:
Stack Overflow 是针对特定编程问题的。由于这是一个数据库管理问题,它属于 Database Administrators Stack Exchange 页面。 【参考方案1】:您可以像镜像一样创建次要的快照..您需要遵循一些规则,以下是它们
1.副本角色必须是 PRIMARY 或 SECONDARY,不能处于 RESOLVING 状态。
下面还有微软的声明
某些 Always On 可用性组条件会导致源数据库及其数据库快照都重新启动,从而暂时断开用户连接。这些条件如下:
主副本更改角色,无论是因为当前主副本脱机并在同一服务器实例上重新联机,还是因为可用性组故障转移。
数据库进入次要角色。
如果托管数据库快照的可用性副本发生故障转移,数据库快照将保留在创建它们的服务器实例上。故障转移后,用户可以继续使用快照。如果您的环境中存在性能问题,我们建议您仅在由配置为手动故障转移模式的辅助副本托管的辅助数据库上创建数据库快照。如果您曾经手动将可用性组故障转移到此辅助副本,您可以在另一个辅助副本上创建一组新的数据库快照,将客户端重定向到新的数据库快照,并从现在的主数据库中删除所有数据库快照。
使用的参考:https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/database-snapshots-with-always-on-availability-groups-sql-server
【讨论】:
【参考方案2】:在使用标准版软件时,我有什么方法可以实现“连续事务日志恢复”到一个始终可用于 READS 的实例?
标准版支持事务复制,可用于创建全部或部分主数据库的近实时可读(逻辑)副本。在 TR 中,读取日志记录以重构应用于订阅者的 DML 语句,因此它是逻辑复制,而不是物理复制。事务复制通常不用于高可用性。
在辅助节点上应用逻辑日志或 REDO 线程时客户端收到什么响应、错误或延迟(对于日志传送和 AOAG?
对于日志传送或数据库快照,必须断开所有读取客户端的连接才能及时前滚副本。如here 所述,您可以使用同义词来缓解这种情况,但代价是一些复杂性。
对于 AlwaysOn 可用性组可读副本,该副本在应用日志记录时是连续可读的。
【讨论】:
以上是关于标准版与企业版 SQL Server 2016 SP1 只读副本的主要内容,如果未能解决你的问题,请参考以下文章