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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

2019獨角獸企業重金招聘Python工程師標準>>>

?

1.?? 復制

1.1. 復制簡介

MongoDB復制是將數據同步在多個服務器的過程。

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

復制還允許您從硬件故障和服務中斷中恢復數據。

1.2. 什么是復制

l? 保障數據的安全性

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

l? 災難恢復

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

l? 分布式讀取數據

1.3. MongoDB復制原理

mongodb的復制至少需要兩個節點。其中一個是主節點,負責處理客戶端請求,其余的都是從節點,負責復制主節點上的數據。

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

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

1.4. 復制架構

以上結構圖總,客戶端總主節點讀取數據,在客戶端寫入數據到主節點是, 主節點與從節點進行數據交互保障數據的一致性。

1.5. 復制特征

  • N 個節點的集群
  • 任何節點可作為主節點
  • 所有寫入操作都在主節點上
  • 自動故障轉移
  • 自動恢復

2.?? 分片

2.1. 分片簡介

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

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

2.2. 為什么使用分片

  • 復制所有的寫入操作到主節點
  • 延遲的敏感數據會在主節點查詢
  • 單個副本集限制在12個節點
  • 當請求量巨大時會出現內存不足。
  • 本地磁盤不足
  • 垂直擴展價格昂貴

2.3. 分片架構

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

Shard:

用于存儲實際的數據塊,實際生產環境中一個shard server角色可由幾臺機器組個一個replica set承擔,防止主機單點故障

Config Server:

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

Query Routers:

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

3.?? 復制+分片配置

3.1. 基礎組件

操作系統: 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. 復制配置

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

解壓軟件

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

創建安裝目錄

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

復制可執行文件到安裝目錄

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

創建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上重復執行

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

nohup mongod -f /etc/mongodb26001.conf &

切換到192.168.1.90上

執行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節點(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 &

添加分片節點

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,? 復制集配置完畢

2,? 配置服務器不用動

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

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",

解決辦法:

等待,知道復制集同步完成即可

轉載于:https://my.oschina.net/guanshanyue1990/blog/1456650

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。