Mongo服务器集群配置学习三分片
Mongo服务器集群配置学习三分片 MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。 在以下情况下需要运用分片: 1.服务器的磁盘不够用。 2.单个Mongod不能满足写数据的性能需求。 3.
Mongo服务器集群配置学习三——分片
MongoDB的分片主要是指将集合拆分成小块并分别存在不同服务器上的过程。MongoDB支持自动分片,可摆脱手动分片管理上的困难。
在以下情况下需要运用分片:
1.服务器的磁盘不够用。
2.单个Mongod不能满足写数据的性能需求。
3.需要将大数据放入内存中提高性能。
下图为我们要实现的分片结构:
从图中我们看到原本一台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})
可以看到执行添加分片的操作要在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个分片中了
正式环境配置
成功地构建分片需要如下条件:
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做了副本集配置)
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为活跃节点,如下图:
回到路由器上设置分片配置
mongos> db.runCommand({addshard:"replicademo/127.0.0.1:8001"})
这样mongos会知道它所连接的是replicademo副本集,在活跃节点down掉之后就会去寻找新的活跃结点。
执行db.printShardingStatus(),会看到副本集的节点都已经自动的配置进来了,如下图:
管理分片
分片的信息主要存放在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"})

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ネットワーク データ転送において、IP プロキシ サーバーは重要な役割を果たし、ユーザーが実際の IP アドレスを隠し、プライバシーを保護し、アクセス速度を向上させるのに役立ちます。この記事では、PHP を使用して IP プロキシ サーバーを構築する方法に関するベスト プラクティス ガイドを紹介し、具体的なコード例を示します。 IPプロキシサーバーとは何ですか? IP プロキシ サーバーは、ユーザーとターゲット サーバーの間にある中間サーバーであり、ユーザーとターゲット サーバー間の転送ステーションとして機能し、ユーザーのリクエストと応答を転送します。 IPプロキシサーバーを使用する場合

Linux Bashrc について: 機能、構成、および使用法 Linux システムでは、Bashrc (BourneAgainShellruncommands) は非常に重要な構成ファイルであり、システムの起動時に自動的に実行されるさまざまなコマンドと設定が含まれています。 Bashrc ファイルは通常、ユーザーのホーム ディレクトリにある隠しファイルであり、その機能はユーザーの Bashshell 環境をカスタマイズすることです。 1. Bashrc関数の設定環境

DHCP リレーの役割は、2 つのサーバーが異なるサブネット上にある場合でも、受信した DHCP パケットをネットワーク上の別の DHCP サーバーに転送することです。 DHCP リレーを使用すると、ネットワーク センターに集中 DHCP サーバーを展開し、それを使用してすべてのネットワーク サブネット/VLAN に IP アドレスを動的に割り当てることができます。 Dnsmasq は、一般的に使用される DNS および DHCP プロトコル サーバーであり、ネットワーク内の動的ホスト構成の管理を支援する DHCP リレー サーバーとして構成できます。この記事では、dnsmasq を DHCP リレー サーバーとして構成する方法を説明します。コンテンツ トピック: ネットワーク トポロジ DHCP リレー上の静的 IP アドレスの構成 集中型 DHCP サーバー上の DHCP リレー D

Linux でサービスを再起動する正しい方法は何ですか? Linux システムを使用していると、特定のサービスを再起動する必要がある状況がよく発生しますが、サービスの再起動時に実際にサービスが停止しない、または開始しないなどの問題が発生することがあります。したがって、サービスを再起動する正しい方法を習得することが非常に重要です。 Linux では、通常、systemctl コマンドを使用してシステム サービスを管理できます。 systemctl コマンドは systemd システム マネージャーの一部です

Epic サーバーがオフラインのときにゲームに参加できない場合はどうすればよいですか?この問題は多くの友人が経験しているはずです。このプロンプトが表示されると、正規のゲームが起動できなくなります。この問題は通常、ネットワークやセキュリティ ソフトウェアからの干渉によって引き起こされます。では、どのように解決すればよいでしょうか?今回の編集者が説明します。解決策を皆さんと共有したいと思います。今日のソフトウェア チュートリアルが問題の解決に役立つことを願っています。オフライン時に epic サーバーがゲームに参加できない場合の対処方法: 1. セキュリティ ソフトウェアによって妨害されている可能性があります。ゲーム プラットフォームとセキュリティ ソフトウェアを閉じて、再起動します。 2. 2 つ目は、ネットワークの変動が大きすぎることです。ルーターを再起動して機能するかどうかを確認してください。状態に問題がない場合は、5G モバイル ネットワークを使用して動作を試みることができます。 3. それならもっとあるかもしれない

PHPFFmpeg拡張機能をサーバーにインストールするにはどうすればよいですか? PHPFFmpeg 拡張機能をサーバーにインストールすると、PHP プロジェクトでオーディオ ファイルとビデオ ファイルを処理し、オーディオ ファイルとビデオ ファイルのエンコード、デコード、編集、処理などの機能を実装できます。この記事では、PHPFFmpeg 拡張機能をサーバーにインストールする方法と、具体的なコード例を紹介します。まず、PHP と FFmpeg がサーバーにインストールされていることを確認する必要があります。 FFmpeg がインストールされていない場合は、以下の手順に従って FFmpe をインストールできます。

Word でテキスト コンテンツを編集するときに、数式記号の入力が必要になる場合があります。 Word でルート番号を入力する方法を知らない人もいるので、Xiaomian は私に、Word でルート番号を入力する方法のチュートリアルを友達と共有するように頼みました。それが私の友達に役立つことを願っています。まず、コンピュータで Word ソフトウェアを開き、編集するファイルを開き、ルート記号を挿入する必要がある場所にカーソルを移動します。下の図の例を参照してください。 2. [挿入]を選択し、記号内の[数式]を選択します。下の図の赤丸で示すように: 3. 次に、下の[新しい数式を挿入]を選択します。以下の図の赤丸で示すように: 4. [根号式]を選択し、適切な根号を選択します。下の図の赤丸で示したように、

タイトル: Linux システムで FTPS を構成およびインストールする方法、具体的なコード例が必要です。Linux システムでは、FTPS は安全なファイル転送プロトコルです。FTP と比較して、FTPS は TLS/SSL プロトコルを通じて送信データを暗号化し、データのセキュリティを向上させます。伝染 ; 感染。この記事では、Linux システムに FTPS を構成およびインストールする方法を紹介し、具体的なコード例を示します。ステップ 1: vsftpd をインストールする ターミナルを開き、次のコマンドを入力して vsftpd をインストールします: sudo
