這篇文章主要為大家展示了“POSTGRESQL中WAL機制的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“POSTGRESQL中WAL機制的示例分析”這篇文章吧。
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比合水網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式合水網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋合水地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
POSTGRESQL 做作為類似MySQL BINLOG + UNDO LOG , ORACLE REDO LOG ,的存在,是POSTGRESQL 本身在防止數(shù)據(jù)丟失,備份數(shù)據(jù),數(shù)據(jù)復(fù)制,數(shù)據(jù)庫CRASH 后的恢復(fù)數(shù)據(jù)等等功能于一身。
還是那句話,如果汽車的三大件,發(fā)動機,變速箱,底盤,那 POSTGRESQL WAL 想當(dāng)于汽車的 底盤,它集合了數(shù)據(jù)庫的安全性,性能,穩(wěn)定性等等重要特性于一身。
如果詳細的解釋W(xué)AL 到底具體的作用,它一個歷史日志,記錄數(shù)據(jù)庫系統(tǒng)中的所有更改和操作,以確保沒有任何數(shù)據(jù)由于故障而丟失,例如電源故障或其他導(dǎo)致服務(wù)器崩潰的服務(wù)器故障。由于日志包含了關(guān)于已經(jīng)執(zhí)行的每個事務(wù)的足夠信息,所以數(shù)據(jù)庫服務(wù)器應(yīng)該能夠通過在事務(wù)日志中重播更改和操作來恢復(fù)數(shù)據(jù)庫中的數(shù)據(jù)。
我們來大致跟著WAL 的流程走一遍來(其實很多數(shù)據(jù)庫都是這樣,MYSQL , SQL SERVER , ORACLE),只不過生成的形式,文件的格式,以及使用的方式,等等有所不同,但他們一直的目標(biāo)就是數(shù)據(jù)不丟失。
首先在確認一點的是,任何的數(shù)據(jù)操作都是在內(nèi)存中完成的,和磁盤上的文件沒有什么關(guān)系,要說關(guān)系就是數(shù)據(jù)的持久化,duration。
上圖粗糙的描述了,一個數(shù)據(jù)的寫入(寫入包含INSERT ,UPDATE,其實DELETE 從某種角度也是數(shù)據(jù)的寫入),那在數(shù)據(jù)寫入到內(nèi)存中,和WAL LOG 是一項事務(wù),(其實LOG 也是有buffer的,主要為性能)。這里我們忽略LOG BUFFER,直接認為,上面的操作是一個事務(wù)。 然后數(shù)據(jù)落到日志后,這個操作就會返回成功,后面的就是dirty page 刷入到磁盤的過程,這其實是不著急的,(這里不著急不是說等一個小時),在進行check point 后,數(shù)據(jù)就會落入到數(shù)據(jù)PAGE,數(shù)據(jù)就持久化了, 大致就是這樣一個流程。
那這里有一個問題,就是在數(shù)據(jù)dirty page 沒有刷新到DATA PAGE,而機器就OVER 了,或者OOM,那下次機器在啟動后,數(shù)據(jù)頁面沒有數(shù)據(jù),那數(shù)據(jù)丟失了嗎? 沒有,因為有WAL,為什么數(shù)據(jù)頁面沒有數(shù)據(jù),因為dirty page 沒有check point ,而系統(tǒng)啟動后,通過檢查check point點,獲知check point 點的位置,而在此位置后的的 dirty page 的操作都在wal中存儲,所以直接執(zhí)行 check point 點后的 wal 你的數(shù)據(jù)就回來了,crash data recovery. You job is done.
這就是這個WAL 的最重要的功能,之一。
我們可以通過下面的命令來確認當(dāng)前的wal 落到到那個wal 文件中
另外在PG 11 之前的版本會存儲兩個 checkpoint的位置,一個是最后一次的checkpoint的位置,另一個是再一次要進行的checkpiont的位置,而11,則只記錄最近一次的checkpoint的記錄號。
同時我們通過pg_controldata 命令可以獲得關(guān)于當(dāng)前PG 在WAL 中的詳細信息,甚至利用的好,還可以來獲知一些關(guān)系性能方面的事情。(具體怎么干,找時間能寫一篇)
同時 DBA 也可以手動進行 WAL 的新日志的生成,切斷現(xiàn)在的WAL日志,進行需要的維護。
同時,PG 也和其他數(shù)據(jù)庫一樣,例如MYSQL mysqlbinlog 命令來解析BINLOG文件,PG 的 pg_waldump 也可以將wal 文件翻譯成人類可讀的格式。
以上是“POSTGRESQL中WAL機制的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章標(biāo)題:POSTGRESQL中WAL機制的示例分析
網(wǎng)址分享:http://chinadenli.net/article4/pijgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、Google、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)