Maison base de données tutoriel mysql mongodb sharding基本概念

mongodb sharding基本概念

Jun 07, 2016 pm 02:58 PM
mongodb sharding 基本概念

mongodb sharding基本概念 这里先介绍sharding的架构和几个基本概念术语。 shard server :shard server可以使一个mongod实例,也可以是replica set。 config sever:为了将指定collection存储在多个shard中,那么就需要个key来进行分割,config server存储

mongodb sharding基本概念

 

这里先介绍sharding的架构和几个基本概念术语。

shard server :shard server可以使一个mongod实例,也可以是replica set。

config sever:为了将指定collection存储在多个shard中,那么就需要个key来进行分割,config server存储各个节点的配置信息。shard key的范围,以及分布情况。

route process:由此介入客户端,通过询问config server,确定到那个shard上面查询,在连接相应的shard操作,不保存数据和配置信息。

由于资源限制,在一台机子上做一下实验

Shard Server 1:30000

Shard Server 2:30001

Config Server :40000

Route Process:50000

步骤:

启动shard server 1和2

[mongo@172_16_3_216 mongo]$ mkdir -p /mongo/shard/data0

[mongo@172_16_3_216 mongo]$ mkdir -p /mongo/shard/data1

[mongo@172_16_3_216 mongo]$ touch shard.log

[mongo@172_16_3_216 mongo]$ mongod --shardsvr --port 30000 --dbpath /mongo/shard/data0 --fork --logpath shard.log --directoryperdb

[mongo@172_16_3_216 mongo]$ touch shard1.log

[mongo@172_16_3_216 mongo]$ mongod --shardsvr --port 30001 --dbpath /mongo/shard/data1 --fork --logpath shard1.log --directoryperdb

启动config server

[mongo@172_16_3_216 mongo]$ mkdir -p /mongo/shard/config

[mongo@172_16_3_216 mongo]$ touch config.log

[mongo@172_16_3_216 mongo]$ mongod --configsvr --port 40000 --dbpath /mongo/shard/config --fork --logpath config.log --directoryperdb

启动route process

[mongo@172_16_3_216 mongo]$ touch route.log

[mongo@172_16_3_216 mongo]$ mongos --port 50000 --configdb localhost:40000 --fork --logpath route.log --chunkSize 2

初始化sharding

mongo admin --port 50000

MongoDB shell version: 1.8.4

connecting to: 127.0.0.1:50000/admin

> db.runCommand({addshard:"localhost:30000"})       ----添加shard1

{ "shardAdded" : "shard0000", "ok" : 1 }

> db.runCommand({addshard:"localhost:30001"})        -----添加shard2

{ "shardAdded" : "shard0001", "ok" : 1 }

> db.runCommand({enablesharding:"test"})            ---对数据库test分片

{ "ok" : 1 }

> db.runCommand({shardcollection:"test.tb1",key:{_id:1}})          ---对数据库test中tb1按_id作为key

{ "collectionsharded" : "test.tb1", "ok" : 1 }

验证sharding

> for (var i=1;i

> db.tb1.stats()

{

        "sharded" : true,

        "ns" : "test.tb1",

        "count" : 50000,

        "size" : 3600016,

        "avgObjSize" : 72.00032,

        "storageSize" : 13975552,

        "nindexes" : 1,

        "nchunks" : 4,

        "shards" : {

                "shard0000" : {

                        "ns" : "test.tb1",

                        "count" : 17888,

                        "size" : 1287944,

                        "avgObjSize" : 72.00044722719142,

                        "storageSize" : 2793472,

                        "numExtents" : 5,

                        "nindexes" : 1,

                        "lastExtentSize" : 2097152,

                        "paddingFactor" : 1,

                        "flags" : 1,

                        "totalIndexSize" : 753664,

                        "indexSizes" : {

                                "_id_" : 753664

                        },

                        "ok" : 1

                },

                "shard0001" : {

                        "ns" : "test.tb1",

                        "count" : 32112,

                        "size" : 2312072,

                        "avgObjSize" : 72.00024912805182,

                        "storageSize" : 11182080,

                        "numExtents" : 6,

                        "nindexes" : 1,

                        "lastExtentSize" : 8388608,

                        "paddingFactor" : 1,

                        "flags" : 1,

                        "totalIndexSize" : 1343488,

                        "indexSizes" : {

                                "_id_" : 1343488

                        },

                        "ok" : 1

                }

        },

        "ok" : 1

}

查看sharding信息:

> db.runCommand({listshards:1})

{

        "shards" : [

                {

                        "_id" : "shard0000",

                        "host" : "localhost:30000"

                },

                {

                        "_id" : "shard0001",

                        "host" : "localhost:30001"

                }

        ],

        "ok" : 1

}

新增shard server:

[mongo@172_16_3_216 mongo]$ mkdir -p /mongo/shard/data2

[mongo@172_16_3_216 mongo]$ touch shard2.log

[mongo@172_16_3_216 mongo]$ mongod --shardsvr --port 30002 --dbpath /mongo/shard/data2 --fork --logpath shard2.log --directoryperdb

> db.runCommand({ addshard:"localhost:30002" })

{ "shardAdded" : "shard0002", "ok" : 1 }

> db.runCommand({listshards:1})

{

        "shards" : [

                {

                        "_id" : "shard0000",

                        "host" : "localhost:30000"

                },

                {

                        "_id" : "shard0001",

                        "host" : "localhost:30001"

                },

                {

                        "_id" : "shard0002",

                        "host" : "localhost:30002"

                }

        ],

        "ok" : 1

}

如果分片的表继续有插入数据,那么数据就会分配到新加的片上,而且会根据sharding key进行数据的迁移,和重新分布。

所以建议在添加删除节点的时候,建议避开高峰期,在业务最低谷的时候操作。

删除shard server:

> use admin 

switched to db admin

>  db.runCommand({"removeshard" : "localhost:30002"});

{

        "msg" : "draining started successfully",

        "state" : "started",

        "shard" : "shard0002",

        "ok" : 1

}

很简单,remove就可以了,原来的数据会按照key分配到剩下的shard server上。

最后> db.printShardingStatus()可以查看sharding的信息。注意:操作都是在route process上面,不要登录到shard server操作。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

A quoi sert net4.0 A quoi sert net4.0 May 10, 2024 am 01:09 AM

.NET 4.0 est utilisé pour créer une variété d'applications et offre aux développeurs d'applications des fonctionnalités riches, notamment : programmation orientée objet, flexibilité, architecture puissante, intégration du cloud computing, optimisation des performances, bibliothèques étendues, sécurité, évolutivité, accès aux données et mobile. soutien au développement.

Comment configurer l'expansion automatique de MongoDB sur Debian Comment configurer l'expansion automatique de MongoDB sur Debian Apr 02, 2025 am 07:36 AM

Cet article présente comment configurer MongoDB sur Debian System pour réaliser une expansion automatique. Les étapes principales incluent la configuration de l'ensemble de répliques MongoDB et de la surveillance de l'espace disque. 1. Installation de MongoDB Tout d'abord, assurez-vous que MongoDB est installé sur le système Debian. Installez à l'aide de la commande suivante: SudoaptupDaSudoaptInstall-myongoDB-Org 2. Configuration de la réplique MongoDB Ensemble de répliques MongoDB assure la haute disponibilité et la redondance des données, ce qui est la base de la réalisation d'une expansion de capacité automatique. Démarrer le service MongoDB: Sudosystemctlstartmongodsudosys

Comment assurer la haute disponibilité de MongoDB sur Debian Comment assurer la haute disponibilité de MongoDB sur Debian Apr 02, 2025 am 07:21 AM

Cet article décrit comment construire une base de données MongoDB hautement disponible sur un système Debian. Nous explorerons plusieurs façons de garantir que la sécurité des données et les services continueront de fonctionner. Stratégie clé: réplicaset: réplicaset: Utilisez des répliques pour obtenir la redondance des données et le basculement automatique. Lorsqu'un nœud maître échoue, l'ensemble de répliques élise automatiquement un nouveau nœud maître pour assurer la disponibilité continue du service. Sauvegarde et récupération des données: utilisez régulièrement la commande Mongodump pour sauvegarder la base de données et formuler des stratégies de récupération efficaces pour faire face au risque de perte de données. Surveillance et alarmes: déploier les outils de surveillance (tels que Prometheus, Grafana) pour surveiller l'état de course de MongoDB en temps réel, et

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

Mise à jour majeure de Pi Coin: PI Bank arrive! Mise à jour majeure de Pi Coin: PI Bank arrive! Mar 03, 2025 pm 06:18 PM

Pinetwork est sur le point de lancer Pibank, une plate-forme bancaire mobile révolutionnaire! Pinetwork a publié aujourd'hui une mise à jour majeure sur Elmahrosa (face) Pimisrbank, appelée Pibank, qui intègre parfaitement les services bancaires traditionnels avec des fonctions de crypto-monnaie de pignon (prend en charge l'échange entre les Fiat Currency tels que le Dollar, l'Euro, Usdt, Usdc, Ripiah avec des crypto-monnaies. Quel est le charme de Pibank? Découvrons! Les principales fonctions de Pibank: gestion unique des comptes bancaires et des actifs de crypto-monnaie. Soutenez les transactions en temps réel et adoptez les biospécies

Quelle est la stratégie de sauvegarde Centos MongoDB? Quelle est la stratégie de sauvegarde Centos MongoDB? Apr 14, 2025 pm 04:51 PM

Explication détaillée de la stratégie de sauvegarde efficace de MongoDB dans le cadre du système CentOS Cet article introduira en détail les différentes stratégies de mise en œuvre de sauvegarde MongoDB sur le système CentOS pour assurer la sécurité des données et la continuité des activités. Nous couvrirons les sauvegardes manuelles, les sauvegardes chronométrées, les sauvegardes de scripts automatisées et les méthodes de sauvegarde dans des environnements de conteneurs Docker, et offrir les meilleures pratiques pour la gestion des fichiers de sauvegarde. Sauvegarde manuelle: utilisez la commande mongodump pour effectuer une sauvegarde complète manuelle, par exemple: mongodump-hlocalhost: 27017-u username-p mot de passe-d database name-o / backup Directory Cette commande exportera les données et les métadonnées de la base de données spécifiée vers le répertoire de sauvegarde spécifié.

Comment chiffrer les données dans Debian MongoDB Comment chiffrer les données dans Debian MongoDB Apr 12, 2025 pm 08:03 PM

Le chiffrement de la base de données MongoDB sur un système Debian nécessite de suivre les étapes suivantes: Étape 1: Installez d'abord MongoDB, assurez-vous que votre système Debian a installé MongoDB. Sinon, veuillez vous référer au document officiel MongoDB pour l'installation: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/step 2: générer le fichier de clé de cryptage Créer un fichier contenant la clé de chiffrement et définir les permissions correctes: ddif = / dev / urandof = / etc / mongodb-keyfilebs = 512

Comment trier l'index MongoDB Comment trier l'index MongoDB Apr 12, 2025 am 08:45 AM

L'indice de tri est un type d'index MongoDB qui permet de tri les documents dans une collection par champs spécifiques. La création d'un indice de tri vous permet de trier rapidement les résultats de la requête sans opérations de tri supplémentaires. Les avantages incluent le tri rapide, les requêtes de remplacement et le tri à la demande. La syntaxe est db.collection.CreateIndex ({champ: & lt; tri Ordre & gt;}), où & lt; tri, Ordre & gt; est 1 (ordre ascendant) ou -1 (ordre décroissant). Vous pouvez également créer des index de tri à plusieurs champs qui trient plusieurs champs.

See all articles