天天看點

【MongoDB訓練營】第四課:分片叢集的使用及原理介紹 答疑彙總

1.副本集和分片在生産環境中該如何取舍呢?有什麼參考規律麼?

答:副本集遇到的問題

副本集幫助我們解決了 讀請求擴充,高可用等問題。那麼業務場景進一步增長:

存儲容量超出單機磁盤容量;活躍資料集超出單機記憶體容量:很多讀請求需要從磁盤讀取寫入量超出單機IOPS上限mongodb分片叢集:水準擴容的方式,支援大資料集和稿吞吐量的情形副本集更新到分片叢集 ,用戶端需要重新開機。

2.change stream的機制是什麼,mongoclient在change stream是長連接配接還是短連接配接

答:change stream 進行op log的解析和讀取,目測是長連接配接。類似oracle的ogg個人感覺。

3.分片架構比副本集在SQL聚合查詢上是否有優勢?

答:這個可以利用到多shard并發IO的能力,但是資料仍然要經過網絡最終有mongos向外輸出,如果是高IO,但是最終輸出的結果比較少的話,sharding是有優勢的。經過Mongos多一跳确實優勢不明顯。

4.現網低版本3.2的mongodb分片叢集,想要更新到高版本,如何操作比較好,有什麼最佳實踐?

答:參考mongodb官方文檔,先更新config節點,再shard節點,最後mongos節點,并結合滾動更新的方式。

5.現有2節點的sharding,資料量比較大了,單節點1T左右,加起來7萬多個chunk,每天開了 0點到6點的balance,然後想着再擴容2個sharding節點,這樣的話是不是隻在規定的時間内balance?這樣的話是不是要好幾天才能均衡完?

答: 每個shard同一時間隻能遷移一個chunk,可以在congfig日志中檢視chunk遷移速度。一定會在規定時間内進行chunk遷移的觸發,對是觸發。

6.shardkey 的選擇、 類型的選擇 ,chunk要 大小的設定 能在稍微講講嗎?

答:參見課程ppt,絕對是講到了,比如基數足夠大,頻率足夠低,單調遞增的話用hash

chunk的大小建議保持預設值,太大可能有資料不均衡,太小導緻過多不必要的遷移。

參見群裡文檔連結。

7.修改分片鍵的 指令中的字首怎麼了解,該指令使用上有什麼限制?

答: 以目前分片鍵的字段作為新分片鍵的字首,比如原分片鍵用的字段A,那麼新分片鍵(A,B)

8.Mongo資料訂閱有哪些比較好的工具?阿裡雲有類似的訂閱服務麼?

答:阿裡雲DTS 可以支援資料遷移、同步、訂閱,change stream可以實作資料庫不同級别對象的資料訂閱

9.chunk和shardkey的關系?

答:sharedkey是資料打散的依據,打散後資料會被存放在chunk,不同的chunk會存放在shared中,chunk是shared對資料管理的底層邏輯機關。

10.hashed 分片預設會分成多少個chunk?是按資料量增加分裂變多嗎?

答:分片空資料集合進行hash分片,預設分裂為NUM(shard)*2個chunk;chunk預設chunk 64M 随着資料的增長,會進行分裂,當兩個shard資料不均衡時,會進行balancing。

11.chunk數量有上限嗎? hash桶會不會有用盡的情況?

答:應該不存在這個限制