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桶會不會有用盡的情況?
答:應該不存在這個限制