Partage MongoDB
Partage
Il existe un autre type de cluster dans Mongodb, la technologie de partage, qui peut répondre aux besoins de la croissance massive du volume de données de MongoDB.
Lorsque MongoDB stocke d'énormes quantités de données, une seule machine peut ne pas suffire pour stocker les données ou fournir un débit de lecture et d'écriture acceptable. À l'heure actuelle, nous pouvons diviser les données sur plusieurs machines afin que le système de base de données puisse stocker et traiter davantage de données.
Pourquoi utiliser le partitionnement
Copiez toutes les opérations d'écriture sur le nœud principal
Les données sensibles retardées seront interrogées sur le nœud maître
Un seul jeu de réplicas est limité à 12 nœuds
Lorsque le volume de requêtes est énorme, la mémoire sera insuffisante.
Disque local insuffisant
La mise à l'échelle verticale coûte cher
Partage MongoDB
La figure suivante montre la distribution de la structure du cluster fragmenté dans MongoDB :
La figure ci-dessus comporte principalement trois composants principaux comme suit :
Shard :
est utilisé pour stocker les blocs de données réels. Dans l'environnement de production réel, un rôle de serveur de fragments peut être joué par plusieurs machines et un seul ensemble de relicas. point de défaillance de l'hôte
Serveur de configuration :
instance mongod, qui stocke l'intégralité des métadonnées du cluster, y compris les informations sur les fragments.
Routeurs de requêtes :
Routage frontal, le client y accède et fait ressembler l'ensemble du cluster à une seule base de données, et l'application frontale peut être utilisée de manière transparente.
Instance partitionnée
La distribution des ports de la structure de partitionnement est la suivante :
Shard Server 1:27020 Shard Server 2:27021 Shard Server 3:27022 Shard Server 4:27023 Config Server :27100 Route Process:40000
Étape 1 : démarrer le serveur Shard
[root@100 /]# mkdir -p /www/mongoDB/shard/s0 [root@100 /]# mkdir -p /www/mongoDB/shard/s1 [root@100 /]# mkdir -p /www/mongoDB/shard/s2 [root@100 /]# mkdir -p /www/mongoDB/shard/s3 [root@100 /]# mkdir -p /www/mongoDB/shard/log [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork .... [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork
Étape 2 : Démarrez le serveur de configuration
[root@100 /]# mkdir -p /www/mongoDB/shard/config [root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork
Remarque : Ici, nous pouvons le démarrer exactement comme démarrer le service mongodb ordinaire, sans ajouter les paramètres --shardsvr et configsvr. Comme la fonction de ces deux paramètres est de changer le port de démarrage, nous pouvons simplement spécifier le port nous-mêmes.
Étape 3 : Démarrer le processus de route
/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500
Dans les paramètres de démarrage de mongos, l'élément chunkSize est utilisé pour spécifier la taille du morceau. L'unité est Mo. La taille par défaut est de 200 Mo.
Étape 4 : Configurer Sharding
Ensuite, nous utilisons MongoDB Shell pour nous connecter à mongos et ajouter un nœud Shard
[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000 MongoDB shell version: 2.0.7 connecting to: 127.0.0.1:40000/admin mongos> db.runCommand({ addshard:"localhost:27020" }) { "shardAdded" : "shard0000", "ok" : 1 } ...... mongos> db.runCommand({ addshard:"localhost:27029" }) { "shardAdded" : "shard0009", "ok" : 1 } mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库 { "ok" : 1 } mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}}) { "collectionsharded" : "test.log", "ok" : 1 }
Étape 5 : Il n'est pas nécessaire de changer grand-chose dans le code du programme. Connectez simplement la base de données à l'interface 40000