总结
如何仅当副本为辅助副本时才允许一个副本(在 Sql Server 可用性组中)上的某些用户进行只读访问,而当副本成为主副本时则拒绝该访问?
解释
我正在考虑一个可用性组设置,其中将有两个副本,其中一个副本在作为辅助副本时可读。非任务关键型读取器应用程序(如 BI 等)连接到辅助副本;它们会在该副本上造成大量负载;有大量未使用的资源(因为它是辅助副本),所以不用担心。
现在,主服务器发生故障,辅助服务器成为主服务器;读取负载是不可取的,因为它会影响任务关键型负载(这些负载将转移到新的主服务器)。我们可以容忍非任务关键型读取器的中断,因此我们希望其各自的用户被禁用并被踢出,直到副本再次成为辅助服务器。
这怎么可能呢?
当副本从辅助角色变为主角色时,这不是移动只读流量的正确方法。每次副本角色更改时禁用用户访问需要定制解决方案。我建议您使用 Microsoft 的内置解决方案,我在下面提到了这一点。
只读路由在 SQL Server 2016 (13.x) 及更高版本中可用。在设置只读路由之前,请确保您已满足先决条件。以下是有关为可用性组设置只读路由的文档。
如果没有可用的辅助副本,您必须决定如何处理只读流量。您可以将该流量发送到主副本(将主副本包含在 read_only_routing_list 中)或等到至少有一个辅助副本可用。
在计划将只读工作负载卸载到 Always On 可用性组的辅助副本之前,还需考虑其他一些事项