企業中項目日誌數較多 儲存處理方式elk和mysql哪種方式更合適?

博主工作的一個項目裏用了elk來存儲用戶操作日誌,日誌量大概是每天一千萬左右的數據,最近服務器的磁盤被塞滿了   本想將時間較長的數據刪除掉   但當時刪除總是出現版本衝突的錯誤

並且es在單個索引數據達到 億級以上的時候查詢時間也是不樂觀的

於是乎博主花了點時間將es的日誌數據全部查詢出來    準備將這些數據包括以後的日誌數據都存儲到mysql中      博主的日誌都是先全部存入kafka然後再通過logstash消費到es中,現改成用java程序消費日誌數據存儲mysql中

 由於mysql單表的數據查詢極限在一千萬左右,所以博主做的分表方式如下:

第一.每個月用三十張表存儲數據  三十張表的數據存儲位置規劃是根據用戶帳號的信息的hash得來,並且根據用戶帳號和查詢條件字段做了索引  這樣的話 查詢時可以大大提高效率  並且查詢一個用戶的操作記錄也只需要查詢一張表即可,不過由於是根據年月分表,那麼如果跨月查詢的話還是需要結合多張表查詢    不過根據業務情況  大多出查詢情況都是查詢月份數據   所以這樣做問題不大

當然有些朋友會說 爲什麼不用hive和hadoop呢?

由於業務上的需求   不適合用非實時性的存儲方式  並且查詢效率方面並不是很出色

總結來說  es和mysql 存儲日誌各有各的好處   es的缺點就是比較喫系統配置  語法相對sql而言較複雜(7.x以後或可以用sql插件使用sql查詢)   分頁查詢相對而言比較麻煩, 優點就是查詢速度較快,支持分詞,性能較好 有比較多的周邊組件

mysql的優缺點也很明顯:免費  輕巧   當然啦  性能方面肯定不如大型數據庫 

 

 所以呢    解決問題的辦法很多  根據不同的情況去選擇合適的,如果公司不缺錢 服務器有的是,可以考慮用elk弄一套日誌收集系統  如果怕坑 怕麻煩  還是選擇mysql分表 分庫存儲比較好 ,畢竟博主是掉了elk的坑裏  

 

都看到這了  喜歡的話麻煩看官點個贊或者關注一下吧

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