您好,登錄后才能下訂單哦!
一 應用場景描述
前面介紹了兩種處理Zabbix歷史數據的解決辦法,但是如果當監控數據繼續增長的話是不足以解決問題的。
處理Zabbix歷史數據庫辦法二---使用MySQL表分區
處理Zabbix歷史數據庫辦法一
辦法一適合在沒有做表分區的情況下,只保留一段時間的數據,比如一個月,然后把老的數據刪除再使用方法二,這種操作執行時間長。
辦法二是使用MySQL自帶的表分區功能,將history等表按照日期進行分區,然后只保留一段時間的數據。但是即使使用表分區功能定期刪除不用的分區數據,也會有瓶頸產生。比如,監控數據量大了,一個月的歷史數據都有好幾百G,繼續增長就會把服務器磁盤撐爆了。所以,縱向擴展不是最好的選擇。由于Zabbix設計的是單庫結構,所有的表操作都是在同一個數據庫中執行,這樣像history這樣的大表操作必然會影響其他的表操作,如何將history這個幾個大表隔離出來放到其他數據庫服務器上才是解決問題的關鍵。由此想到可以使用MySQL中間件來對Zabbix數據庫進行分表操作,同時可以借助于MySQL中間件提供的讀寫分離功能,對這些大表進行讀寫分離,進一步減輕壓力。
二 MySQL中間件選型
在選擇使用哪一款MySQL中間件之前先確定我們的需求:
最好是開源產品,同時是出于活躍開發的產品
盡量在不更改Zabbix代碼的情況下可以直接使用---重點
提供分庫分表的功能
提供讀寫分離的功能
性能穩定,線上使用案例多
SQL語句解析豐富
明白了這些需求之后,就可以開始查資料選型了。幾種可選的MySQL中間件如下:
Cobar 阿里巴巴開源的產品,3年多沒有維護了,直接放棄
Mycat Cobar的改良版本,由社區維護,功能豐富,有線上案例參考。同時文檔和資料齊全。
《分布式數據庫架構及企業實踐——基于Mycat中間件》
可以測試
OneProxy 前支付寶DBA開發的商業產品,社區版本有限制。不過,他們有現成的Zabbix數據庫擴容方案。直接放棄
Kingshard 用Go語言開發的MySQL中間件,支持分庫分表和讀寫分離等功能。可以測試
DBProxy 美團最近開源的MySQL中間件,支持分表和讀寫分離。 可以測試
由此我們需要測試3個MySQL中間件:Mycat,Kingshard和DBProxy
首先部署兩個MySQL數據庫實例
172.28.2.231:3306 默認DB1
172.28.2.227:3306 存放history幾個大表的DB2
兩個DB實例都建好Zabbix數據庫和帳號,然后按照3個中間件的文檔部署
history,history_uint,history_str,history_text,history_log,trends,trends_uint 這幾張表按照文檔分配到DB2,其他的表默認走DB1
1.測試Mycat
Zabbix server日志沒有報錯,但是Zabbix頁面有報錯,主要都是SELECT DISTINCT h.* 這種SQL Mycat無法解析。在終端下測試SELECT DISTINCT * 就不報錯,同時如果history幾個表不走DB2而是走默認的DB1也不會報錯。
2.測試Kingshard
Zabbix server錯誤日志刷新頻繁,同時Kingshard的錯誤日志刷新較多,Zabbix頁面錯誤較多。
3.測試DBProxy
編譯安裝不成功,直接放棄
所以,接下來我們重點測試如果使用Mycat來擴容數據庫。關于MySQL中間件的資料網上很多,大家可以自行查找。分表功能包括
三 使用Mycat來為Zabbix數據庫分表
參考文檔:
https://github.com/flike/kingshard
http://www.open-open.com/news/view/1708e64
https://github.com/alibaba/cobar
https://github.com/MyCATApache/Mycat-Server
http://mycat.io/
http://www.onexsoft.com/zh/oneproxy-scale-out-zabbix.html
https://github.com/flike/kingshard
https://github.com/Meituan-Dianping/DBProxy
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。