ApsaraDB for MongoDB replica set instances suportam alta disponibilidade e separação de leitura e escrita. Para usar esses recursos, conecte-se corretamente à instância e configure os parâmetros necessários.
Contexto
O nó primário de uma instância de replica set não é fixo. Se o nó primário falhar, o sistema aciona um failover entre primário e secundário e rebaixa o primário original para nó secundário.
Se você se conectar ao banco de dados pelo endpoint direto do nó primário, todas as operações de leitura e escrita serão enviadas a esse nó, o que pode causar carga elevada. Caso ocorra um failover entre primário e secundário, o nó conectado torna-se secundário e o cliente não consegue mais executar operações de escrita. Esse cenário pode impactar severamente seus negócios.
Alta disponibilidade
ApsaraDB for MongoDB fornece uma connection string URI para garantir alta disponibilidade. Essa URI contém os endereços de todos os nós da instância. Após um failover entre primário e secundário, as solicitações de escrita são roteadas automaticamente para o novo nó primário, evitando interrupções nas operações de escrita.
Para mais informações sobre como se conectar a uma instância de replica set, consulte Conectar a uma instância de replica set.
Para garantir alta disponibilidade em ambiente de produção, conecte suas aplicações à instância pela connection string URI.
Todos os drivers oficiais do MongoDB suportam connection string URIs.
Obter o endereço de alta disponibilidade
Acesse a página Replica Set Instances, selecione o grupo de recursos e a região e clique em ID da instância desejada.
No painel de navegação à esquerda, clique em Database Connections.
-
Obtenha a connection string URI de alta disponibilidade. Na seção Private Connection - Virtual Private Cloud, localize a linha Connection String URI, marcada como Recommended, e copie o endereço. O formato do endereço é:
mongodb://root:****@dds-InstanceID.mongodb.rds.aliyuncs.com:3717,dds-InstanceID.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-ReplicaSetID.Ao se conectar pela connection string URI, o cliente detecta automaticamente as funções dos nós primário e secundário. Se ocorrer um failover entre primário e secundário, o cliente redireciona automaticamente as operações de escrita para o novo nó primário, garantindo alta disponibilidade.
Separação de leitura e escrita
A connection string URI oferece os parâmetros readPreference e readPreferenceTags. O parâmetro readPreference controla a separação de leitura e escrita e o balanceamento de carga. Já o parâmetro readPreferenceTags prioriza o roteamento de solicitações de leitura para nós com tags específicas.
Combine os parâmetros readPreference e readPreferenceTags para atender a diversos casos de uso.
|
Fallback em caso de falha de leitura |
Nó de destino |
Parâmetro |
|
Rotear solicitações de leitura para o nó primário em caso de falha |
Preferir o nó primário |
|
|
Preferir nós secundários e somente leitura |
|
|
|
Preferir nós secundários (apenas instâncias baseadas em disco em nuvem) |
|
|
|
Preferir nós somente leitura |
|
|
|
Não rotear solicitações de leitura para o nó primário em caso de falha |
Ler apenas de nós secundários e somente leitura |
|
|
Ler apenas de nós secundários (apenas instâncias baseadas em disco em nuvem) |
|
|
|
Ler apenas de nós somente leitura |
|
Separação de leitura e escrita com connection string URI
Para implementar a separação de leitura e escrita, anexe os parâmetros readPreference e readPreferenceTags à connection string URI.
Por exemplo, para rotear todas as solicitações de escrita para o nó primário e as de leitura exclusivamente para nós somente leitura, sem fallback, anexe &readPreference=secondary&readPreferenceTags=role:readonly à connection string URI. O exemplo a seguir mostra uma URI completa:
mongodb://root:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&readPreference=secondary&readPreferenceTags=role:readonly
O ambiente de teste utilizou as seguintes versões de drivers:
pymongo 3.11.4
mongodb-driver-sync 4.6.1
mongosh 2.2.15