數據支撐環境的改造

關於數據支撐環境進行了合適的改造,詳細內容如下:

數據支撐環境與舊環境是不同的,經過了合理改造。
1. 添加Redis集羣的切片機制
2. MongoDB的仲裁機制優化
3. MariaDB的選擇,摒棄了Mysql
(1) Redis切片機制,舊環境沒有切片
沒有進行切片的redis集羣有很大的缺陷,首先失去了負載均衡功能,其次重啓後集羣效果有可能不保。所以未切片的redis集羣,就完全喪失了分佈式的意義。因此城軌數據支撐環境進行了切片化改造,每個切片都包含一主一從。
切片命令如下:
./redis-trib.rb reshard 172.16.16.18:7000
./redis-trib.rb create --replicas 1 master.hadoop:7000 master.hadoop:7001 master.hadoop:7002 slave1.hadoop:7003 slave1.hadoop:7004 slave1.hadoop:7005
部署完成後,check得到如下切片集羣。
數據支撐環境的改造
(2)MongoDB的仲裁機制優化,添加舊環境沒有的仲裁機制。
數據支撐環境的集羣,必須有三部分構成:主、從、仲裁。
設計院環境缺乏仲裁機制,主一旦掛掉,從不能升級爲主,導致服務掛掉。
仲裁的作用是:一旦主機掛掉,進行投票,從機自動升級爲主機,這樣系統服務就不會掛掉,保證了高可用性。
經過大量血的教訓,一個分片配置兩個副本集時(一個是primary一個是secondary),如果primary掛掉,secondary是不會升級的,必須要加上一個不存儲數據的仲裁節點

config = {"_id" : "tonghao", "members" : [ {"_id" : 0, "host" : "10.2.42.101:27017", priority:2},{"_id" : 1, "host" : "10.2.40.104:27017", priority:1},{"_id" : 2, "host":"10.2.40.104:27016", arbiterOnly:true}]}

priority:2,數字越大級別越高,級別高的作爲主節點。

主從複製原理:

假如副本集的數據主從同步不一致,則需要把local db下的文件全複製。
也就是要遷移oplog時間戳

當Mongo DB 被設置成主庫時(這一點很重要),在 local db 下有個 collection 叫oplog.$main ,這個就是Mongo 的 oplog。

當Primary節點完成數據操作後,Secondary會做出一系列的動作保證數據的同步:
1:檢查自己local庫的oplog.rs集合找出最近的時間戳。
2:檢查Primary節點local庫oplog.rs集合,找出大於此時間戳的記錄。
3:將找到的記錄插入到自己的oplog.rs集合中,並執行這些操作。

Secondary節點同步到哪了:
1:Primary節點插入一條數據
2:同時,會把該數據寫入到Primary的oplog中,並且記錄一個時間戳
3:db.runCommand({getlasterror:1,w:2})在Primary節點被調用時,Primary就完成了寫入操作,等待其他非仲裁節點來同步數據
4:Secondary節點查詢Primary的oplog並且拉去oplog
5:Secondary根據時間戳應用oplog
6:Secondary請求大於本身oplog時間戳的oplog
7:Primary更新時間戳
(3)關於MariaDB與Mysql的選擇問題。
1.首先MariaDB的出現背景。
開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社區採用分支的方式來避開這個風險。
MariaDB的目的是在遵循GPL協議的條件下完全兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。
MySQL之父Widenius先生離開了Sun之後,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,而MariaDB和原來開源Mysql是同一團隊研發。
2.MariaDB的優點。
MariaDB有一個缺點就是開源,同時它的優點也是開源。這樣對MariaDB進行支撐的團隊人員將更加靈活和高效。事實也證明,閉源mysql的版本更新進度是緊跟MariaDB的。
MariaDB不僅僅是Mysql的一個替代品,它的主要目的是創新和提高Mysql的技術。
MariaDB跟MySQL在絕大多數方面是兼容的,對於開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發佈速度已經超過了Oracle官方的MySQL版本。
MariaDB 是一個採用Aria存儲引擎的MySQL分支版本,是由原來 MySQL 的作者Michael Widenius創辦的公司所開發的免費開源的數據庫服務器。
最近Oracle進一步閉源的舉措更是讓人難以安心,衆多互聯網公司紛紛開始尋求MySQL的替代方案。Apple,Google、Facebook、Twitter、Wiki也大量使用MariaDB,在美國已經掀起了熱潮。
此外Widenius團隊對MariaDB進行了更充分的測試,更少的的警告語缺陷、真正的開源。
所以基於以上種種原因,一體化配置工具將採用MariaDB的設計方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章