欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > mongodb3.4集群搭建實戰之高可用的分片+副本集

mongodb3.4集群搭建實戰之高可用的分片+副本集

熱門標簽:云南外呼系統 電銷機器人是什么軟件 呼和浩特電銷外呼系統加盟 濟南電銷機器人加盟公司 怎么投訴地圖標注 廣州長安公司怎樣申請400電話 蘋果汽車租賃店地圖標注 老虎洗衣店地圖標注 杭州人工電銷機器人價格

前言

最近因為工作的原因,在學習使用mongodb數據庫,mongodb是最常用的nodql數據庫,在數據庫排名中已經上升到了前六。這篇文章介紹如何搭建高可用的mongodb(分片+副本)集群,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

在搭建集群之前,需要首先了解幾個概念:路由,分片、副本集、配置服務器等。

相關概念

先來看一張圖:

從圖中可以看到有四個組件:mongos、config server、shard、replica set。

mongos,數據庫集群請求的入口,所有的請求都通過mongos進行協調,不需要在應用程序添加一個路由選擇器,mongos自己就是一個請求分發中心,它負責把對應的數據請求請求轉發到對應的shard服務器上。在生產環境通常有多mongos作為請求的入口,防止其中一個掛掉所有的mongodb請求都沒有辦法操作。

config server,顧名思義為配置服務器,存儲所有數據庫元信息(路由、分片)的配置。mongos本身沒有物理存儲分片服務器和數據路由信息,只是緩存在內存里,配置服務器則實際存儲這些數據。mongos第一次啟動或者關掉重啟就會從 config server 加載配置信息,以后如果配置服務器信息變化會通知到所有的 mongos 更新自己的狀態,這樣 mongos 就能繼續準確路由。在生產環境通常有多個 config server 配置服務器,因為它存儲了分片路由的元數據,防止數據丟失!

shard,分片(sharding)是指將數據庫拆分,將其分散在不同的機器上的過程。將數據分散到不同的機器上,不需要功能強大的服務器就可以存儲更多的數據和處理更大的負載。基本思想就是將集合切成小塊,這些塊分散到若干片里,每個片只負責總數據的一部分,最后通過一個均衡器來對各個分片進行均衡(數據遷移)。

replica set,中文翻譯副本集,其實就是shard的備份,防止shard掛掉之后數據丟失。復制提供了數據的冗余備份,并在多個服務器上存儲數據副本,提高了數據的可用性, 并可以保證數據的安全性。

仲裁者(Arbiter),是復制集中的一個MongoDB實例,它并不保存數據。仲裁節點使用最小的資源并且不要求硬件設備,不能將Arbiter部署在同一個數據集節點中,可以部署在其他應用服務器或者監視服務器中,也可部署在單獨的虛擬機中。為了確保復制集中有奇數的投票成員(包括primary),需要添加仲裁節點做為投票,否則primary不能運行時不會自動切換primary。

簡單了解之后,我們可以這樣總結一下,應用請求mongos來操作mongodb的增刪改查,配置服務器存儲數據庫元信息,并且和mongos做同步,數據最終存入在shard(分片)上,為了防止數據丟失同步在副本集中存儲了一份,仲裁在數據存儲到分片的時候決定存儲到哪個節點。

環境準備

  • 系統系統 centos6.5
  • 三臺服務器:192.168.0.75/84/86
  • 安裝包: mongodb-linux-x86_64-3.4.6.tgz

服務器規劃

服務器75 服務器84 服務器86
mongos mongos mongos
config server config server config server
shard server1 主節點 shard server1 副節點 shard server1 仲裁
shard server2 仲裁 shard server2 主節點 shard server2 副節點
shard server3 副節點 shard server3 仲裁 shard server3 主節點

端口分配:

mongos:20000
config:21000
shard1:27001
shard2:27002
shard3:27003

集群搭建

1、安裝mongodb

#解壓
tar -xzvf mongodb-linux-x86_64-3.4.6.tgz -C /usr/local/
#改名
mv mongodb-linux-x86_64-3.4.6 mongodb

分別在每臺機器建立conf、mongos、config、shard1、shard2、shard3六個目錄,因為mongos不存儲數據,只需要建立日志文件目錄即可。

mkdir -p /usr/local/mongodb/conf
mkdir -p /usr/local/mongodb/mongos/log
mkdir -p /usr/local/mongodb/config/data
mkdir -p /usr/local/mongodb/config/log
mkdir -p /usr/local/mongodb/shard1/data
mkdir -p /usr/local/mongodb/shard1/log
mkdir -p /usr/local/mongodb/shard2/data
mkdir -p /usr/local/mongodb/shard2/log
mkdir -p /usr/local/mongodb/shard3/data
mkdir -p /usr/local/mongodb/shard3/log

配置環境變量

vim /etc/profile
# 內容
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
# 使立即生效
source /etc/profile

2、config server配置服務器

mongodb3.4以后要求配置服務器也創建副本集,不然集群搭建不成功。

添加配置文件

vi /usr/local/mongodb/conf/config.conf

## 配置文件內容
pidfilepath = /usr/local/mongodb/config/log/configsrv.pid
dbpath = /usr/local/mongodb/config/data
logpath = /usr/local/mongodb/config/log/congigsrv.log
logappend = true
 
bind_ip = 0.0.0.0
port = 21000
fork = true
 
#declare this is a config db of a cluster;
configsvr = true

#副本集名稱
replSet=configs
 
#設置最大連接數
maxConns=20000

啟動三臺服務器的config server

mongod -f /usr/local/mongodb/conf/config.conf

登錄任意一臺配置服務器,初始化配置副本集

#連接
mongo --port 21000
#config變量
config = {
... _id : "configs",
... members : [
...  {_id : 0, host : "192.168.0.75:21000" },
...  {_id : 1, host : "192.168.0.84:21000" },
...  {_id : 2, host : "192.168.0.86:21000" }
... ]
... }

#初始化副本集
rs.initiate(config)

其中,”_id” : “configs”應與配置文件中配置的 replicaction.replSetName 一致,”members” 中的 “host” 為三個節點的 ip 和 port

3、配置分片副本集(三臺機器)

設置第一個分片副本集

配置文件

vi /usr/local/mongodb/conf/shard1.conf

#配置文件內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard1/log/shard1.pid
dbpath = /usr/local/mongodb/shard1/data
logpath = /usr/local/mongodb/shard1/log/shard1.log
logappend = true

bind_ip = 0.0.0.0
port = 27001
fork = true
 
#打開web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard1
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設置最大連接數
maxConns=20000

啟動三臺服務器的shard1 server

mongod -f /usr/local/mongodb/conf/shard1.conf

登陸任意一臺服務器,初始化副本集

mongo --port 27001
#使用admin數據庫
use admin
#定義副本集配置,第三個節點的 "arbiterOnly":true 代表其為仲裁節點。
config = {
... _id : "shard1",
... members : [
...  {_id : 0, host : "192.168.0.75:27001" },
...  {_id : 1, host : "192.168.0.84:27001" },
...  {_id : 2, host : "192.168.0.86:27001” , arbiterOnly: true }
... ]
... }
#初始化副本集配置
rs.initiate(config);

設置第二個分片副本集

配置文件

vi /usr/local/mongodb/conf/shard2.conf

#配置文件內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard2/log/shard2.pid
dbpath = /usr/local/mongodb/shard2/data
logpath = /usr/local/mongodb/shard2/log/shard2.log
logappend = true

bind_ip = 0.0.0.0
port = 27002
fork = true
 
#打開web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard2
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設置最大連接數
maxConns=20000

啟動三臺服務器的shard2 server

mongod -f /usr/local/mongodb/conf/shard2.conf

登陸任意一臺服務器,初始化副本集

mongo --port 27002
#使用admin數據庫
use admin
#定義副本集配置
config = {
... _id : "shard2",
... members : [
...  {_id : 0, host : "192.168.0.75:27002" , arbiterOnly: true },
...  {_id : 1, host : "192.168.0.84:27002" },
...  {_id : 2, host : "192.168.0.86:27002" }
... ]
... }

#初始化副本集配置
rs.initiate(config);

設置第三個分片副本集

配置文件

vi /usr/local/mongodb/conf/shard3.conf

 
#配置文件內容
#——————————————–
pidfilepath = /usr/local/mongodb/shard3/log/shard3.pid
dbpath = /usr/local/mongodb/shard3/data
logpath = /usr/local/mongodb/shard3/log/shard3.log
logappend = true

bind_ip = 0.0.0.0
port = 27003
fork = true
 
#打開web監控
httpinterface=true
rest=true
 
#副本集名稱
replSet=shard3
 
#declare this is a shard db of a cluster;
shardsvr = true
 
#設置最大連接數
maxConns=20000

啟動三臺服務器的shard3 server

mongod -f /usr/local/mongodb/conf/shard3.conf

登陸任意一臺服務器,初始化副本集

mongo --port 27003
#使用admin數據庫
use admin
#定義副本集配置
config = {
... _id : "shard3",
...  members : [
...   {_id : 0, host : "192.168.0.75:27003" },
...   {_id : 1, host : "192.168.0.84:27003" , arbiterOnly: true},
...   {_id : 2, host : "192.168.0.86:27003" }
...  ]
... }

#初始化副本集配置
rs.initiate(config);

4、配置路由服務器 mongos

先啟動配置服務器和分片服務器,后啟動路由實例啟動路由實例:(三臺機器)

vi /usr/local/mongodb/conf/mongos.conf

#內容
pidfilepath = /usr/local/mongodb/mongos/log/mongos.pid
logpath = /usr/local/mongodb/mongos/log/mongos.log
logappend = true

bind_ip = 0.0.0.0
port = 20000
fork = true

#監聽的配置服務器,只能有1個或者3個 configs為配置服務器的副本集名字
configdb = configs/192.168.0.75:21000,192.168.0.84:21000,192.168.0.86:21000
 
#設置最大連接數
maxConns=20000

啟動三臺服務器的mongos server

mongod -f /usr/local/mongodb/conf/mongos.conf

5、啟用分片

目前搭建了mongodb配置服務器、路由服務器,各個分片服務器,不過應用程序連接到mongos路由服務器并不能使用分片機制,還需要在程序里設置分片配置,讓分片生效。

登陸任意一臺mongos

mongo --port 20000
#使用admin數據庫
user admin
#串聯路由服務器與分配副本集
sh.addShard("shard1/192.168.0.75:27001,192.168.0.84:27001,192.168.0.86:27001")
sh.addShard("shard2/192.168.0.75:27002,192.168.0.84:27002,192.168.0.86:27002")
sh.addShard("shard3/192.168.0.75:27003,192.168.0.84:27003,192.168.0.86:27003")
#查看集群狀態
sh.status()

6、測試

目前配置服務、路由服務、分片服務、副本集服務都已經串聯起來了,但我們的目的是希望插入數據,數據能夠自動分片。連接在mongos上,準備讓指定的數據庫、指定的集合分片生效。

#指定testdb分片生效
db.runCommand( { enablesharding :"testdb"});
#指定數據庫里需要分片的集合和片鍵
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )

我們設置testdb的 table1 表需要分片,根據 id 自動分片到 shard1 ,shard2,shard3 上面去。要這樣設置是因為不是所有mongodb 的數據庫和表 都需要分片!

測試分片配置結果

mongo 127.0.0.1:20000
#使用testdb
use testdb;
#插入測試數據
for (var i = 1; i = 100000; i++)
db.table1.save({id:i,"test1":"testval1"});
#查看分片情況如下,部分無關信息省掉了
db.table1.stats();

{
  "sharded" : true,
  "ns" : "testdb.table1",
  "count" : 100000,
  "numExtents" : 13,
  "size" : 5600000,
  "storageSize" : 22372352,
  "totalIndexSize" : 6213760,
  "indexSizes" : {
    "_id_" : 3335808,
    "id_1" : 2877952
  },
  "avgObjSize" : 56,
  "nindexes" : 2,
  "nchunks" : 3,
  "shards" : {
    "shard1" : {
      "ns" : "testdb.table1",
      "count" : 42183,
      "size" : 0,
      ...
      "ok" : 1
    },
    "shard2" : {
      "ns" : "testdb.table1",
      "count" : 38937,
      "size" : 2180472,
      ...
      "ok" : 1
    },
    "shard3" : {
      "ns" : "testdb.table1",
      "count" :18880,
      "size" : 3419528,
      ...
      "ok" : 1
    }
  },
  "ok" : 1
}

可以看到數據分到3個分片,各自分片數量為: shard1 “count” : 42183,shard2 “count” : 38937,shard3 “count” : 18880。已經成功了!

后期運維

啟動關閉

mongodb的啟動順序是,先啟動配置服務器,在啟動分片,最后啟動mongos.

mongod -f /usr/local/mongodb/conf/config.conf
mongod -f /usr/local/mongodb/conf/shard1.conf
mongod -f /usr/local/mongodb/conf/shard2.conf
mongod -f /usr/local/mongodb/conf/shard3.conf
mongod -f /usr/local/mongodb/conf/mongos.conf

關閉時,直接killall殺掉所有進程

killall mongod
killall mongos

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

參考:

  • 搭建高可用mongodb集群(四)—— 分片
  • MongoDB3.4副本集分片集群搭建
  • Mongodb高可用集群(四)——分片
您可能感興趣的文章:
  • 如何為MongoDB添加分片副本集
  • 分布式文檔存儲數據庫之MongoDB分片集群的問題
  • MongoDB搭建高可用集群的完整步驟(3個分片+3個副本)
  • Mongodb副本集和分片示例詳解
  • MongoDB分片集群部署詳解
  • MongoDB分片在部署與維護管理中常見的事項總結大全
  • 詳解MongoDB4.0構建分布式分片群集
  • MongoDB分片鍵的選擇和案例實例詳解
  • MongoDB分片詳解
  • mongodb分片技術_動力節點Java學院整理
  • 深入理解MongoDB分片的管理
  • Mongodb 刪除添加分片與非分片表維護
  • MongoDB 主分片(primary shard)相關總結

標簽:無錫 泰安 遼陽 雞西 興安盟 廈門 玉林 自貢

巨人網絡通訊聲明:本文標題《mongodb3.4集群搭建實戰之高可用的分片+副本集》,本文關鍵詞  mongodb3.4,集群,搭建,實戰,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mongodb3.4集群搭建實戰之高可用的分片+副本集》相關的同類信息!
  • 本頁收集關于mongodb3.4集群搭建實戰之高可用的分片+副本集的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲一二三四区| 亚洲精品理论片| 日本爱爱小视频| 久久久www成人免费毛片麻豆| 日韩av二区在线播放| 国产真实乱人偷精品| 欧美二区在线观看| 五月激情六月综合| 老熟妇精品一区二区三区| 正在播放亚洲一区| 日本成人中文字幕| 亚洲av无码一区二区二三区| 亚洲精品在线观| 国产在线精品不卡| 色欲一区二区三区精品a片| 国产精品欧美极品| 播五月开心婷婷综合| 色婷婷久久久综合中文字幕| 亚洲欧美经典视频| 一级全黄裸体片| 日韩亚洲欧美成人一区| 麻豆成人免费电影| 天堂av网手机版| 国产精品高清亚洲| 美女被艹视频网站| 日韩一卡二卡三卡国产欧美| 久久不见久久见免费视频1 | 亚洲国产精品综合小说图片区| 亚洲国产精品第一页| 欧美一卡二卡三卡| 韩国在线一区二区| 一本大道久久精品懂色aⅴ| 一区二区不卡在线播放 | 色婷婷粉嫩av| 日韩久久一区二区| youjizz.com国产| 亚洲精品在线一区二区| 懂色av一区二区在线播放| 国产精品无码99re| 亚洲成人免费观看| 丰满的亚洲女人毛茸茸| 亚洲色图欧洲色图婷婷| 久久久老熟女一区二区三区91| 精品国产免费人成在线观看| 高清成人在线观看| 欧美日韩国产成人在线免费| 狂野欧美性猛交blacked| 我要看黄色一级片| 亚洲亚洲精品在线观看| 影音先锋制服丝袜| 亚洲男人天堂av| 偷拍夫妻性生活| 国产精品国产三级国产专播品爱网| 中文字幕永久免费| 久久久久久久久免费| 91一区在线观看| 精品国产污网站| 9色porny自拍视频一区二区| 欧美一级日韩免费不卡| 风间由美一区二区av101| 欧美剧情片在线观看| 国产一区二区视频在线| 在线一区二区三区做爰视频网站| 蜜乳av一区二区| 91成人看片片| 国产综合久久久久影院| 欧美色综合天天久久综合精品| 久久99久久久久久久久久久| 欧美午夜精品一区二区三区 | 久久国产生活片100| 一本大道av一区二区在线播放| 日本视频在线一区| 色久优优欧美色久优优| 紧缚奴在线一区二区三区| 91九色最新地址| 精品伊人久久久久7777人| 欧美视频中文字幕| 大胆欧美人体老妇| 日韩欧美国产系列| 亚洲少妇一区二区| 亚洲欧洲三级电影| 懂色av蜜桃av| 日本在线不卡视频| 欧美性猛交xxxxxxxx| 国产91精品一区二区麻豆亚洲| 日韩一区二区三区电影在线观看 | 天天av天天翘天天综合网| 中国一级片在线观看| 免费观看一级欧美片| 欧美揉bbbbb揉bbbbb| 不卡av免费在线观看| 国产日本欧洲亚洲| 3d动漫精品啪啪一区二区下载 | 欧美第一页在线观看| 蜜臀va亚洲va欧美va天堂| 欧美三区在线视频| 成人国产精品免费观看视频| 久久综合999| 受虐m奴xxx在线观看| 亚洲国产成人精品视频| 色老汉av一区二区三区| 成人中文字幕在线| 中文字幕免费一区| 91激情视频在线观看| 欧美a一区二区| 91精品国产综合久久香蕉的特点| 97久久超碰国产精品| 国产精品久久久久国产精品日日| 毛片aaaaaa| 精品亚洲porn| 精品国产人成亚洲区| 白丝女仆被免费网站| 美女一区二区久久| 日韩亚洲欧美中文三级| 在线观看国产网站| 日韩激情在线观看| 91精品国产色综合久久久蜜香臀| 三级网站免费看| 亚洲欧美国产毛片在线| 色婷婷久久99综合精品jk白丝| 成人sese在线| 日韩伦理电影网| 91黄色在线观看| 91在线视频官网| 亚洲女同一区二区| 日本久久一区二区三区| 91一区一区三区| 一区二区三区日韩在线观看| 欧美日韩亚洲高清一区二区| 久久久久中文字幕亚洲精品| 亚洲综合图片区| 欧美日本一区二区| 小毛片在线观看| 美日韩一区二区| 久久色.com| 五月天av网站| 99国产麻豆精品| 亚洲一区中文日韩| 在线播放91灌醉迷j高跟美女| 波多野结衣一二三区| 日本中文字幕一区二区有限公司| 精品精品国产高清a毛片牛牛| 日本少妇xxxxx| 国产.欧美.日韩| 一区二区三区日韩| 日韩一本二本av| 懂色av粉嫩av浪潮av| jlzzjlzz亚洲日本少妇| 亚洲综合丝袜美腿| 日韩视频一区二区三区在线播放| 小早川怜子久久精品中文字幕| 国产毛片一区二区| 亚洲欧洲一区二区三区| 欧美日韩国产大片| 制服 丝袜 综合 日韩 欧美| 国产91精品免费| 亚洲国产精品一区二区www| 欧美v国产在线一区二区三区| 亚洲一级片在线播放| 成人avav影音| 日韩和欧美一区二区| 久久久国产精品不卡| 91久久久免费一区二区| 国产又黄又粗又猛又爽的视频 | 91嫩草丨国产丨精品| 免费高清视频在线观看| 免费人成精品欧美精品| 欧美激情综合五月色丁香 | 亚洲成va人在线观看| 久久综合九色综合久久久精品综合 | 女人黄色一级片| 成人美女在线观看| 午夜欧美电影在线观看| 久久久99精品免费观看不卡| 欧美色老头old∨ideo| 午夜时刻免费入口| 91在线观看视频| 狠狠狠色丁香婷婷综合久久五月| 亚洲六月丁香色婷婷综合久久| 日韩欧美一级二级三级| 欧美三级黄色大片| 在线免费观看a级片| 成人性视频免费网站| 日日骚欧美日韩| 中文字幕制服丝袜成人av| 91精品国产全国免费观看 | 国产一区在线不卡| 亚洲精品一二三| 久久夜色精品一区| 欧美日韩午夜在线视频| 99热这里只有精品4| 精品熟女一区二区三区| 成人av一区二区三区| 蜜桃视频一区二区三区在线观看| 一区在线中文字幕| 久久久青草青青国产亚洲免观| 欧美日韩午夜在线| 日韩欧美综合视频| 妺妺窝人体色WWW精品| 日本xxxx免费|