成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

你知道你的PG數(shù)據(jù)安全準(zhǔn)確嗎

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
對(duì)于Oracle這樣的數(shù)據(jù)庫(kù),文件的屬性被記錄在control file中,新增一個(gè)文件或者文件的大小發(fā)生變化的時(shí)候,會(huì)自動(dòng)更新數(shù)據(jù)。

去年我寫過一篇文章《PG數(shù)據(jù)庫(kù)離企業(yè)級(jí)數(shù)據(jù)庫(kù)還有多遠(yuǎn)》,實(shí)際上對(duì)PG了解得越深入,這個(gè)問題就越值得我們?nèi)ニ伎肌G皫滋煲粋€(gè)做數(shù)據(jù)庫(kù)高可用架構(gòu)的朋友在我的公眾號(hào)上留言,說在PG數(shù)據(jù)庫(kù)中,如果刪除了某一個(gè)數(shù)據(jù)文件,PG數(shù)據(jù)庫(kù)居然不報(bào)錯(cuò),還能查出數(shù)據(jù)來,不過查出來的數(shù)據(jù)是錯(cuò)的。這一點(diǎn)我以前倒是沒有注意到,數(shù)據(jù)庫(kù)丟失數(shù)據(jù)文件不報(bào)錯(cuò)是正常現(xiàn)象,不過查詢數(shù)據(jù)的時(shí)候,如果掃描到了這部分內(nèi)容,按理說應(yīng)該是會(huì)報(bào)錯(cuò)的,比如Oracle就是如此。昨天下班前我正好有點(diǎn)時(shí)間,就做了個(gè)小實(shí)驗(yàn)。實(shí)驗(yàn)內(nèi)容有點(diǎn)長(zhǎng),我先講一些結(jié)論性的東西,有興趣了解細(xì)節(jié)的朋友看完結(jié)論性的分析后再去看實(shí)驗(yàn)的詳情吧。

數(shù)據(jù)文件的完整性檢查是一個(gè)開銷十分巨大的操作,因此幾乎沒有數(shù)據(jù)庫(kù)會(huì)隨時(shí)對(duì)數(shù)據(jù)文件的完整性做檢查。連Oracle這種段頁(yè)式結(jié)構(gòu),以表空間為組織模式的數(shù)據(jù)庫(kù)都不會(huì)隨時(shí)去檢查數(shù)據(jù)文件的完整性和可用性。只有在訪問某個(gè)數(shù)據(jù)文件的時(shí)候才會(huì)通過文件頭去做一些校驗(yàn)。不過對(duì)于數(shù)據(jù)文件中的數(shù)據(jù)的一致性仍然不會(huì)去做檢查。這是一種更大開銷的操作。只有訪問到相關(guān)數(shù)據(jù)的時(shí)候才會(huì)去做一致性和完整性的檢查(并不是所有的訪問操作都會(huì)做)。不過不管如何,RDBMS系統(tǒng)要盡可能保證查詢出來的數(shù)據(jù)的邏輯一致性,確保數(shù)據(jù)一定是正確的。

對(duì)于Oracle這樣的數(shù)據(jù)庫(kù),文件的屬性被記錄在control file中,新增一個(gè)文件或者文件的大小發(fā)生變化的時(shí)候,會(huì)自動(dòng)更新數(shù)據(jù)。對(duì)于PG這樣的每張表都會(huì)有多個(gè)文件來存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)來說,登記每個(gè)使用過的文件是一種十分高成本的操作,一個(gè)上TB的表可能就會(huì)擁有上千個(gè)數(shù)據(jù)文件。這是一種一致性對(duì)于性能的妥協(xié),這種妥協(xié)為PG數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性帶來了巨大的隱患。昨天我的實(shí)驗(yàn)的結(jié)論是:“當(dāng)PG數(shù)據(jù)文件出現(xiàn)丟失的時(shí)候,PG數(shù)據(jù)庫(kù)不一定會(huì)因?yàn)槲募G失而報(bào)錯(cuò),而是會(huì)直接返回錯(cuò)誤的數(shù)據(jù)”。這是一種十分恐怖的特性,對(duì)于關(guān)鍵性的企業(yè)級(jí)應(yīng)用來說,錯(cuò)誤的數(shù)據(jù)比丟失數(shù)據(jù)還要可怕。

下面請(qǐng)大家看我的實(shí)驗(yàn)過程,我使用的PG版本是12.6,如果PG數(shù)據(jù)庫(kù)在新版本中已經(jīng)修復(fù)了我今天實(shí)驗(yàn)中的問題,也請(qǐng)朋友留言告知。先創(chuàng)建一張表,寫入部分?jǐn)?shù)據(jù)。從pg_class里可以看到relfilenode是16399。    

圖片圖片

圖片圖片

可以看出目前數(shù)據(jù)文件存儲(chǔ)在3個(gè)文件里。同時(shí)有一個(gè)fsm文件記錄了空閑空間的情況。我們做個(gè)簡(jiǎn)單的count查詢。

圖片圖片

沒錯(cuò),我剛才寫入了1000萬(wàn)條數(shù)據(jù)。然后我們開始作妖,刪除16399.1文件看看會(huì)出現(xiàn)什么情況。

圖片圖片

在另外一個(gè)窗口用rm命令刪除了文件后,我們查一下這張表的數(shù)據(jù):

圖片圖片

這里是報(bào)錯(cuò)了,確實(shí)發(fā)現(xiàn)了剛才被刪除的文件丟失了。在多次實(shí)驗(yàn)中,我發(fā)現(xiàn)有時(shí)候不會(huì)報(bào)錯(cuò),可以直接成功。我們先不管不報(bào)錯(cuò)的場(chǎng)景,后面我會(huì)補(bǔ)充這方面的數(shù)據(jù),現(xiàn)在我們重啟一下數(shù)據(jù)庫(kù),再來看看。    

圖片

數(shù)據(jù)庫(kù)重啟后,居然查詢成功了,只不過數(shù)據(jù)似乎不太對(duì),少了一些數(shù)據(jù),而且少的還不是16399.1里的所有數(shù)據(jù),似乎重啟數(shù)據(jù)庫(kù)的時(shí)候做了RECOVER。

圖片圖片

回到目錄中再去查看一下。十分奇怪,剛才被刪除的文件又回來了。

圖片圖片

從數(shù)據(jù)庫(kù)的日志中我們可以看到,RDBMS是做了RECOVER,自動(dòng)恢復(fù)了被刪除的文件。不過這個(gè)恢復(fù)并不完整,但是系統(tǒng)也沒有報(bào)錯(cuò),這種機(jī)制會(huì)給我們帶來錯(cuò)覺,導(dǎo)致業(yè)務(wù)數(shù)據(jù)的錯(cuò)亂,是十分可怕的。于是我再做一次刪除,然后重啟數(shù)據(jù)庫(kù)試試。十分奇怪的是,這回?cái)?shù)據(jù)庫(kù)重啟沒有像上回那樣RECOVER了丟失的數(shù)據(jù)文件,這種行為的不確定性也說明了PG數(shù)據(jù)庫(kù)在數(shù)據(jù)一致性檢查方面存在一定的缺陷,不能保持某些恢復(fù)行為的一致性,對(duì)于企業(yè)級(jí)數(shù)據(jù)庫(kù)來說,這也是十分致命的。

圖片圖片

    

圖片圖片

從文件系統(tǒng)上看,這回丟失的文件也沒有恢復(fù)。

圖片圖片

我再查詢數(shù)據(jù),發(fā)現(xiàn)丟失了一半的數(shù)據(jù),只有一半數(shù)據(jù)了。接下來再試試CTAS,完整拷貝這張表的全部數(shù)據(jù)。這個(gè)操作居然成功完成,沒有任何報(bào)錯(cuò),這說明RDBMS認(rèn)為當(dāng)前的數(shù)據(jù)是完整的,而實(shí)際上數(shù)據(jù)已經(jīng)產(chǎn)生了嚴(yán)重的丟失。接下來測(cè)試下寫入數(shù)據(jù),這個(gè)測(cè)試也成功了。

圖片圖片

這是一個(gè)十分恐怖的實(shí)驗(yàn),在我的理解里,F(xiàn)SM里起碼會(huì)記錄空塊的情況,丟失文件的問題應(yīng)該能從查找FSM文件的時(shí)候被發(fā)現(xiàn)。不過這沒有發(fā)生,不過也很容易理解,因?yàn)镮NSERT數(shù)據(jù)的時(shí)候,只需要查空塊就可以了,不一定會(huì)發(fā)現(xiàn)問題。目前我還沒有從PG的源碼上去分析這個(gè)問題,因此還不是很清晰這方面的機(jī)理。不過從目前的實(shí)驗(yàn)上看,PG確實(shí)存在誤刪文件后不會(huì)被發(fā)現(xiàn),導(dǎo)致數(shù)據(jù)出現(xiàn)錯(cuò)誤的問題。這種缺陷是十分恐怖的,很多時(shí)候不怕丟數(shù)據(jù),而是怕丟了數(shù)據(jù)你不知道。因?yàn)閷?duì)于核心業(yè)務(wù)系統(tǒng)來說,數(shù)據(jù)準(zhǔn)確性是最為關(guān)鍵的。

這回我們換一個(gè)玩法,首先我們創(chuàng)建好表數(shù)據(jù),然后我們關(guān)閉數(shù)據(jù)庫(kù),再刪除某個(gè)文件。重啟數(shù)據(jù)庫(kù)。    

圖片圖片

上圖中黃線后面的操作是我重啟數(shù)據(jù)庫(kù)后做的,發(fā)現(xiàn)被刪除的文件沒有被恢復(fù)。再看看查詢結(jié)果。

圖片圖片

如預(yù)期的那樣,沒有報(bào)錯(cuò),但是結(jié)果是錯(cuò)誤的,少了400多萬(wàn)條數(shù)據(jù)。剛才刪除文件前我備份了該文件,把該文件直接拷貝回來看看。

圖片圖片

仍然沒有報(bào)錯(cuò),正確的結(jié)果回來了,是不是很神奇!!!。從上面的實(shí)驗(yàn)可以看到,如果在PG數(shù)據(jù)庫(kù)中丟失某個(gè)數(shù)據(jù)文件,那么數(shù)據(jù)庫(kù)的行為可能是不確定的,不過大概率會(huì)給你返回錯(cuò)誤的數(shù)據(jù)。這種特性會(huì)對(duì)于關(guān)鍵的企業(yè)級(jí)應(yīng)用帶來困難。因此我們必須在盡可能不影響數(shù)據(jù)庫(kù)性能的前提下彌補(bǔ)這個(gè)缺陷。至于如何彌補(bǔ),可能需要對(duì)源代碼做一些解讀后才能想辦法。今天的實(shí)驗(yàn)先到這里吧,源代碼的解讀隨后有時(shí)間再做。有興趣的朋友也可以去閱讀分析一下。      

責(zé)任編輯:武曉燕 來源: 白鱔的洞穴
相關(guān)推薦

2019-11-12 08:53:32

PG數(shù)據(jù)數(shù)據(jù)庫(kù)

2016-09-29 15:43:33

2017-12-28 15:26:37

2020-09-03 06:42:12

線程安全CPU

2021-12-08 07:31:40

Linux安全病毒

2019-06-14 15:36:13

Windows 10安全PC

2023-01-31 09:02:24

JSVMVR

2016-02-19 16:35:07

云安全云計(jì)算私有云

2022-06-01 07:10:43

遞歸字典極限

2023-07-11 00:12:05

2018-07-05 09:01:45

數(shù)據(jù)安全隱私

2010-11-23 10:21:53

跳槽

2014-08-11 15:57:16

2018-01-10 08:27:00

2021-10-08 21:00:52

數(shù)據(jù)弱引用對(duì)象

2022-06-29 08:32:04

游標(biāo)MySQL服務(wù)器

2019-06-03 10:14:07

API網(wǎng)關(guān)微服務(wù)

2023-07-26 00:16:49

2012-12-21 16:57:37

手機(jī)安全個(gè)人信息泄漏個(gè)人信息安全

2015-11-02 09:50:48

電腦1秒鐘事情
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天堂成人av | 天天久久 | 久久亚洲欧美日韩精品专区 | 国产成人久久精品一区二区三区 | 日韩成人在线电影 | 久久人人网 | 亚洲伊人精品酒店 | 亚洲第一在线 | 亚洲国产二区 | 欧美一级二级三级视频 | 丝袜久久 | 亚洲国产精品视频 | 国产成人短视频在线观看 | 日韩欧美在线视频观看 | 啪啪免费网 | 夜夜骑综合| 美女天天干天天操 | 日韩欧美在线一区 | 国产一区二区精品在线 | 国产精品一区二区无线 | 亚洲欧美日韩精品久久亚洲区 | 人人做人人澡人人爽欧美 | 精品久久影院 | 日韩亚洲一区二区 | 欧美中文字幕一区 | 欧美激情精品久久久久久变态 | 久久一 | 亚洲色图婷婷 | 日韩欧美一区二区三区 | 亚洲精品68久久久一区 | 九色在线观看 | 欧美另类视频在线 | 精品欧美乱码久久久久久 | 日韩国产欧美一区 | 天天看天天爽 | 日韩一级一区 | 欧美a区 | 99热精品久久 | 亚洲一区二区视频在线观看 | 亚洲一区二区三区在线 | 丁香婷婷在线视频 |