新聞中心
隨著企業(yè)運營數(shù)據(jù)的不斷增長,數(shù)據(jù)庫成為了承載數(shù)據(jù)的核心存儲介質(zhì)。然而,在大量數(shù)據(jù)存儲與快速查詢的同時,數(shù)據(jù)庫日志的復(fù)雜性不斷增加也成為數(shù)據(jù)庫管理員的煩惱。

創(chuàng)新互聯(lián)專注于望謨網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供望謨營銷型網(wǎng)站建設(shè),望謨網(wǎng)站制作、望謨網(wǎng)頁設(shè)計、望謨網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造望謨網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供望謨網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
為解決這一難題,數(shù)據(jù)庫日志分析技術(shù)應(yīng)運而生。本文將,為讀者提供一份指引。
1. 數(shù)據(jù)庫日志的基本概念
數(shù)據(jù)庫日志是對數(shù)據(jù)庫中所有操作的詳細記錄,包括對表的創(chuàng)建、修改和刪除,對記錄的增、刪、改等操作。日志通常由兩個部分組成:操作日志和恢復(fù)日志。
操作日志記載了每一個操作對數(shù)據(jù)庫的影響,例如修改了哪一個表格中的哪些數(shù)據(jù)、向表格中插入了哪些數(shù)據(jù)、刪除了哪些數(shù)據(jù)?;謴?fù)日志則用于恢復(fù)操作發(fā)生前的狀態(tài)。
在實際應(yīng)用中,數(shù)據(jù)庫日志的數(shù)量和大小與業(yè)務(wù)數(shù)據(jù)規(guī)模和工作負載有關(guān)。特別是在關(guān)鍵業(yè)務(wù)場景下,數(shù)據(jù)庫日志越來越大,其內(nèi)容也越來越復(fù)雜,這時候數(shù)據(jù)庫管理員需要通過分析日志,以便及時發(fā)現(xiàn)潛在問題,迅速做出調(diào)整。
2. 數(shù)據(jù)庫日志分析的重要性
數(shù)據(jù)庫日志分析是一項重要的任務(wù),其目的在于幫助數(shù)據(jù)庫管理員識別潛在的問題,以優(yōu)化數(shù)據(jù)庫的性能和可用性。下面是數(shù)據(jù)庫日志分析的重要性:
(1)避免數(shù)據(jù)丟失
數(shù)據(jù)庫日志記錄了對數(shù)據(jù)庫的每一個操作,包括對表的創(chuàng)建、修改和刪除,對記錄的增、刪、改等操作。這有助于管理員快速恢復(fù)數(shù)據(jù),減少數(shù)據(jù)丟失。
(2)優(yōu)化數(shù)據(jù)庫性能
通過分析日志中的數(shù)據(jù),管理員可以發(fā)現(xiàn)哪些查詢或事務(wù)開銷非常高,并采取相應(yīng)的優(yōu)化措施,以提高數(shù)據(jù)庫性能。
(3)監(jiān)控數(shù)據(jù)庫安全
數(shù)據(jù)庫日志分析可以監(jiān)測非授權(quán)的數(shù)據(jù)訪問、SQL注入攻擊、錯誤登錄等問題。管理員可以通過日志分析快速發(fā)現(xiàn)問題,并及時采取防范措施。
3. 數(shù)據(jù)庫日志分析的核心技術(shù)
數(shù)據(jù)庫日志分析的核心技術(shù)主要包括數(shù)據(jù)采集、解析、存儲、分析和可視化五個部分。
(1)數(shù)據(jù)采集
數(shù)據(jù)采集是數(shù)據(jù)庫日志分析的之一步。這一過程通常使用日志采集器來實現(xiàn),該工具可以自動反復(fù)收集日志數(shù)據(jù),以便管理員可以對日志進行分析和審計。唯有采集到數(shù)據(jù),才能進行后續(xù)操作。
(2)解析
解析是日志分析的第二步,該過程主要涉及將日志數(shù)據(jù)轉(zhuǎn)換成容易理解的格式。例如,將SQL命令從二進制日志轉(zhuǎn)換成文本格式,以便管理員可以查看、分析和發(fā)送SQL。
(3)存儲
存儲是指將日志數(shù)據(jù)存儲在中央倉庫中,以供未來分析和審計。數(shù)據(jù)庫管理員的重要使命之一是保護日志數(shù)據(jù)安全,以免泄漏數(shù)據(jù)庫機密。
(4)分析
分析是日志分析的關(guān)鍵步驟,這其中包括識別潛在問題、分析占用資源的查詢和事務(wù)、分析安全事件。管理員可以使用日志分析工具進行分析,如:LogStash、ELK、Graylog等。
(5)可視化
可視化是最后一步,這需要將各項分析結(jié)果展示給管理員。通常,將其表示在 Dashboard 和報告中,這可以讓管理員很容易查看和理解分析結(jié)果。這一步驟有助于數(shù)據(jù)庫管理員了解數(shù)據(jù)庫的狀況,同時也可以向管理層匯報數(shù)據(jù)庫的性能和安全情況。
4. 數(shù)據(jù)庫日志分析的實踐
下面我們將以ELK為例,介紹日志分析的實踐過程。
在使用ELK進行日志分析之前,您需要安裝以下軟件:
– Elasticsearch – 用于存儲數(shù)據(jù)和搜索。
– Logstash – 用于采集數(shù)據(jù)并將其傳送到Elasticsearch。
– Kibana – 用于可視化數(shù)據(jù),并將數(shù)據(jù)從 Elasticsearch 檢索。
在ELK安裝之后,您首先需要配置Logstash,以安裝數(shù)據(jù)庫的日志收集器插件,然后將數(shù)據(jù)發(fā)送到 Elasticsearch。
在分析數(shù)據(jù)之前,您需要先配置Elasticsearch,以便它可以搜索和分析數(shù)據(jù)。
您可以使用Kibana進行數(shù)據(jù)可視化,運用Dashboard、圖形等方式對數(shù)據(jù)進行分析。
5. 結(jié)論
數(shù)據(jù)庫日志分析對于維護和優(yōu)化數(shù)據(jù)庫的性能是至關(guān)重要的。通過數(shù)據(jù)采集、解析、存儲、分析和可視化,管理員可以發(fā)現(xiàn)數(shù)據(jù)庫中隱藏的問題并及時解決。
若你正遇到日志分析問題,不妨試試ELK或其他類似工具,這可以大幅簡化日志分析程序,同時幫您提高數(shù)據(jù)庫的性能和可用性。將這些步驟納入到日?;顒又?,您可以讓數(shù)據(jù)庫更可靠、可預(yù)測、并在有限的預(yù)算下,為組織提供更多的價值。
相關(guān)問題拓展閱讀:
- 數(shù)據(jù)日志是什么?
- oracle數(shù)據(jù)庫的警告日志如何查看
數(shù)據(jù)日志是什么?
269-什么是凳陪數(shù)據(jù)遲答庫日棗旦蠢志
希望對你有幫助!Oracle數(shù)據(jù)庫的日志有:Redologfile—-重做日志Archivelogfile—-歸檔日志Tracefile—-跟蹤日答碧虛志backupground_dump_dest—-后臺進程跟蹤core_dump_dest—-Oracle內(nèi)核日志User_dump_dest—-用戶跟蹤(服務(wù)器進程)簡稱日志一般指的是聯(lián)機重做日志文件(Redlog)。主要功能是恢復(fù)異常關(guān)閉的數(shù)據(jù)庫和保證數(shù)據(jù)的完整性、一致性。還有可恢復(fù)近期丟失的數(shù)據(jù)(這要看重做日志文件的容量)。重做文件的原理是:把DML(Insert、Update、清燃Delete)語句所處理的前后記錄都寫入重做日志慧姿文件中。當數(shù)據(jù)庫的數(shù)據(jù)出故障時利用重做日志文件中的數(shù)據(jù)重新運行一次之前做過的業(yè)務(wù),以此來恢復(fù)數(shù)據(jù)庫中除了故障的數(shù)據(jù)。重做日志文件至少要有兩組,一般是三組。寫滿之一組寫第二組,寫滿第二組寫第三組,寫滿第三組返回覆蓋寫之一組,以此類推。
oracle數(shù)據(jù)庫的警告日志如何查看
告警日志文件是一類特殊的跟蹤文件(trace file)。告警日志文件命名爛察一般為alert_.log,其中SID為ORACLE數(shù)據(jù)庫脊歷空實例名稱。數(shù)據(jù)庫告警日志是櫻瞎按時間順序記錄message和錯誤信息。
?測試環(huán)境中出現(xiàn)了一個異常的告警現(xiàn)象:一條告警通過 Thanos Ruler 的 HTTP 接口觀察到持續(xù)處于 active 狀態(tài),但是從 AlertManager 這邊看這條告警為已解決狀態(tài)。按照 DMP 平臺的設(shè)計,告警已解決指的是告警上設(shè)置的結(jié)束時間已經(jīng)過了當前時間。一條發(fā)送至 AlertManager 的告警為已解決狀態(tài)有三種可能:1. 手動解決了告警2. 告警只產(chǎn)生了一次,第二次計算告警規(guī)則時會發(fā)送一個已解決的告警3. AlertManager 接收到的告警會帶著一個自動解決時間,如果還沒到達自動解決時間,則將該時間重置為 24h 后首先,因為了解到測試環(huán)境沒有手動解決過異常告警,排除之一條;其次,由于該告警持續(xù)處于 active 狀態(tài),所以不會是因為告警只產(chǎn)生了一次而接收到已解決狀態(tài)的告警,排除第二條;最后,告警的告警的產(chǎn)生時間念亂與自動解決時間相差不是 24h,排除第三條。那問題出在什么地方呢?
分析
下面我們開始分析這個問題。綜合之一節(jié)的描述,初步的猜想是告警在到達 AlertManager 前悉含的某些階段的處理過程太長,導(dǎo)致告警到達 AlertManager 后就已經(jīng)過了自動解決時間。我們從分析平臺里一條告警的流轉(zhuǎn)過程入手,找出告警在哪個處理階段耗時過長。首先,一條告警的產(chǎn)生需要兩方面的配合:
metric 數(shù)據(jù)
告警規(guī)則
將 metric
數(shù)據(jù)輸入
到告警規(guī)則進行計算,如果符合條件則產(chǎn)生告警。DMP 平臺集成了 Thanos 的相關(guān)組件,數(shù)據(jù)的提供和計算則會分開,數(shù)據(jù)還是由 Prometheus Server 提供,而告警規(guī)則的計算則交由 Thanos Rule(下文簡稱 Ruler)處理。下圖是 Ruler 組件在集群中所處的位置:
看來,想要弄清楚現(xiàn)告警的產(chǎn)生到 AlertManager 之間的過程,需要先弄清除 Ruler 的大致機制。官方文檔對 Ruler 的介紹是:You can think of Rule as a simplified Prometheus that does not require a sidecar and does not scrape and do PromQL evaluation (no QueryAPI)。
不難推測,Ruler 應(yīng)該是在 Prometheus 上封裝了一層,并提供一些額外的功能。通過翻閱資料大致了解,Ruler 使用 Prometheus 提供的庫計算告警規(guī)則,并提供一些額外的功能。下面是 Ruler 中告警流轉(zhuǎn)過程:
請點擊輸入圖片描述
請點擊輸入圖片描述
首先,圖中每個告警規(guī)則 Rule 都有一個 active queue(下面簡稱本地隊列),用來保存一個告警規(guī)則下的活躍告警。
其次,從本地隊列中取出告警,發(fā)送至 AlertManager 前,會被放入 Thanos Rule Queue(下面簡稱緩沖隊列),該緩沖隊列有兩個屬性:
capacity(默認值為 10000):控制緩沖隊列的大小,
maxBatchSize(默認值為 100):控制單次發(fā)送到 AlertManager 的更大告警數(shù)
了解了上述過程,再通過翻閱 Ruler 源碼發(fā)現(xiàn),一條告警在放入緩沖隊列前,會為其設(shè)置一個默認的自動解決時間(當前時間 + 3m),這里是影響告警自動解決的開始時間,在這以后,有兩個階段可能影響告警的處理:1. 緩沖隊列階段2. 出緩沖隊列到 AlertManager 階段(
網(wǎng)絡(luò)延遲
影響)由于測試環(huán)境是局域網(wǎng)環(huán)境,并且也沒在環(huán)境上發(fā)現(xiàn)網(wǎng)絡(luò)相關(guān)的問題,我們初步排除第二個階段的影響,下面我們將注意力放在緩沖隊列上。通過相關(guān)源碼發(fā)現(xiàn),告警在緩沖隊列中的處理過程大致如下:如果本地隊列中存在一條告警,其上次發(fā)送之間距離現(xiàn)在超過了 1m(默認值,可修改),則將該告警放入緩沖隊列,并從緩沖隊列中推送最多 maxBatchSize 個告警發(fā)送至 AlertManager。反之,如果所有睜高笑本地隊列中的告警,在最近 1m 內(nèi)都有發(fā)送過,那么就不會推送緩沖隊列中的告警。也就是說,如果在一段時間內(nèi),產(chǎn)生了大量重復(fù)的告警,緩沖隊列的推送頻率會下降。隊列的生產(chǎn)
方太
多,消費方太少,該隊列中的告警就會產(chǎn)生堆積的現(xiàn)象。因此我們不難猜測,問題原因很可能是是緩沖隊列推送頻率變低的情況下,單次推送的告警數(shù)量太少,導(dǎo)致緩沖隊列堆積。下面我們通過兩個方面驗證上述猜想:首先通過日志可以得到隊列在大約 20230s 內(nèi)推送了大約 2023 次,即平均 10s 推送一次。結(jié)合緩沖隊列的具體屬性,一條存在于隊列中的告警大約需要 (capacity/maxBatchSize)*10s = 16m,AlertManager 在接收到告警后早已超過了默認的自動解決時間(3m)。其次,Ruler 提供了 3 個 metric 的值來監(jiān)控緩沖隊列的運行情況:
thanos_alert_queue_alerts_dropped_total
thanos_alert_queue_alerts_pushed_total
thanos_alert_queue_alerts_popped_total
通過觀察 thanos_alert_queue_alerts_dropped_total 的值,看到存在告警丟失的總數(shù),也能佐證了緩沖隊列在某些時刻存在已滿的情況。
解決通過以上的分析,我們基本確定了問題的根源:Ruler 組件內(nèi)置的緩沖隊列堆積造成了告警發(fā)送的延遲。針對這個問題,我們選擇調(diào)整隊列的 maxBatchSize 值。下面介紹一下這個值如何設(shè)置的思路。由于每計算一次告警規(guī)則就會嘗試推送一次緩沖隊列,我們通過估計一個告警數(shù)量的更大值,得到 maxBatchSize 可以設(shè)置的最小值。假設(shè)你的業(yè)務(wù)系統(tǒng)需要監(jiān)控的實體數(shù)量分別為 x1、x2、x3、…、xn,實體上的告警規(guī)則數(shù)量分別有 y1、y2、y3、…、yn,那么一次能產(chǎn)生的告警數(shù)量最多是(x1 * y2 + x2 * y2 + x3 * y3 + … + xn * yn),最多推送(y1 + y2 + y3 + … + yn)次,所以要使緩沖隊列不堆積,maxBatchSize 應(yīng)該滿足:maxBatchSize >= (x1 * y2 + x2 * y2 + x3 * y3 + … + xn * yn) / (y1 + y2 + y3 + … + yn),假設(shè) x = max(x1,x2, …,xn), 將不等式右邊適當放大后為 x,即 maxBatchSize 的最小值為 x。也就是說,可以將 maxBatchSize 設(shè)置為系統(tǒng)中數(shù)量更大的那一類監(jiān)控實體,對于 DMP 平臺,一般來說是 MySQL 實例。
注意事項
上面的計算過程只是提供一個參考思路,如果最終計算出該值過大,很有可能對 AlertManager 造成壓力,因而失去緩沖隊列的作用,所以還是需要結(jié)合實際情況,具體分析。因為 DMP 將 Ruler 集成到了自己的組件中,所以可以比較方便地對這個值進行修改。如果是依照官方文檔的介紹使用的 Ruler 組件,那么需要對源碼文件進行定制化修改。
??
關(guān)于數(shù)據(jù)庫日志分析的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁名稱:深入探究數(shù)據(jù)庫日志分析的核心技術(shù)與實踐(數(shù)據(jù)庫日志分析)
地址分享:http://m.fisionsoft.com.cn/article/ccooegc.html


咨詢
建站咨詢
