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 com um conjunto de réplicas de servidor de configuração dedicado e, em seguida, converta-o em um com um fragmento de configuração incorporado.
Controle de acesso
Se o controle de acesso estiver habilitado, o comando transitionFromDedicatedConfigServer exigirá a ação de autorização transitionFromDedicatedConfigServer para 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 document de identidade de fragmentos, 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 método
db.shutdownServer().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
mongodcomo um servidor de configuração. --replicaSetConfigShardMaintenanceMode- Habilita o modo de manutenção do fragmento de configuração, que desabilita algumas verificações de inicialização e permite converter um servidor em um fragmento 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 rs.status() para identificar o novo nó primário. Se você tiver um conjunto de réplicas grande, use o método db.aggregate() 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ó primário e reconfigure-o para operar como um fragmento de configuração incorporado:
Use o método
rs.conf()para obter a configuração atual e armazená-la em uma 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 nó:
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 método
db.shutdownServer().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 roteador mongos:
mongos --config /etc/mongodb.conf
Faça a transição do servidor de configuração para um fragmento de configuração incorporado.
Conecte ao mongos e execute o comando transitionFromDedicatedConfigServer para adicionar o fragmento de configuração ao cluster.
db.adminCommand( { transitionFromDedidcatedConfigServer: 1 } )
aplicativo de ponto no roteador.
Atualize seu aplicativo para se conectar ao mongos roteador em vez dos membros do conjunto de réplicas.