天天看點

MongoDB叢集,解決資料不分片問題

按 http://blog.csdn.net/fengyily/article/details/7388926 中配置的MongoDB叢集,進行資料插入,并檢視集合狀态時發現兩個問題:

1、集合中的資料不會分片。

    配置了shard1/shard2/shard3三個分片,但資料隻會集中在集合所在的分片上。

2、資料插入效率低下。

    采用for循環批量插入20萬資料時,發現每秒隻能插入100,200條,無法忍受的性能。

MongoDB叢集,解決資料不分片問題

經過分析mongos的日志mongos.log,發現其中一台存在以下日志資訊:

Thu Mar 29 01:05:18 [initandlisten] connection accepted from 192.168.1.190:52865 #345

Thu Mar 29 01:05:18 [conn345] authenticate: { authenticate: 1, nonce: "c56c219dd93277e1", user: "__system", key: "f85f00f59c9979af52c8e2f3a854ac9e" }

Thu Mar 29 01:05:46 [conn344] end connection 192.168.1.191:38281

Thu Mar 29 01:05:46 [initandlisten] connection accepted from 192.168.1.191:38289 #346

Thu Mar 29 01:05:46 [conn346] authenticate: { authenticate: 1, nonce: "2c2e6e5a47d9465c", user: "__system", key: "ef913dd4bd6748603842ba313c2437fe" }

Thu Mar 29 01:05:48 [conn345] end connection 192.168.1.190:52865

Thu Mar 29 01:05:48 [initandlisten] connection accepted from 192.168.1.190:52874 #347

Thu Mar 29 01:05:48 [conn347] authenticate: { authenticate: 1, nonce: "a6a21ef57b4e8123", user: "__system", key: "8057fff6fb913bfda00aece41ad44b71" }

其中還有一台的mongos.log提示時間不一緻。

通過将三台mongodb伺服器的時間同步後,再進行測試一切恢複正常。以上兩個問題都得到有效的解決。

這也許是mongodb存在的一個小BUG,當各分片伺服器時間不一緻時,會導緻資料分片與插入效率。這也說明,MongoDB資料庫資料分片機制與伺服器時間相關。具體得進一步分析源碼。