Recentemente, assumi a administração de um grupo de disponibilidade composto por dois nós, modo de confirmação síncrona.
A configuração do grupo fica assim:
Meu entendimento é que, com a opção Readable Secondary definida como Yes
em ambas as réplicas, qualquer string de conexão com applicationIntent=ReadOnly será roteada para Node1.
Da mesma forma, se eu alterar a opção Readable Secondary do Node2 para 'Read-intent', qualquer string de conexão com applicationIntent=ReadOnly será roteada para o Node2.
Por que, então, essa string de conexão é roteada para o Node2 quando ambos os nós estão definidos como 'Readable Secondary = Yes':
'Fonte de dados=editado.domínio.com; Catálogo Inicial= MeuBanco de Dados; ApplicationIntent=ReadOnly; ID do usuário=Usuário; Senha=********; MultiSubnetFailover=True'
Basicamente, alterar o parâmetro 'ReadOnly' para 'ReadWrite' faz com que a conexão vá para Node1. Alterar de volta para 'ReadOnly' faz com que a conexão seja roteada para o Node2. Como isso é possível sem a opção 'Readable Secondary= Read-intent'?
EDIT: saída de
SELECT ag.name as "Availability Group", ar.replica_server_name as "When Primary Replica Is",
rl.routing_priority as "Routing Priority",
ar2.replica_server_name as "RO Routed To",
ar.secondary_role_allow_connections_desc,
ar2.read_only_routing_url
FROM sys.availability_read_only_routing_lists rl
inner join sys.availability_replicas ar on rl.replica_id = ar.replica_id
inner join sys.availability_replicas ar2 on rl.read_only_replica_id = ar2.replica_id
inner join sys.availability_groups ag on ar.group_id = ag.group_id
ORDER BY ag.name, ar.replica_server_name, rl.routing_priority
Para qualquer pessoa que precise de ajuda para entender isso, achei o seguinte útil:
Não, ele deve primeiro ir para o nó 2 porque o nó 2 é uma réplica somente leitura e o nó 1 é uma réplica primária que servirá para ler as operações de gravação. Conforme BOL
O que é saída de
Portanto, a partir da saída, você pode ver quando o nó 1 é a réplica primária, as conexões somente leitura irão para o nó 2 como primeira preferência e vice-versa