
Google釋出開源PostgreSQL頁(yè)面驗(yàn)證(PostgreSQL Page Verification)工具,能幫助企業(yè)偵測(cè)PostgreSQL數(shù)據(jù)庫(kù)變更程序中,所發(fā)生的數(shù)據(jù)丟失或是損壞的情形。采用Cloud SQL的PostgreSQL用戶,其數(shù)據(jù)庫(kù)服務(wù)已經(jīng)自動(dòng)啟用了這項(xiàng)功能,Google提到,由於該工具會(huì)影響數(shù)據(jù)庫(kù)服務(wù)效能,因此建議其他使用者最好在獨(dú)立的伺服器中執(zhí)行該工具。
Google指出,數(shù)據(jù)丟失是數(shù)據(jù)庫(kù)變更中可能遭遇的最大風(fēng)險(xiǎn),驗(yàn)證數(shù)據(jù)庫(kù)備份是解決這個(gè)風(fēng)險(xiǎn)常見的作法,但是實(shí)際上在多數(shù)企業(yè)上并非如此。平時(shí)或許沒問題,不過一旦數(shù)據(jù)庫(kù)發(fā)生嚴(yán)重錯(cuò)誤,可能導(dǎo)致無法挽回的結(jié)果。PostgreSQL頁(yè)面驗(yàn)證工具的價(jià)值,在於盡早發(fā)現(xiàn)出數(shù)據(jù)損壞,并最大程度的減少數(shù)據(jù)丟失,確保數(shù)據(jù)庫(kù)災(zāi)難發(fā)生時(shí),企業(yè)還有完整的數(shù)據(jù)庫(kù)備份可以使用。
Google在4月時(shí)宣布其云端數(shù)據(jù)庫(kù)服務(wù)Cloud SQL開始提供PostgreSQL,而與此同時(shí),也在PostgreSQL社群中貢獻(xiàn)耕耘,GCP釋出的這個(gè)開源PostgreSQL頁(yè)面驗(yàn)證工具,是一個(gè)針對(duì)PostgreSQL數(shù)據(jù)庫(kù)的命令列工具,只要PostgreSQL版本9.3以上,都能使用數(shù)據(jù)頁(yè)面上的總和檢查碼(Checksum)來驗(yàn)證數(shù)據(jù)完整性。
用戶想要使用這個(gè)工具,必須在初始化新PostgreSQL數(shù)據(jù)庫(kù)叢集時(shí),就啟用總和檢查碼,這個(gè)動(dòng)作無法在事後才進(jìn)行。啟用總和檢查碼功能後,頁(yè)面驗(yàn)證工具會(huì)自動(dòng)計(jì)算自己的總和檢查碼,并且與Postgres的總和檢查碼相比對(duì),以確保兩者是相同的。當(dāng)驗(yàn)證失敗時(shí),工具也會(huì)告知使用者,發(fā)生問題的數(shù)據(jù)頁(yè)面所在。
無論數(shù)據(jù)庫(kù)是線上或是離線狀態(tài),都能使用頁(yè)面驗(yàn)證工具進(jìn)行驗(yàn)證,該工具僅對(duì)數(shù)據(jù)頁(yè)面上的總和檢查碼進(jìn)行校驗(yàn),并不需要把每個(gè)頁(yè)面都載入到共享緩沖快取中。另外,也支援驗(yàn)證大於1GB的表格的連續(xù)數(shù)據(jù)段(Subsequent segment),該工具還會(huì)自動(dòng)跳過Free Space Map、Visibility Map以及pg_internal.init檔案,因?yàn)檫@些數(shù)據(jù)都能夠重新產(chǎn)生。
Google提醒,這個(gè)數(shù)據(jù)驗(yàn)證工具會(huì)影響效能,因此建議企業(yè)可以將該工具合并至數(shù)據(jù)庫(kù)備份程序中,并在獨(dú)立的伺服器上執(zhí)行。而PostgreSQL頁(yè)面驗(yàn)證工具已經(jīng)整合在Cloud SQL的PostgreSQL服務(wù)中,因此在數(shù)據(jù)庫(kù)運(yùn)作的過程便會(huì)自動(dòng)執(zhí)行,Google大規(guī)模的使用這個(gè)工具,驗(yàn)證用戶在云端上的數(shù)據(jù)備份,而且為避免影響用戶數(shù)據(jù)庫(kù)效能,另外啟用了內(nèi)部執(zhí)行個(gè)體來執(zhí)行。非GCP用戶則可以在Google Open Source或是GitHub下載該工具。