老生常談 MongoDB---分片簡析
Sat Jul 21 10:46:38 uncaught exception: error { "$err" : "can't find a shard to put new db on", "code" : 10185 } mongos>use admin switched to db admin mongos> db.runCommand( ... { ... "addshard":"127.0.0.1:10000", ... "allowLocal":1 ... } ... ) { "shardAdded" : "shard0000", "ok" : 1 } mongos> db.runCommand( ... { ... "addshard":"127.0.0.1:10001", ... "allowLocal":1 ... } ... ) { "shardAdded" : "shard0001", "ok" : 1 } 當在本機執行片的時候,得設定allowLocal鍵為1.MongoDB儘量避免由於錯誤的配置,將叢集配置到本地,所以得讓它知道這僅僅是開發,而且我們很清楚自己在做什麼.如果是生產環境中,則要將其部署在不同的機器上. 想新增片的時候,就執行addshard.MongoDB會負責將片整合到叢集. 切分資料 MongoDB不會將儲存的每一條資料都直接釋出,得先在資料庫和集合的級別將分片功能開啟. 如果是連線配置伺服器, E:\mongo\bin>mongo 127.0.0.1:20000 MongoDB shell version: 2.0.6 connecting to: 127.0.0.1:20000/test > use admin switched to db admin > db.runCommand({"enablesharding":"test"}) { "errmsg" : "no such cmd: enablesharding", "bad cmd" : { "enablesharding" : "test" }, "ok" : 0 } 應該是連線 路由伺服器: db.runCommand({"enablesharding":"test"})//將test資料庫啟用分片功能. 對資料庫分片後,其內部的集合便會儲存到不同的片上,同時也是對這些集合分片的前置條件. 在資料庫級別啟用了分片以後,就可以使用shardcollection命令堆積和進行分片: db.runCommand({"shardcollection":"test.refactor","key":{"name":1}})//對test資料庫的refactor集合進行分片,片鍵是name 如果現在對refactor集合新增資料,就會依據"name"的值自動分散到各個片上. 9.生產配置 進入生產環境後,需要更健壯的分片方案,成功的構建分片需要如下條件: 多個配置伺服器 多個mongos伺服器 每個片都是副本集 正確的設定w 健壯的配置 設定多個配置伺服器是很簡單的. 設定多個配置伺服器和設定一個配置伺服器一樣 mongod --dbpath "F:\mongo\dbs\config" --port 20000 --logpath "F:\mongo\logs\config\MongoDB.txt" --rest mongod --dbpath "F:\mongo\dbs\config1" --port 20001 --logpath "F:\mongo\logs\config1\MongoDB.txt" --rest mongod --dbpath "F:\mongo\dbs\config2" --port 20002 --logpath "F:\mongo\logs\config2\MongoDB.txt" --rest 啟動mongos的時候應將其連線到3個配置伺服器上: mongos --port 30000 --configdb 127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002 --logpath "F:\mongo\logs\mongos\MongoDB.txt" 配置伺服器使用的是兩步提交機制,而不是普通的MongoDB的非同步複製,來維護叢集配置的不同副本.這樣能保證叢集的狀態的一致性.這意味著,某臺配置伺服器宕機後,叢集的配置資訊是隻讀的.客戶端還是能夠讀寫,但是隻有所有配置伺服器備份了以後才能重新均衡資料. 多個mongos mongos的數量不受限制,建議針對一個應用伺服器只執行一個mongos程序.這樣每個應用伺服器就可以與mongos進行本地回話,如果伺服器不工作了,就不會有應用試圖與不存的mongos通話了 健壯的片 生產環境中,每個片都應是副本集,這樣單個伺服器壞了,就不會導致整個片失效.用addshard命令就可以將副本集作為片新增, 新增時,只要指定副本集的名稱和種子就行了. 如要新增副本集refactor,其中包含一個伺服器127.0.0.1:10000(還有別的伺服器),就可以用下列命令將其新增到叢集中: www.2cto.com db.runCommand({"addshard":"refactor/127.0.0.1:10000"}) 如果127.0.0.1:10000伺服器掛了,mongos會知道它所連線的是一個副本集,並會使用新的主節點. 10.管理分片 分片資訊主要存放在config資料庫上,這樣就能被任何連線到mongos的程序訪問到了. 配置集合 在shell中連線了mongos,並使用了use config資料庫 a.片 可以在shareds集合中查到所有的片 db.shards.find() b.資料庫 databases集合含有已經包含在片上的資料庫列表和一些相關資訊 db.databases.find() 返回的文件解釋: "_id" 表示資料庫名 "partitioned" 表示是否啟用了分片功能 "primary"這個值與"_id"相對應,表名這個資料的"大本營"在哪裡. 不論分片與否,資料庫總會有個大本營.要是分片的話,建立資料庫時會隨機選擇一個片.也就是說,大本營是開始建立資料庫文件的位置.雖然分片時資料庫也會用到很多別的伺服器,但會從這個片開始. c.塊 塊資訊儲存在chunks集合中.這可以看到資料到底是怎麼切分到叢集中的 db.chunks.find() 分片命令 獲得概要 db.printShardingStatus() 刪除片 用removeshard就能從叢集中刪除片.removeshard會把給定片上的所有塊的資料都挪到其他片上 db.runCommand({"removeshard":"127.0.0.1:10001"}) 在挪動過程中,removeshard會顯示程序
相關推薦
老生常談 MongoDB---分片簡析
6.片鍵對操作的影響 終端使用者應該無法區分是否分片,但是要了解選擇不同片鍵情況下的查詢有何不同. 假設還是那個表示人員的集合,按照"name"分片,有3個片,其名字首字母的範圍是A-Z.下面以不同的方式查詢: db.people.find({"name":"Refactor"}) mongos會將這
MongoDB CRUD操作簡析
使用者使用MongoDB開發應用程式使用的是邏輯結構: ● MongoDB的文件,相當於關係資料庫中的一行記錄 ● 多個文件組成一個集合,相當於關係資料庫中的表 ● 多個集合邏輯上組織在一起就是資料庫 www.2cto.com 1、啟動MongoDB
PHP開發環境簡析
安裝 桌面 nbsp pmp 總結 ubunt bsp 虛擬機 xshell 單工作機情況 windows + wamp windows + XShell類終端工具 + linux虛擬機 Ubuntu桌面版 自帶終端 Mac OS + mamp Mac OS 自帶終端 M
URL鏈接中的utm_source,utm_medium簡析
mono running -i 支持 用戶 ica ase 分析 ng- 工作中須要分析一些鏈接,統計分析一些信息。比方例如以下的鏈接: http://lightapplication.xxxx.com/?utm_source=ucweb&utm_medium=
【轉】使用YCSB測試mongodb分片集群性能
中產 adc set 日誌 階段 很快 配置服務 常見 chm 1. 測試工具 本次測試選取YCSB(Yahoo! Cloud System Benchmark)作為測試客戶端工具。YCSB是Yahoo開源的一個nosql測試工具,用來測試比較各種nosql的性能
結合實戰簡析Controller 配置
sa1. xwork.xml 主文件 xwork.xml 是 WebWork 自身的配置文件,實際開發中它是配置文件的主幹骨架。 xwork 定義了一個 default 包,通過 include 包含 xwork 子文件。如下所示:<!DOCTYPE xwork PUBLIC "-//OpenS
備份的幾種方式簡析
備份 lan-free server-free 異地備份 備份方案1、本地備份方式(1)普通網絡備份方式 1、備份節點發起備份通過重復刪除技術將數據備份到備份存儲上。 2、備份策略完整備份/周,增量備份/
【HTTP】另類的POST頭數據 RFC1867協議格式簡析
client oct discuz ... Enctype -s 協議 肩膀 .html http://blog.csdn.net/ai2000ai/article/details/52161979 昨天在實戰表單模擬提交的時候,有發現在提交某個表單的時候,頁面(discu
.NET設計模式簡析
責任鏈 參數 聚合 備忘 工廠方法 繼承復用 解釋器模式 基礎上 衍生 首先,是設計模式的分類,我們知道,常用的設計模式共23種。但總體來說,設計模式氛圍三大類: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單列模式、建造者模式、原型模式。 結構型模式,共七種:適配器模
協議欺騙攻擊技術常見種類簡析及防範
轉換 改變 實現 定向 要求 內網 容易 通過 加密 IP欺騙攻擊 IP欺騙技術就是通過偽造某臺主機的IP地址騙取特權從而進行攻擊的技術。許多應用程序認為如果數據包能夠使其自身沿著路由到達目的地,而且應答包也可以回到源地,那麽源IP地址一定是有效的,而這正是使源IP地址欺騙
三層架構—簡析
表示 現在 show lpar object 數據庫連接 打開 str 好的 三層學習完了,第一次驗收的時候,自己理解的也不是非常到位,後來又又一次敲了一遍登陸樣例,查閱了一些資料 進行第二次驗收才感覺清晰了很多。之前畫時序圖時我就想過時序圖基本上也是非常
DataFrame.groupby()簡析
產生 提示 索引 alt code log cnblogs 返回 sun groupby分組函數: 返回值:返回重構格式的DataFrame,特別註意,groupby裏面的字段內的數據重構後都會變成索引 groupby(),一般和sun()一起使用,如下例: fr
第五節:JQuery框架源碼簡析(1)
err cal content browser active lac rda setting right (轉自老惠的博客) JQuery是一個應用廣泛、非常優秀的JavaScript框架,其代碼簡潔而優雅,有很多值得我們學習的地方。這裏僅僅對其代碼結構做一個簡單的分析
Maven核心簡析
作用範圍 聚合 cin sof oca int 了解 系列 格式 本文以類圖的方式,介紹maven核心的12個概念以及相互之間的關系。 Table of Contents 1 maven管理的目標:工程(Project) 1.1 工程依賴關系 1.2 工程聚合關系
簡析TCP的三次握手與四次分手
丟包 現在 流量 tcp連接 首部 都是 字節序 鏈接 暫時 具體的關於TCP是什麽,我不打算詳細的說了;當你看到這篇文章時,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我們就繼續。它只是一個超級麻煩的協議,而它又是互聯網的基礎,也是每個程序員必備的基本功。首
Nagios監控mongodb分片集群服務實戰
check 演示 database 路由 easy interval oca mis har 1,監控插件下載Mongodb插件下載地址為:git clone git://github.com/mzupan/nagios-plugin-mongodb.git,剛開始本人
mongodb分片集搭建
不能 -c tex 這就是 mkdir -p 團隊 exe dds png 拓撲圖如下: 從圖中可以看到有四個組件:mongos、config server、shard、replica set。mongos,數據庫集群請求的入口,所有的請求都通過mongos進行協調,不需
Mongodb 分片
開放 collect 一起 src 強制 工具 字符 com 生產 原文地址:伍儀洲的博客 介紹 分片是指將數據拆分,並分散放在多個服務器中組成一個集群,這可以將N臺服務器的性能集中到一起來處理數據,這將很大程度的提高數據處理的速度。 在Mongodb的分片中必須具備三個角
ehcache3-源碼簡析三
func lap timeunit aps min ifreq ron 隨機數 unit ehcache3的evict策略是怎樣的呢?從put操作可以一窺,這裏以單層heap cache為例。 ehcache3的evict策略不可設置,只能通過eviction-adviso
Mybatis的簡析
java中的mybatisMybatis【概念】Mybatis是支持自定義的SQL查詢、存儲過程和高級映射的優秀持久層框架,Mybatis幾乎消除了所有的JDBC代碼和參數的手工設置以及結果集的檢索。Mybatis使用簡單的xml或註解用於配置和原始映射,將接口和普通的POJO(普通java對象)映射成數據庫