標籤:擴容 建立 壓縮 表示 千兆 容量 名稱 首碼 cell
大資料平台部
營運研發組
MongoDB硬體及開發標準規範
說明:
無特殊情況,均以此文檔為參考檔案搭建,如有特殊情況,需與營運研發組和開發組商議後變更。
MongoDB
標 題硬體標準及研發規範
目 錄
第1章MongoDB配置標準規範.................................................................................. 1
1.1 MongoDB版本選擇................................................................................... 1
1.1.1 穩定版本................................................................................................. 1
1.2 研發資料集群規劃...................................................................................... 1
1.2.1 標準叢集(repl set複製集)................................................................ 1
部署過程見《MongoDB高可用叢集C生產部署文檔V1.0》................... 1
1.2.2 標準叢集(repl set複製集+sharding分區)....................................... 1
部署過程見《MongoDB高可用叢集A生產部署文檔V1.1》.................. 2
1.2.3 超大規模叢集(repl set複製集+sharding分區)............................... 2
部署過程見《MongoDB高可用叢集B生產部署文檔V1.0》................... 2
1.3 大資料海量資料集群規劃.......................................................................... 2
1.2.1 海量資料標準叢集(repl set複製集)................................................ 2
部署過程見《MongoDB高可用叢集C生產部署文檔V1.0》................... 2
1.2.2 海量資料標準叢集(repl set複製集+sharding分區)....................... 2
部署過程見《MongoDB高可用叢集A生產部署文檔V1.1》.................. 2
1.2.3 海量資料超大規模叢集(repl set複製集+sharding分區)............... 3
部署過程見《MongoDB高可用叢集B生產部署文檔V1.0》................... 3
1.4 主機配置標準化參數.................................................................................. 3
1.5 基礎卷分配原則.......................................................................................... 6
1.6 卷監控閾值要求.......................................................................................... 7
第2章 MongoDB研發規範.......................................................................................... 8
2.1 庫設計................................................................................................................ 8
2.1.1 mongodb庫設計..................................................................................... 8
2.2 集合設計............................................................................................................ 8
2.2.1 MongoDB集合設計............................................................................... 8
2.3 文檔設計............................................................................................................ 9
2.3.1 MongoDB文檔設計............................................................................... 9
2.4 索引設計............................................................................................................ 9
2.4.1 MongoDB索引設計............................................................................... 9
2.4 索引設計.......................................................................................................... 10
第1章 MongoDB配置標準規範
1.1 MongoDB版本選擇
1.1.1 穩定版本
預設新裝資料庫使用MongoDB 3.X 社區版(具體詳情請查看如下表格),已經使用且資料量大和已有無法改造升級的系統除外。
版本 |
建議 |
3.2.10 |
見標準安裝包檔案夾內 |
3.4.X |
待測試調研 |
1.2 叢集規劃
1.2.1 標準叢集(repl set複製集)
部署過程見《MongoDB高可用叢集A生產部署文檔V1.0》
l 叢集節點: 6節點(1 primary +4 secondry + 1 仲裁)
l 主機配置:Core64 , 256G 記憶體 (按需申請資源見第三章計算標準)
l 硬碟配置:優先SSD/HDD 2T RAID-10
l 容量和擴容規劃:單節點記憶體使用量率控制在70%,叢集LUN 總量達到2T以上時規劃新的大庫叢集或者擴容相應硬體
1.2.2 標準叢集(repl set複製集+sharding分區)
部署過程見《MongoDB高可用叢集B生產部署文檔V1.1》
l 叢集節點: 3節點
l 主機配置:Core64 , 128G 記憶體
l 硬碟配置:優先SSD/HDD 5T RAID-10 (使用1TB MLC SSD 組裝)
l 容量和擴容規劃:單節點記憶體使用量率控制在70%,叢集LUN 總量達到5T以上時規劃新的大庫叢集或者相應硬體
1.2.3 超大規模叢集(repl set複製集+sharding分區)
部署過程見《MongoDB高可用叢集C生產部署文檔V1.0》
l 叢集節點: 7節點
l 主機配置:Core64, 128G 記憶體
l 硬碟配置:優先SSD/HDD 10T RAID-10
l 容量和擴容規劃:單節點記憶體使用量率控制在70%,叢集LUN 總量達到10T以上時規劃新的大庫叢集或者相應硬體
1.3 基礎卷分配原則
卷類型 |
卷名 |
初始大小G |
儲存類型 |
用途 |
其他說明 |
軟體卷 |
/app/mongodb |
30 |
本地 |
MongoDB軟體 |
本機所有資料庫共用 |
資料卷 |
/data/mongodb/*/data 其中*代表每個執行個體的檔案名稱 |
根據要求 |
本地 |
資料庫資料 |
共用給叢集內所有主機 |
記錄磁碟區 |
/data/mongodb/*/log 其中*代表每個執行個體的檔案名稱 |
根據要求 |
本地 |
資料庫日誌資料 |
共用給叢集內所有主機 |
備份卷 |
/mongodb_backup/ |
500 |
本地碟 |
接DP備份 |
本機所有資料庫共用當前僅在容災機房有要求 |
1.4 卷監控閾值要求
卷類型 |
卷名 |
Warning |
Critical |
軟體卷 |
/app/mongodb |
80% |
85% |
資料卷 |
/data/mongodb/*/data |
80% |
85% |
記錄磁碟區 |
/data/mongodb/*/log |
80% |
85% |
備份卷 |
/mongodb_backup/ |
80% |
85% |
第2章 MongoDB研發規範
2.1 庫設計
2.1.1 mongodb庫設計
l mongodb資料庫命名規範:db_xxxx
禁止使用任何 " _ "(底線)外的特殊字元
l 庫名全部小寫,禁止使用任何_以外的特殊字元,禁止使用數字打頭的庫名,如:123_abc
l 庫以檔案夾的形式存在,使用特殊字元或其它不規範的命名方式會導致命名混亂
資料庫名最多為64字元
l 在建立新的庫前應盡量評估該庫的體積、QPS等,提前與DBA討論是應該建立一個庫還是專門為該庫建立一個新的叢集
l 不可為空字串(” “)
l 不能以$開頭
l 不能包含.(點號)和Null 字元串
l 資料庫名區分大小寫(建議資料庫名全部使用小寫)
l 資料庫名最長為64個位元組
l 不要與系統保留的資料庫名相同,這寫資料庫包括:admin,local,config等
2.2 集合設計
2.2.1 MongoDB集合設計
l mongodb集合命名規範:t_xxxx
l 集合名全部小寫,禁止使用任何_以外的特殊字元,禁止使用數字打頭的集合名,如:123_abc,禁止system打頭
l system是系統集合首碼
集合名稱最多為64字元
為了避免庫級鎖帶來的問題,應盡量對寫入較大的集合使用“單庫單集合”的結構,所以對於新增業務應盡量建立新庫,而不是在現有庫中建立新集合
l 一個庫中寫入較大的集合會影響其它集合的讀寫效能
如果評估單集合資料量較大,可以將一個大表拆分為多個小表,然後將每一個小表存放在獨立的庫中,由於MongoDB是庫級鎖,因此這樣做可以大幅減少並發寫入帶來的鎖爭用問題
l 集合名不可為空字串(” “)
l 不能包含\0或Null 字元,這個字元表示鍵的結尾
l 集合名不能以”system.”開頭,此首碼是系統本身保留的
l 集合名不能包含$字元(注:可包含 . 點號)
2.3 文檔設計
2.3.1 MongoDB文檔設計
l 文檔中的key禁止使用任何_以外的特殊字元
l 盡量將同樣類型的文檔存放在一個集合中,將不同類型的文檔分散在不同的集合中
l 相同類型的文檔能夠大幅度提高索引利用率,如果文檔混雜存放則可能會出現查詢經常需要全表掃描的情況
l 禁止使用_id,如:向_id中寫入自訂內容
l 盡量存放統一小寫後的資料
l 儘可能的縮短key的長度(注意是儘可能!會涉及到效能問題)
2.4 索引設計
2.4.1 MongoDB索引設計
l 優先使用覆蓋索引
l MongoDB 的複合式索引使用原則與 MySQL 一致,遵循“最左原則”
l 索引名稱長度不要超過128字元
l 應盡量綜合評估查詢情境,通過評估儘可能的將單列索引併入複合式索引以降低所以數量,結合1,2點
l 在建立複合式索引的時候,應評估索引中包含的欄位,盡量將資料基數大的欄位放在複合式索引的前面
l 在資料量較大的時候,MongoDB 索引的建立是一個緩慢的過程,所以應當在上前線或資料量變得很大前盡量評估,按需建立會用到的索引
l MongoDB 的索引建立是庫級鎖,在索引建立時該集合所在庫不可讀寫,所以如需添加索引,請聯絡 DBA
l 特別注意基於地理位置的索引建立時會帶來的問題。
2.4 索引設計
第3章 參考Mongodb硬體資源計算標準3.1 Cpu資源計算標準
3.1.1 複本集
標準:64core---------2TB snappy壓縮演算法 CPU一個線程會跑滿一個核心。假設寫入一個線程,讀取一個線程,那這兩個線程在接近滿負荷跑時兩個CPU核心會用完。
----------------------------------------------------------------------------------
primary節點:例
cpu core = 2(系統預留)+12000(讀寫)/1000 core,按實際情況配置cpu資源
-----------------------------------------------------------------------------------
3.1.2 分區複本集
------------------------------------------------------------------------------------
待計算評估。
-------------------------------------------------------------------------------------
3.2 記憶體資源計算標準
資料量:記憶體≈3:1 (最低標準5:1)
Eg:700G資料量:
在複本集模式下最低應該使用128G記憶體。遵循最低標準或接近原則。
--------------------------------------
700/5=140≈128
---------------------------------------
在分區複本集(3分區下)每個執行個體機器應該使用64GB記憶體
------------------------------------------------------------
700/5=140G=<64G*3
------------------------------------------------------------
3.3 硬碟資源計算標準
3.3.1 硬碟類型
在資源允許情況下,mongodb優先以SSD為主。資源不允許情況下,如有以下情況,則必須用SSD。
---------------------------------------------------------------------------------------------
讀每秒讀取超過資料量100M,讀隊列阻塞上升,則必須用SSD。
寫每秒讀取超過資料量100M,寫隊列阻塞上升,則必須用SSD。
---------------------------------------------------------------------------------------------
磁碟規格:
以700G資料量為例:使用磁碟大小≈基數+每日增長資料量*90天
3.3.2 硬碟大小
根據實際資料量增長率,預設至少應該保留資料量3個月增長空間。
3.4 網路網卡資源計算標準
如果硬碟是SSD,那麼可以在超高情況200M/s寫入或者讀取上在主節點和第二備節點提供萬兆網卡。
其他情況用千兆網卡即可。
MongoDB硬體及開發標準規範