Executando um conjunto de réplicas com 1 primário e 2 secundários, me pergunto por que os READs também são feitos no primário. O primário não deveria fazer principalmente os WRITEs e o secundário pode compartilhar o READ-load?!
Estou usando o driver PHP para o mongodb e enviando os detalhes para o conjunto de réplicas. O PHP está rodando dos secundários e no script a conexão inicial vai para o próprio secundário que é localhost lá.
A documentação do php diz que o driver encontrará o primário e os secundários por conta própria assim que se conectar a qualquer membro do conjunto de réplicas, não importa se primário ou secundário.
Depois de verificar a carga e os logs, descobri que atualmente meu pobre primário tem que lidar com todos os READs e os escravos estão entediados.
Não tenho certeza de qual documentação você leu, então desculpe se estou repetindo alguma coisa aqui.
Para distribuir leituras para nós secundários, a maioria dos drivers permite definir um valor readPreference para a sessão atual. Os clientes definem a preferência de leitura por conexão. Com slaveOk, o driver deverá sempre enviar consultas aos secundários, caso estejam disponíveis.
A distribuição de leituras para secundários requer o uso de ReplicaSetConnection com ReadPreference.SECONDARY.
Veja “rs.slaveOk()” para mais informações e este link .
No shell mongo, para habilitar leituras secundárias, emita o seguinte comando:
A documentação do PHP está aqui , mas acho que pode ser a documentação a que você está se referindo.
Para sua informação, aqui está uma discussão antiga sobre isso no MongoDB Google Group.
Se você ainda estiver tendo problemas, recomendo usar o MongoDB Google Group e fornecer mais informações, como a versão do MongoDB que você está usando, a versão do driver PHP, seus arquivos de log, rs.conf() e rs.status().
Como um FYI, você deve ter cuidado com o escalonamento de leitura, pois enviar muitas leituras para os secundários pode resultar em atrasos dos secundários em relação ao primário e tornar-se obsoleto, exigindo assim uma ressincronização completa.