Maison base de données tutoriel mysql Mongo服务器集群配置学习三分片

Mongo服务器集群配置学习三分片

Jun 07, 2016 pm 02:58 PM
mongo 分片 学习 服务 服务器 配置 集群

Mongo服务器集群配置学习三分片 MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。 在以下情况下需要运用分片: 1.服务器的磁盘不够用。 2.单个Mongod不能满足写数据的性能需求。 3.

Mongo服务器集群配置学习三——分片

MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。
在以下情况下需要运用分片:
1.服务器的磁盘不够用。
2.单个Mongod不能满足写数据的性能需求。
3.需要将大数据放入内存中提高性能。
下图为我们要实现的分片结构:
Mongo服务器集群配置学习三分片
从图中我们看到原本一台Mongod节点被分成了A和B两个分片,由路由D读取配置服务器C的分片策略,然后决定数据存储在哪个分片上,而路由隐藏了决策的细节,用户直接访问路由就可以享受分片带来的优点,而不必关心路由读取分片的细节。
配置步骤:
1.创建配置服务器C
创建配置文件如下,端口为10000,并启动mongod -f config.cnf

dbpath=D:\mongodb\test\sharded\C\Data
bind_ip=127.0.0.1
port=10000

2.创建路由服务器D
路由器的配置文件如下:

bind_ip=127.0.0.1
port=20000
configdb=127.0.0.1:10000

其中configdb=127.0.0.1:10000配置的是路由监听的配置服务器的地址
路由器用mongos启动

mongos -f config.cnf

  注意:配置服务器要先启动,因为路由服务器需要监听配置服务器。
3.新建分片服务器A和B
A的配置,然后启动A

dbpath=D:\mongodb\test\sharded\A\Data
bind_ip=127.0.0.1
port=8001  

B的配置,然后启动B

dbpath=D:\mongodb\test\sharded\B\Data
bind_ip=127.0.0.1
port=8002

4.建立集群中分片服务器与路由器的连接
这个操作需要在路由器中配置,打开路由器的shell,执行数据库命令
db.runCommand({addshard:"127.0.0.1:8001",allowLocal:true})
db.runCommand({addshard:"127.0.0.1:8002",allowLocal:true})
Mongo服务器集群配置学习三分片

 可以看到执行添加分片的操作要在admin库中进行
5.为业务数据库添加分片功能
为person添加分片功能,在路由中执行db.runCommand({"enablesharding":"person"})
6.为集合进行分片
  片键:集合中的一个键作为分拆的依据。
  为person库的集合info进行分片,key字段设置了片键
  执行下列命令db.runCommand({"shardcollection":"person.info","key":{"_id":1}})
7.添加一定的大数据量,测试分片的功能
用脚本插入80万条数据
for(i=1;i   db.info.insert({name:i})
}
在分别在分片服务器A和B上查询数据量,如图:看到这800001条数据已经分别存放在2个分片中了
Mongo服务器集群配置学习三分片

正式环境配置
成功地构建分片需要如下条件:
1.多个配置服务器
2.多个mongos服务器
3.每个片都是副本集
1.多个配置服务器
创建配置服务器如上,现在启动mongos的时候应将其连接到这3个配置服务器。假如3个配置文件的端口号是20001~20003
mongos --configdb localhost:20001,localhost:20002,localhost:20003
配置服务器使用的是两步提交机制,不是普通的MongoDB的异步复制,来维护集群配置的不同副本。这样能保证集群状态的一致性。这意味着某台配置服务器down了后,集群配置信息将是只读的。但是客户端还是能够读写的,只有所有配置服务器备份了以后才能重新均衡数据。
2.多个mongos
Mongos的数量不受限制,建议针对一个应用服务器只运行一个mongos进程。这样每个应用服务器就可以与mongos进行本地会话。
3.每个片都是副本集
生产环境中,每个片都应是副本集。这样单个服务器坏了,就不会导致整个片失效。用addshard命令就可以讲副本集作为片添加,添加时只要指定副本集的名字和种子就好了。
实现即达到数据的分片存储也实现备份和故障自动修复功能,可以副本集和分片混合使用,构建如下图的架构,(为了举例简单仅给shardA做了副本集配置)
Mongo服务器集群配置学习三分片
1.修改A的配置如下:

dbpath=D:\mongodb\test\sharded\A\Data
bind_ip=127.0.0.1
port=8001
replSet=replicademo/127.0.0.1:8003

 新添加A1和A2两台节点与A组成副本集
A1的配置:

dbpath=D:\mongodb\test\sharded\A1\Data
bind_ip=127.0.0.1
port=8004
replSet=replicademo/127.0.0.1:8003

A2的配置:

dbpath=D:\mongodb\test\sharded\A2\Data
bind_ip=127.0.0.1
port=8003
replSet=replicademo/127.0.0.1:8001

在A的shell中执行副本集的舒适化

db.runCommand({"replSetInitiate":
  {
  "_id":'replicademo',
  "members":[
  {
  "_id":1,
  "host":"127.0.0.1:8001"
  },
  {
  "_id":2,
  "host":"127.0.0.1:8003"
  },
  {
  "_id":3,
  "host":"127.0.0.1:8004"
  }
  ]
  }
})

这样A,A1,A2的副本集就建立完成,查询配置看到A为活跃节点,如下图:
Mongo服务器集群配置学习三分片
回到路由器上设置分片配置
mongos> db.runCommand({addshard:"replicademo/127.0.0.1:8001"})
这样mongos会知道它所连接的是replicademo副本集,在活跃节点down掉之后就会去寻找新的活跃结点。
执行db.printShardingStatus(),会看到副本集的节点都已经自动的配置进来了,如下图:
Mongo服务器集群配置学习三分片

管理分片
分片的信息主要存放在config数据库上,这样就能被任何连接到mongos的进程访问到了。
配置集合
下面的代码都假设已经在shell中连接了mongos,并且已经运行了use config。
 1.片
可以在shards集合中查到所有的片 >db.shards.find();
2.数据库
databases集合含有已经在片上的数据库列表和一些相关信息。
>db.databases.find() 键的解释如下
"_id" : 表示数据名
"partitioned" : 是否启用分片功能
"primary" :这个值与"_id"对应,表示这个数据的大本营在哪里。也就是开始创建数据库文件的位置
 3.块
块信息保存在chunks集合中,你可以看到数据到底是怎么切分到集群的。
>db.chunks.find()
 分片命令
1.获得概要
>db.printShardingStatus() 给出前面说的那些集合的概要
2.删除片
用removeshard就能从集群中删除片,removeshard会把给定片上的所有块都挪到其他片上。
>db.runCommand({"removeshard":"localhost:10000"})

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

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)

Comment configurer Dnsmasq comme serveur relais DHCP Comment configurer Dnsmasq comme serveur relais DHCP Mar 21, 2024 am 08:50 AM

Le rôle d'un relais DHCP est de transmettre les paquets DHCP reçus vers un autre serveur DHCP du réseau, même si les deux serveurs se trouvent sur des sous-réseaux différents. En utilisant un relais DHCP, vous pouvez déployer un serveur DHCP centralisé dans le centre réseau et l'utiliser pour attribuer dynamiquement des adresses IP à tous les sous-réseaux/VLAN du réseau. Dnsmasq est un serveur de protocole DNS et DHCP couramment utilisé qui peut être configuré en tant que serveur relais DHCP pour faciliter la gestion des configurations d'hôtes dynamiques sur le réseau. Dans cet article, nous allons vous montrer comment configurer Dnsmasq comme serveur relais DHCP. Sujets de contenu : Topologie du réseau Configuration d'adresses IP statiques sur un relais DHCP D sur un serveur DHCP centralisé

Comprendre Linux Bashrc : fonctions, configuration et utilisation Comprendre Linux Bashrc : fonctions, configuration et utilisation Mar 20, 2024 pm 03:30 PM

Comprendre Linux Bashrc : fonction, configuration et utilisation Dans les systèmes Linux, Bashrc (BourneAgainShellruncommands) est un fichier de configuration très important, qui contient diverses commandes et paramètres qui sont automatiquement exécutés au démarrage du système. Le fichier Bashrc se trouve généralement dans le répertoire personnel de l'utilisateur et est un fichier caché. Sa fonction est de personnaliser l'environnement Bashshell pour l'utilisateur. 1. Environnement de configuration des fonctions Bashrc

Guide des meilleures pratiques pour créer des serveurs proxy IP avec PHP Guide des meilleures pratiques pour créer des serveurs proxy IP avec PHP Mar 11, 2024 am 08:36 AM

Dans la transmission de données sur réseau, les serveurs proxy IP jouent un rôle important, aidant les utilisateurs à masquer leurs véritables adresses IP, à protéger la confidentialité et à améliorer la vitesse d'accès. Dans cet article, nous présenterons le guide des meilleures pratiques sur la façon de créer un serveur proxy IP avec PHP et fournirons des exemples de code spécifiques. Qu'est-ce qu'un serveur proxy IP ? Un serveur proxy IP est un serveur intermédiaire situé entre l'utilisateur et le serveur cible. Il agit comme une station de transfert entre l'utilisateur et le serveur cible, transmettant les demandes et les réponses de l'utilisateur. En utilisant un serveur proxy IP

Quelle est la bonne façon de redémarrer un service sous Linux ? Quelle est la bonne façon de redémarrer un service sous Linux ? Mar 15, 2024 am 09:09 AM

Quelle est la bonne façon de redémarrer un service sous Linux ? Lors de l'utilisation d'un système Linux, nous rencontrons souvent des situations dans lesquelles nous devons redémarrer un certain service, mais nous pouvons parfois rencontrer des problèmes lors du redémarrage du service, comme le fait que le service ne s'arrête ou ne démarre pas réellement. Par conséquent, il est très important de maîtriser la bonne manière de redémarrer les services. Sous Linux, vous pouvez généralement utiliser la commande systemctl pour gérer les services système. La commande systemctl fait partie du gestionnaire système systemd

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Solution pour laquelle Epic ne peut pas accéder au jeu hors ligne Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Solution pour laquelle Epic ne peut pas accéder au jeu hors ligne Mar 13, 2024 pm 04:40 PM

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Ce problème a dû être rencontré par de nombreux amis. Lorsque cette invite apparaît, le jeu authentique ne peut pas être démarré. Ce problème est généralement dû à des interférences du réseau et du logiciel de sécurité. Alors, comment doit-il être résolu ? J'aimerais partager la solution avec vous, j'espère que le didacticiel logiciel d'aujourd'hui pourra vous aider à résoudre le problème. Que faire si le serveur Epic ne peut pas accéder au jeu lorsqu'il est hors ligne : 1. Il peut être interféré par un logiciel de sécurité. Fermez la plateforme de jeu et le logiciel de sécurité, puis redémarrez. 2. La seconde est que le réseau fluctue trop. Essayez de redémarrer le routeur pour voir s'il fonctionne. Si les conditions sont correctes, vous pouvez essayer d'utiliser le réseau mobile 5g pour fonctionner. 3. Alors il y en aura peut-être plus

Comment configurer et installer FTPS sur le système Linux Comment configurer et installer FTPS sur le système Linux Mar 20, 2024 pm 02:03 PM

Titre : Comment configurer et installer FTPS dans le système Linux, des exemples de code spécifiques sont requis. Dans le système Linux, FTPS est un protocole de transfert de fichiers sécurisé. Par rapport à FTP, FTPS crypte les données transmises via le protocole TLS/SSL, ce qui améliore la sécurité des données. transmission. Dans cet article, nous présenterons comment configurer et installer FTPS dans un système Linux et fournirons des exemples de code spécifiques. Étape 1 : Installer vsftpd Ouvrez le terminal et entrez la commande suivante pour installer vsftpd : sudo

Apprenons ensemble à saisir le numéro racine dans Word Apprenons ensemble à saisir le numéro racine dans Word Mar 19, 2024 pm 08:52 PM

Lors de la modification du contenu du texte dans Word, vous devez parfois saisir des symboles de formule. Certains gars ne savent pas comment saisir le numéro racine dans Word, alors Xiaomian m'a demandé de partager avec mes amis un tutoriel sur la façon de saisir le numéro racine dans Word. J'espère que cela aidera mes amis. Tout d'abord, ouvrez le logiciel Word sur votre ordinateur, puis ouvrez le fichier que vous souhaitez modifier et déplacez le curseur vers l'emplacement où vous devez insérer le signe racine, reportez-vous à l'exemple d'image ci-dessous. 2. Sélectionnez [Insérer], puis sélectionnez [Formule] dans le symbole. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 3. Sélectionnez ensuite [Insérer une nouvelle formule] ci-dessous. Comme indiqué dans le cercle rouge dans l'image ci-dessous : 4. Sélectionnez [Formule radicale], puis sélectionnez le signe racine approprié. Comme le montre le cercle rouge sur l'image ci-dessous :

Comment installer l'extension PHP FFmpeg sur le serveur ? Comment installer l'extension PHP FFmpeg sur le serveur ? Mar 28, 2024 pm 02:39 PM

Comment installer l’extension PHPFFmpeg sur le serveur ? L'installation de l'extension PHPFFmpeg sur le serveur peut nous aider à traiter les fichiers audio et vidéo dans les projets PHP et à implémenter des fonctions telles que l'encodage, le décodage, l'édition et le traitement des fichiers audio et vidéo. Cet article explique comment installer l'extension PHPFFmpeg sur le serveur, ainsi que des exemples de code spécifiques. Tout d’abord, nous devons nous assurer que PHP et FFmpeg sont installés sur le serveur. Si FFmpeg n'est pas installé, vous pouvez suivre les étapes ci-dessous pour installer FFmpe

See all articles