Conceitos gerais:
- asynchronous com Slave
- Master (Primary) - slave (Secondary)
- RF=Replication Factor
- Majority é eleito por consenso
- Escrita é sempre no primario
- Statement-base vs binary (similar crash on recovery journal)
- normalmente o oplog é 5% do tamanho do disco
- o diretório journal é onde guarda os dados
- "Write is truly when committed upon application @ a majority of the set" and "we can get knowledge of this"
- uma coleção no Slave pode haver ordem diferente do primary
Replication:
- Automatic Failover
- Automatic node recovery
// Creating Recovery Set (RS)
levar em consideração portas, dbpath et nome do RS
// Criar diretórios para guardar os arquivos do RS
Ex. para criar 3 diretórios sobre o diretório corrente para guardar os RS
mkdir 1 2 3
mongod --port 27001 --replSet abc --dbpath /user/NomeUser/dba/1
--logpath /user/NomeUser/dba/log.1 --logappend -- oplogSize 50
-- smallfiles --fork
Este comando deve ser repetido para cada RS, trocando com certeza o nome do diretório e o nome do arquivo de log
// como inicializar o RS
- criar uma variáve com os dados de configuração
- Inicializar o RS
- Mongo --port 27001
- config
//exemplo de arquivo de configuração de RS
cfg = {
_id : "abc",
members : [
{ _id:0, host: 10gen.local:27001"},
{ _id:1, host: 10gen.local:27002"},
{ _id:2, host: 10gen.local:27003"}
]
}
// ajuda do help no RS
rs.help()
rs.initiate (cfg)
// status do RS
rs.status()
// para saber o config
rs.config()
// master?
db.isMaster()
// dica
db.system.replset.find().pretty()
//Secondary Reads (para autorizar os slaves a poderem acessar os dados)
rs.slaveOk()
//Restart replicaset
Mongod igual a todos os parametros
//read preferencias -= rs.slaveOk()
//geograpy, seprate workload separete load, availability
// Opções de configuração de leitura
- Primary (default)
- Primary prefered
- Secondary
- Secondary prefered
- Newest (mais próximo)
// reconfiguração de opções
rs.reconfig()
// arbiter não tem dados, só vota ( arbiterOnly: true) e é configurado no config do RS
// priority = 1 default, 0=never - parametro também inserido no arquivo de configuração
// parametros hidden: true (nenhum cliente pode enxerga-lo, somente o primary
// slaveDelay: <seconds> ( 8 * 3600) équivale a 8 horas
// hidden true é automático quando esta configurado como slaveDelay
// arquivo hidden não aparece no hosts
//votes: <n> .Não é recomendável utilizar esta opção. ele pode ser 0 (zero)
// dica para atualizar o arquivo de configuração já existente
cfg.members[2]= lkjsdfjklsdfjkldsfljkdfjkl (parametros)
// oplog guarda as atualizações a serem feitas (normalmente qdo tem slaveDelay)
// na maiorira das vezes, ou quando algo é importante o w deve ser majority ({ w : "majority"}) .
// w=1 para coisas não muito críticas (not super critical)
// dica: é uma boa ter o arbiter um DC diferente como Amazon
Set deve ter < =12 members and < = 7 votes
// para verificar quantos rs estão funcionando (mongod)
- ps -A | grep mongod
Fonte: Estas informações foram retiradas do curso online do website MongoDb University para DBA (M102)
Nenhum comentário:
Postar um comentário