1. 程式人生 > >MySQL Cluster 使用小測小結(2)

MySQL Cluster 使用小測小結(2)

承接之前的初測,題目本來想叫深入測試的,不過想想太大了,就還叫使用的一個小結吧。

在擴充資料節點之前,OneCoder向資料庫中又寫入900w的資料,總量達到1kw。每批次寫入20w的資料,寫入時間大致如下:

……
It's up to batch count: 200000
Batch data commit finished. Time cost: 202634
It's up to batch count: 200000
Batch data commit finished. Time cost: 168834
It's up to batch count: 200000
Batch data commit finished. Time cost: 181764
It's up to batch count: 200000
Batch data commit finished. Time cost: 156975
It's up to batch count: 200000
Batch data commit finished. Time cost: 184845
It's up to batch count: 200000
Batch data commit finished. Time cost: 202010
It's up to batch count: 200000
Batch data commit finished. Time cost: 177443
It's up to batch count: 200000
Batch data commit finished. Time cost: 203957
It's up to batch count: 200000
Batch data commit finished. Time cost: 159565
All data insert finished. Total time cost: 10476439

1kw資料執行Select,查詢10條結果效率如下:

Query ten rows from table [data_house] cost time: 27

可見效率還是很快。當前資料分佈情況如下:

現在,再新增一個數據節點。步驟略,主要就是修改配置檔案,按順序重啟即可。不過在重啟Data Node時候需要耐心等待成功。

通過

ndb_mgm>all report memory

檢視記憶體佔用:

發現數據並沒有均勻分配。此時再通過程式碼查詢記錄,看看耗時情況。耗時還是24ms左右。沒有明顯變化。不過,這裡我們還是想讓資料均勻分配的。先測試再寫入100w資料。會不會分別儲存。測試顯示,資料還是集中在原來的節點儲存。插入效率基本與原來一致。

將NoOfReplicas的值從1改為2, 重新啟動,發現一直報錯:

Node 2: Forced node shutdown completed. Occured during startphase 1. Caused by error 2350: 'Invalid configuration received from Management Server(Configuration error). Permanent error, external action needed'

這個問題確實有由於修改了值引起的,但是找了半天一直沒有正常的解決。考慮到現在data儲存都是測試資料,所以考慮在data節點採用:

shell>ndbd --initial-start --foreground

的方式重啟節點,並通過foreground的方式檢視啟動日誌。最後,倒是正常啟動成功了,只是資料確實被"initial"乾淨了。重新灌資料吧。還拿100w試驗。資料灌入效率差不多,只是資料在兩個節點上被複制兩份了

查詢效率還是20ms左右。

繼續測試,在執行之前的1kw資料,20w一組批量寫入資料灌入測試中,卻出現:

Lock wait timeout exceeded; try restarting transaction

的錯誤。有人說需要調整

TransactionDeadLockDetectionTimeOut=10000

引數的值,預設是1200。不過我並沒有採用,因為重啟挺坎坷,根據網上的一些討論分析,減少了每次寫入的數量,到10w。目前來看,穩定許多,尚未出現錯誤。
關閉一個節點,驗證叢集的高可用性。

再次呼叫查詢介面。正常返回資料。

目前為止,我們還差最關心的資料自動分片,分節點儲存的問題沒有驗證清楚。隨後,我們將針對此問題再進行進一步的驗證。