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