1. 程式人生 > >一些MongoDB叢集維護使用方法

一些MongoDB叢集維護使用方法

增加分片節點

1.按照mongodb_structure_and_deplyment.md中副本集的部署步驟部署一個副本集(如:rs1,假設其中一個節點的主機名為hostname,埠為port)。

2.登陸任意一個mongos。

3.進入admin資料庫,切換具有clusterManger及以上許可權的使用者(如:root)

use admin
db.auth("root", "<password>")

4.增加節點
sh.addShard(“rs1/hostname:port”)

增加或刪除叢集中某個副本集中的節點

1.首先部署好將要操作的節點,注意將配置檔案中auth=true去掉

2.啟動該節點
mongod -f
3.進入副本集中的primary節點,進行root授權

mongo --port <port>
use admin
db.auth("root", "<password>")

4.新增新節點

rs.add("<host>:<port>")

對資料進行分片

MongoDB的分片是在集合層面進行的,因此需要從控制每個集合是否可以被分片以及怎樣分片。

1.使一個數據庫A可以被分片:

sh.enableSharding("A")

2.分片資料庫A中的集合b:

sh.shardCollection("A.b", shardKey)

分片一個集合的前提是這個集合建立了索引,建立索引:
db.b.createIndex({“name” : 1, age : 1})
其中name, age是集合b中的field,1 或者 -1控制以升序或者降序建索引

其中shardKey必須是以index為字首的存在於集合中每個文件的若干個域以升序建索引,或者一個域用hashed,如:

"name" : "hashed"

在使集合可以被分片之後,資料不會被馬上分片,要等到一個塊上的資料超過了chunksize後才會分片,設定chunksize(預設chunksize為64MB)

use config
db.settings.save({_id : "chunksize", value : <sizeInMB>})

shardKey的選擇要慎重,要保證資料分佈的均勻性,高隨機性等。

shardKey設定之後無法修改

人為對資料進行切割

在極少數情況下,需要人為對資料進行切割,比如資料塊出現了jumbo標記。

對資料進行人為切割的方法有兩個:

sh.splitFind(namespace, query)
sh.splitAt(namespace, query)


sh.splitFind(“records.people”, {“zipcode”, “63109”})
sh.splitAt(“records.people”, {“zipcode”, “63109”})
兩個函式都是根據第二個引數query查詢到第一個符合條件的文件D所在的塊C。所不同的是,splitFind將C分割成兩個一樣大的快。splitAt從查詢到的D處,將C分成兩個塊,不保證兩個塊一樣大。

資料塊的平衡

MongoDB會自動對各個分片節點的資料塊數量進行平衡,保持資料塊最多節點和資料塊最少節點的資料塊之差小於Migration Threshold。在資料塊之差沒有達到遷移閾值之前,不會發生資料塊遷移。

開啟自動平衡

MongoDB的自動平衡是預設開啟的,控制自動平衡的方法是

sh.enableBalancing(<true or false>)

執行
sh.status()
可以看到類似資訊:

balancer:
    Currently enabled: yes
    Currently running: no

更多資訊參考官方文件

相關推薦

一些MongoDB叢集維護使用方法

增加分片節點 1.按照mongodb_structure_and_deplyment.md中副本集的部署步驟部署一個副本集(如:rs1,假設其中一個節點的主機名為hostname,埠為port)。 2.登陸任意一個mongos。 3.進入admin資料庫,

安裝redis3.2叢集出現的一些問題及解決方法

安裝系統是在centOS上面時行的。有不足之處還記指正。 系統版本centOS6.5. redis叢集配置如下:            節點1 ============================================= 主192.168.135.128 :

ubuntu14.04下 安裝matlabR2015b遇到的一些問題及其解決方法

cal abr 問題 它的 文件夾 打開 pen atl usr 問題1:錯誤提示關於未取得權限,不能再/crack/bin文件中復制文件到安裝matlab的/usr/bin文件中? 采取解決方法: 再終端裏輸入 sudo nautilus,在彈出文件夾裏即可進行相應操作。

Nginx 安裝過程中遇到的一些問題及解決方法

requires nbsp margin req 命令 裝包 ... check sbin 一、安裝 獲取安裝包: wget http://nginx.org/download/nginx-1.11.5.tar.gz 解壓安裝包: tar -zxvf nginx-1.11

mongodb切片配置方法

-s 查看 conf init collect 架構圖 切片 創建索引 () ---------------------------------切片架構圖------------------------------------------------------------

JS開發中的一些小技巧和方法

hello floor apply subst shuf 新的 情況 level 可能 生成指定範圍內的隨機數 當我們需要獲取指定範圍(min,max)內的整數的時候,下面的代碼非常適合;這段代碼用的還挺多的。 function setRadomNum(min,m

Eloquent中一些其他的create方法

如果 不存在 nat delayed Language 手動 china class code firstOrCreate/ firstOrNew# 還有兩種其它方法,你可以用來通過屬性批量賦值創建你的模型:firstOrCreate 和firstOrNew。firstOr

工作中碰到的一些問題以及解決方法

post content 獲取json jquery app div ner htm his 一、左中右布局,左邊定寬,中、右百分比的布局: (1)HTML代碼: <div class="three-left"> </div> <d

mongodb監控常用方法

正在 com admin gost function 內存 dir body 0ms 列舉mongodb監控的常用命令 1.監控統計 mongostat 可用於查看當前QPS/內存使用/連接數,以及多個shard的壓力分布 命令參考 ./mongostat --port 2

Mysql處理海量數據時的一些優化查詢速度方法【轉】

有意義 最好 普通 drop git .com war 解決方案 臨時 最近一段時間由於工作需要,開始關註針對Mysql數據庫的select查詢語句的相關優化方法。由於在參與的實際項目中發現當mysql表的數據量達到百萬級時,普通SQL查詢效率呈直線下降,而且如果where

PHP----------php封裝的一些簡單實用的方法匯總

urn HP ont spa ack || span array imp 1、xml轉換成array,格式不對的xml則返回false   function xml_parser($str){   $xml_parser = xml_parser_create();

springboot mongodb jpa常用方法整理

emp led lan gre ear boot lang del edate 官方文檔https://docs.spring.io/spring-data/data-mongodb/docs/current/reference/html/index.html 查詢: **

Mac OS下安裝MongoDB以及配置方法總結【筆記】

用戶 base ces 內容 bsp 完成後 light roo reat 首先打開命令框,輸入: brew install mongodb   安裝完成後 啟動、停止、重啟如下 brew services start mongodb brew s

關於ubuntu出現的一些問題的解決方法

turned 返回 狀態 image 安裝 pkg return 問題 linux 1. (1)現象: dpkg: 處理軟件包 linux-image-4.15.0-36-generic (--configure)時出錯: 子進程 已安裝 post-installation

配置MySQL時,遇到的一些問題和解決方法

Q1.配置好路徑和環境變數以後,準備安裝mysql,但是顯示MySQL服務無法啟動 A:網上查了好多解決辦法,最後解決辦法是需要初始化,操作步驟為: mysql -remove mysql -install mysql -initialize Q2.正常啟動mysql後,輸入

myeclipse 2013在Tomcat釋出專案時出現404問題的一些原因及解決方法

Myeclipse在開發的過程中,有時要重新修改專案名稱,但是部署在Tomcat上的webapps下面的專案名稱卻一直是上一個的專案名稱。可能的原因及解決方法: 1、mymatadata 檔案丟失 (找一個原來的新增上就ok) 2、mymatadata 檔案確實沒有在mymatadata

Mongodb的使用方法&與python的互動

一、Mongodb的介紹和安裝 1. nosql的介紹 “NoSQL”⼀詞最早於1998年被⽤於⼀個輕量級的關係資料庫的名字 隨著web2.0的快速發展, NoSQL概念在2009年被提了出來 NoSQL在2010年⻛⽣⽔起, 現在國內外眾多⼤⼩⽹站, 如fa

mongodb.mongoose維護內嵌陣列元素

執行環境: - Nodejs - MongoDB 文件例項名: ProjectJob 文件格式如下: { "_id" : ObjectId("5bc69eb0b298b33578bde0d8"), "title" : "專案名稱", "author" : Ob

NGINX+TOMCAT搭建高效能負載均衡叢集 配置方法

一、       工具   nginx   apache-tomcat     二、    目標   實現高效能負載均衡的Tomcat叢集:  

Redis叢集監控方法

   1. 技術領域        提供一種Redis叢集中各Redis節點的監控處理方法,能夠採集Redis節點的資源資訊、效能指標資料,叢集內多個Redis節點服務執行狀態監控。實現告警監控資訊、資源和效能指標的採集與分析的監控方法