日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mongodb3.4.4复制集群+分片配置文档

發(fā)布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mongodb3.4.4复制集群+分片配置文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

?

1.?? 復(fù)制

1.1. 復(fù)制簡介

MongoDB復(fù)制是將數(shù)據(jù)同步在多個服務(wù)器的過程。

復(fù)制提供了數(shù)據(jù)的冗余備份,并在多個服務(wù)器上存儲數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性。

復(fù)制還允許您從硬件故障和服務(wù)中斷中恢復(fù)數(shù)據(jù)。

1.2. 什么是復(fù)制

l? 保障數(shù)據(jù)的安全性

l? 數(shù)據(jù)高可用性 (24*7)

l? 災(zāi)難恢復(fù)

l? 無需停機維護(如備份,重建索引,壓縮)

l? 分布式讀取數(shù)據(jù)

1.3. MongoDB復(fù)制原理

mongodb的復(fù)制至少需要兩個節(jié)點。其中一個是主節(jié)點,負(fù)責(zé)處理客戶端請求,其余的都是從節(jié)點,負(fù)責(zé)復(fù)制主節(jié)點上的數(shù)據(jù)。

mongodb各個節(jié)點常見的搭配方式為:一主一從、一主多從。

主節(jié)點記錄在其上的所有操作oplog,從節(jié)點定期輪詢主節(jié)點獲取這些操作,然后對自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點的數(shù)據(jù)與主節(jié)點一致。

1.4. 復(fù)制架構(gòu)

以上結(jié)構(gòu)圖總,客戶端總主節(jié)點讀取數(shù)據(jù),在客戶端寫入數(shù)據(jù)到主節(jié)點是, 主節(jié)點與從節(jié)點進行數(shù)據(jù)交互保障數(shù)據(jù)的一致性。

1.5. 復(fù)制特征

  • N 個節(jié)點的集群
  • 任何節(jié)點可作為主節(jié)點
  • 所有寫入操作都在主節(jié)點上
  • 自動故障轉(zhuǎn)移
  • 自動恢復(fù)

2.?? 分片

2.1. 分片簡介

在Mongodb里面存在另一種集群,就是分片技術(shù),可以滿足MongoDB數(shù)據(jù)量大量增長的需求。

當(dāng)MongoDB存儲海量的數(shù)據(jù)時,一臺機器可能不足以存儲數(shù)據(jù),也可能不足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多臺機器上分割數(shù)據(jù),使得數(shù)據(jù)庫系統(tǒng)能存儲和處理更多的數(shù)據(jù)。

2.2. 為什么使用分片

  • 復(fù)制所有的寫入操作到主節(jié)點
  • 延遲的敏感數(shù)據(jù)會在主節(jié)點查詢
  • 單個副本集限制在12個節(jié)點
  • 當(dāng)請求量巨大時會出現(xiàn)內(nèi)存不足。
  • 本地磁盤不足
  • 垂直擴展價格昂貴

2.3. 分片架構(gòu)

上圖中主要有如下所述三個主要組件:

Shard:

用于存儲實際的數(shù)據(jù)塊,實際生產(chǎn)環(huán)境中一個shard server角色可由幾臺機器組個一個replica set承擔(dān),防止主機單點故障

Config Server:

mongod實例,存儲了整個 ClusterMetadata,其中包括 chunk信息。

Query Routers:

前端路由,客戶端由此接入,且讓整個集群看上去像單一數(shù)據(jù)庫,前端應(yīng)用可以透明使用

3.?? 復(fù)制+分片配置

3.1. 基礎(chǔ)組件

操作系統(tǒng): CentOS6.5 x64

Mongodb版本: 3.4.4

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.4.tgz

集群

IP

端口號

rs0

192.168.1.90

26001

rs0

192.168.1.9

26001

rs1

192.168.1.90

26002

rs1

192.168.1.9

26002

rs2

192.168.1.90

26003

rs2

192.168.1.9

26003

?

Configure server: 192.168.1.90:26007、192.168.1.9:26007

Router ? ? ? ? ? ? ? ?: 192.168.1.90:26010、192.168.1.9:26010

3.2. 復(fù)制配置

下載軟件并解壓到指定目錄

解壓軟件

tar xvf mongodb-linux-x86_64-rhel62-3.4.4.tgz

創(chuàng)建安裝目錄

mkdir –p /data/usr/local/mongodb/

復(fù)制可執(zhí)行文件到安裝目錄

cp -a mongodb-linux-x86_64-rhel62-3.4.4/bin /data/usr/local/mongodb/

創(chuàng)建mongodb存儲目錄

mkdir –p /data/mongodb26001mkdir –p /data/mongodb26002mkdir –p /data/mongodb26003mkdir –p /data/mongodb26007mkdir –p /data/mongodb26010

配置文件配置

cat /etc/mongodb26001.confport=26001logpath=/data/mongodb26001/mongod26001.loglogappend=truepidfilepath=/data/mongodb26001/26001.pid?dbpath=/data/mongodb26001#bind_ip=mongodb1.example.net,127.0.0.1maxConns=500replSet=rs0shardsvr=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true

啟動

nohup mongod -f /etc/mongodb26001.conf &

初始化

mongo?192.168.1.90:26001rs.initiate()rs.conf()

?

以上配置在192.168.1.9上重復(fù)執(zhí)行

啟動備用實例(192.168.1.9上執(zhí)行)

nohup mongod -f /etc/mongodb26001.conf &

切換到192.168.1.90上

執(zhí)行mongo?192.168.1.90:26001

rs.add("192.168.1.9:26001")

驗證

rs.status()

?

集群rs1rs2同上

3.3. 分片配置

添加Config Server

cat /etc/mongodb26007.confport=26007logpath=/data/mongodb26007/mongod26007.loglogappend=truepidfilepath=/data/mongodb26007/26007.pid?dbpath=/data/mongodb26007#bind_ip=mongodb7.example.net,127.0.0.1maxConns=500replSet=configReplSetconfigsvr=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true

192.168.1.9上配置文件相同

啟動(兩個都啟動)

nohup mongod -f /etc/mongodb26002.conf &

初始化配置

rs.initiate({_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "192.168.1.90:26007" },{ _id: 1, host: "192.168.1.9:26007" }]})

驗證

rs.statau()

?添加route節(jié)點(mongos

[root@oracle ~]# cat /etc/mongodb26010.confport=26010logpath=/data/mongodb26010/mongod26010.loglogappend=truepidfilepath=/data/mongodb26010/26010.pid?#dbpath=/data/mongodb26010#bind_ip=mongodb10.example.net,127.0.0.1maxConns=500configdb=configReplSet/192.168.1.90:26007,192.168.1.9:26007#configdb=configReplSet/mongodb7.example.net:26007,mongodb8.example.net:26008,mongodb9.example.net:26009#chunkSize=1?fork=true#auth=true#keyFile=/data/usr/local/mongodb/mongodbkey.cert#fork=true#cpu=true#noauth=true

啟動router

nohup mongos -f /etc/mongodb26010.conf &

添加分片節(jié)點

mongo mongodb10.example.net:26010進入mongodb

sh.addShard( "rs0/192.168.1.90:26001,192.168.1.9:26001" )sh.addShard( "rs1/192.168.1.90:26002,192.168.1.9:26002" )sh.addShard( "rs2/192.168.1.90:26003,192.168.1.9:26003" )use testsh.enableSharding('test');sh.shardCollection('test.user',{uid:1})for(i=-100;i<1000;i++){db.user.insert({uid:i,username:'test-'+i});}

?驗證分片

sh.status()

不明顯;

for(i=10000;i<1000000;i++){db.user.insert({uid:i,username:'test-'+i});}

4.?? 添加分片

1,? 復(fù)制集配置完畢

2,? 配置服務(wù)器不用動

3,? 往路由服務(wù)器里添加分片即可

sh.addShard( "rs3/192.168.1.90:26004,192.168.1.91:26004,192.168.1.9:26004" )for(i=1000001;i<2000000;i++){db.user.insert({uid:i,username:'test-'+i});}

哈希分片

初始值:

移除分片

use admin;db.adminCommand( { listShards: 1 } )

(或者運行 sh.status() 或者 db.printShardingStatus() .)

shards._id 字段列出了每個分片的名字.

db.runCommand({removeShard: "rs0"});

5.?? 錯誤處理

5.1. 錯誤一

"infoMessage" : "could not find member to sync from",

解決辦法:

等待,知道復(fù)制集同步完成即可

轉(zhuǎn)載于:https://my.oschina.net/guanshanyue1990/blog/1456650

總結(jié)

以上是生活随笔為你收集整理的Mongodb3.4.4复制集群+分片配置文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。