Pensamos em passar de mestre-escravos para MongoDB
com replica-set
. Agora eu me pergunto se MongoDB
as réplicas também são configuradas como read-only slaves
ou se cada uma mongos
é capaz de escrever e sincronizar as outras como um farm mestre-mestre?
Isso pode reduzir a fonte única de erro ( master down
) e também equilibrar o write-load
escalonamento com melhor desempenho (não apenas para leitura, mas também gravação...).
Um conjunto de réplicas pode ter apenas um primário em um determinado momento (um mestre) com os outros nós sendo secundários (escravos) e, portanto, eles não são nada como a replicação mestre-mestre (ou seja, vários mestres).
Definitivamente, você deve mudar para um conjunto de réplicas da configuração mestre/escravo porque essa é a maneira preferida e recomendada de replicar. Dos documentos do MongoDB: "conjuntos de réplicas são um superconjunto funcional de mestre/escravo e um código mais novo e robusto".
Quando um primário falha, um dos secundários será automaticamente eleito como um novo primário (você pode ver os documentos para ver os detalhes de como isso acontece).
Você não pode obter balanceamento de gravação por ter um conjunto de réplicas - você só pode distribuir gravações fragmentando no MongoDB.
Em primeiro lugar, não estou descartando nada de
@Asya Kamsky
. Mas eu gostaria de escrever algo sobre a réplica Set: Mater vs Slave .De acordo com a fonte documentada do MongoDB, a replicação mestre-escravo é o modo de replicação mais geral suportado pelo . Este modo é muito flexível e pode ser usado para , , . A configuração básica é iniciar um e um ou mais , cada um dos quais conhece o endereço do arquivo . Para iniciar o , execute . Para iniciar um , execute , onde é o endereço do que acabou de iniciar.
MongoDB the Definite Guide
MongoDB
backup
failover
read scaling
master node
slave nodes
master
master
mongod --master
slave
mongod --slave --source master_address
master_address
master node
Suponha que, primeiro, crie um diretório para
master
armazenar os dados e escolha umport
(10000
):Agora configure o
slave
, escolhendo um diretório de dados e uma porta diferentes. Para um escravo, você também precisa dizer quem é seu mestre com a--source
opção:All slaves must be replicated from a master node
. Não há atualmente nenhum mecanismo para replicar a partir de um escravo ( encadeamento em série ) , porque os escravos não mantêm os seus própriosoplog
.Não há limite explícito para o número de
slaves
em umcluster
, mas ter mil escravos consultando um único mestre provavelmente sobrecarregará o nó mestre .A
replica set
é basicamente ummaster-slave
cluster com arquivosfailover
. A maior diferença entre um cluster mestre-escravo e um conjunto de réplicas é que um conjunto de réplicas não possui um único mestre: um é eleito pelo cluster e pode mudar para outro nó se o mestre atual cair. No entanto, eles são muito semelhantes: um conjunto de réplicas sempre tem umsingle master node
(chamado primário ) e um ou mais escravos (chamadossecondaries
).O registro de operações mantido pelo mestre é chamado de oplog , abreviação de log de operação. O
oplog
é armazenado em um banco de dados especial chamado local, naoplog.$main
coleção. Cada documento nooplog
representa uma única operação executada no servidor mestre .No mestre-escravo na réplica definida no cenário de failover e eleição primária depende da condição e configuração entre mestre e escravo assim
primary
servidor fordown
, osecondary
servidor se tornarámaster
.primary
cair, oshighest-priority
servidores irão comparar comoup-to-date
estão.Primary Server
cair entre os secundários, a prioridade mais altamost-up-to-date
server
se tornará o arquivonew primary
.Usar
slaves
para escalarreads
é que aMongoDB
replicação éasynchronous
. Isso significa que quando os dados são inseridos ou atualizados nomaster
, os dados noslave
serãoout-of-date
momentâneos. É importante considerar isso se você estiver atendendo a algumas solicitações usando consultas paraslaves
.É muito parecido com "escrever e sincronizar os outros como uma fazenda mestre-mestre". como a documentação do MongoDB disse, "conjuntos de réplicas são uma forma de replicação mestre/escravo assíncrona, adicionando failover automático e recuperação automática de nós membros." Verifique http://www.mongodb.org/display/DOCS/Replica+Sets