A partir do MongoDB,8.0 você pode configurar um servidor de configuração de configuração para armazenar os dados do aplicação , além dos metadadoscluster fragmentado . Um servidor de configuração que armazena dados de aplicação é chamado de shard de configuração ou servidor de configuração incorporado.
Converter seu conjunto de réplicas em um cluster fragmentado com um fragmento de configuração incorporado pode reduzir:
O número de nós necessários em seu sistema.
complexidade para manter clusters de um fragmento.
Sobre esta tarefa
A partir do MongoDB 8.3, você pode converter um conjunto de réplicas diretamente em um cluster fragmentado com um fragmento de configuração incorporado.
As versões anteriores exigem que você primeiro converta o conjunto de réplicas em um cluster fragmentado com um conjunto de réplicas de servidor de configuração dedicado e, em seguida, converta-o em um com um shard de configuração incorporado.
Controle de acesso
Se o controle de acesso estiver habilitado, o comandotransitionFromDedicatedConfigServerexigirá a ação de autorizaçãotransitionFromDedicatedConfigServerpara o cluster.
A função tem clusterManager a transitionFromDedicatedConfigServer ação de autorização e pode ser atribuída a um usuário.
Antes de começar
A partir do MongoDB 8.3, os conjuntos de réplicas que eram clusters anteriormente fragmentados não podem ser convertidos novamente em conjuntos de réplicas.
A conversão de um cluster fragmentado em um conjunto de réplicas preserva os metadados de fragmentação de sua implantação anterior, incluindo um documento de identidade de shards , que impede que ele se torne novamente um cluster fragmentado. Se você tentar uma conversão autogerenciada de volta para um cluster fragmentado, o MongoDB retornará um erro.
Para converter esses conjuntos de réplicas em clusters fragmentados, entre em contato com o Suporte técnico.
Passos
O exemplo a seguir converte um conjunto de réplicas autogerenciado em um fragmento de configuração que contém dados de usuário preexistentes do conjunto de réplicas.
Coloque o conjunto de réplicas no modo de manutenção .
Execute uma reinicialização contínua no conjunto de réplicas. Inicie cada nó como um servidor de configuração no modo de manutenção :
Pare cada nó, começando com os secundários. Para desligar um servidor, utilize o
db.shutdownServer()método.db.shutdownServer() Reinicie o nó como um fragmento de configuração no modo de manutenção.
mongod --config /etc/mongodb.conf --configsvr \ --replicaSetConfigShardMaintenanceMode \ --configsvr- Inicia a instância do como um servidor de
mongodconfiguração. --replicaSetConfigShardMaintenanceMode- Habilita o modo de manutenção do shard de configuração , que desabilita algumas verificações de inicialização e permite converter um servidor em um shard de configuração incorporado.
Aguarde até que o nó volte a fazer parte do conjunto de réplicas antes de reiniciar o próximo.
Encontre o nó primário.
Utilize o método para identificar o novo nó primário. Se rs.status() db.aggregate() você tiver um conjunto de réplicas grande, use o método para restringir a pesquisa.
db.aggregate( [ { $documents: rs.status().members }, { $match: { stateStr: "PRIMARY" } }, { $project: { _id: 1, name: 1 } ] )
[ { _id: 3, name: "192.0.2.3:27017" } ]
Converta o primário em um fragmento de configuração.
Conecte-se ao nó primary e reconfigure-o para operar como um shard de configuração incorporado:
Use o método para obter a configuração atual e armazená-la em uma
rs.conf()variável:var conf = rs.conf() Defina o campo
configsvr:conf.configsvr = true Incremente o campo
version:conf.version += 1 Reconfigure o nó:
rs.reconfig(conf) Aguarde os secundários replicarem a alteração. Você pode verificar o status executando um pipeline de agregação nos documentos do membro:
db.aggregate( [ { $documents: rs.status().members }, { $group: { _id: null, allConfigSvr: { $min: { $eq: ["$configsvr", true] } } } } ] ) { _id: null, allConfigSvr: true } Quando
allConfigSvrmostratrue, isso indica que a reconfiguração se propagou para todos os nós no cluster.
Reinicie o cluster.
Execute uma atualização contínua para reiniciar o conjunto de réplicas como um servidor de configuração:
Pare cada nó, começando com os secundários. Para desligar um servidor, utilize o
db.shutdownServer()método.db.shutdownServer() Reinicie o nó como um servidor de configuração, não mais no modo de manutenção :
mongod --config /etc/mongodb.conf --configsvr
Inicie o roteador.
Inicie o mongos roteador:
mongos --config /etc/mongodb.conf
Faça a transição do servidor de configuração para um shard de configuração incorporado.
Conecte ao mongos e execute o comando para adicionar o shard de configuração ao transitionFromDedicatedConfigServer cluster.
db.adminCommand( { transitionFromDedidcatedConfigServer: 1 } )
aplicação de ponto no roteador.
Atualize seu aplicação para se conectar ao roteador em vez dos membros do conjunto de mongos réplicas.