AlwaysOn Group Listener(3)

为True,那么客户端会同时尝试连接所有子网的IPAddress使用最先响应的那个IP地址来作为最终使用的地址,这样就极大地缩短了连接时间.

如果RegisterAllProvidersIP=0,那只有PrimaryReplica子网下的IP会注册到DNS,当failover发生时,新的primaryreplica子网下的listenerIP会代替之前的IP。这样就避免的之前的情况。

但在实际环境中,我们还需要考虑DNS的TTL值(Time-To-Live),TTL默认值是1200秒。也就是说当failover发生后,失效的DNS记录要在客户端可能要保持20分钟才会失效,在此期间,客户端无法通过listener进行连接。

当然我们可以手工执行ipconfig /flushdns才更新记录,但这样毕竟需要人工介入。

或者缩短TTL,但TTL值越小,DNSServer的性能消耗就严重。需要权衡两者。微软的建议值是300秒(5分钟).

1 OR 0

那么是什么时候应当将RegisterAllProvidersIP这是为1,而什么时候为0呢? 如果您的客户端支持MultiSubnetFailover关键字,那么建议设置成1,并且在连接字符串将MultiSubnetFailover设置为true.

如果客户端不支持MultiSubnetFailover关键字,那么就设置成0,并修改TTL300

更多信息

===

如果Listener使用过T-SQL语句或者SSMS创建的,RegisterAllProvidersIP为1

如果是通过ClusterFailovermanager创建的, RegisterAllProvidersIP为0

可以通过powershell修改RegisterAllProvidersIP的值

Get-ClusterResource "SQL Network Name (SQLMULTISUBCLUS)" | Set-ClusterParameter RegisterAllProvidersIP 1/0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/facebc6e23b933af6ce4099309defd3a.html