本發明專利技術涉及一種基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法。本方法可用于檢查主表物理文件一致性、檢查索引表物理文件一致性、檢查主表和索引表物理文件邏輯一致性。本發明專利技術一致性檢查方法克服了傳統的數據文件一致性校驗方法啟動滯后,檢查失敗會導致業務失敗甚至數據庫實例異常的缺陷。通過本方法可在DBA日常運維過程中,定期主動對指定表的物理文件進行全量一致性檢查,并可對主表相關的btree索引物理文件和主表物理文件的一致性關系進行檢查,從而可以及時發現數據庫中出現的數據文件一致性問題,并采取相應修復規避措施,以盡量降低可能造成的影響和損失。以盡量降低可能造成的影響和損失。以盡量降低可能造成的影響和損失。
【技術實現步驟摘要】
基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法
[0001]本專利技術屬于數據文件一致性檢查方法
,尤其涉及一種基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法。
技術介紹
[0002]針對openGauss數據庫,傳統的數據文件一致性校驗是對數據頁計算crc并將結果記錄在pageheader的pd_checksum中,當從磁盤中讀取數據頁時使用同樣的計算方式獲得crc結果再與pageheader中存儲的pd_checksum進行比較以判斷該數據頁的一致性。
[0003]然而,傳統的校驗機制,只有在業務請求訪問到對應數據頁,并且內存中未找到該數據頁,需要從磁盤讀取時才會進行一致性檢查,此時如果檢查失敗,輕則導致該筆業務失敗,重則可能會導致數據庫實例異常。
技術實現思路
[0004]為了克服傳統的數據文件一致性校驗方法存在的上述缺陷,本專利技術提出了一種新的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法。通過本方法可在DBA日常運維過程中,定期主動對指定表的物理文件進行全量一致性檢查,并可對主表相關的btree索引物理文件和主表物理文件的一致性關系進行檢查,從而可以及時發現數據庫中出現的數據文件一致性問題,并采取相應修復規避措施,以盡量降低可能造成的影響和損失。
[0005]本專利技術方法利用openGauss數據庫現有的以下功能,來實現對數據庫文件一致性的檢查:
[0006]1、在openGauss數據庫中創建一張表和索引,分別會在pg_class和pg_index系統表記錄下表和索引的信息,其中包括表和索引的邏輯關系、對應的物理文件名稱,即relfilenode;
[0007]2、在每個數據頁的pageheader中有記錄該頁的完整性校驗值pd_checksum;
[0008]3、在索引文件中,存儲著索引列值和對應行在主表中的ctid用于通過索引查找到主表對應的數據。
[0009]本專利技術基于以上內容實現一種在openGauss數據庫中檢查數據文件一致性的方法。
[0010]具體地,本專利技術提供了一種基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,本方法包括:
[0011]S1.啟動openGauss數據庫,使數據庫處于正常服務狀態;
[0012]S2.數據庫接收客戶端發來的請求并進行解析;
[0013]S3.解析出需要實施的一致性檢查類型和檢查目標表名稱relname;
[0014]S4.根據不同的檢查類型實施具體檢查操作。
[0015]進一步地,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法步驟S4中所述不同的檢查類型包括:
[0016]類型一:檢查主表物理文件一致性;
[0017]類型二:檢查索引表物理文件一致性;
[0018]類型三:檢查主表和索引表物理文件邏輯一致性。
[0019]進一步地,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,針對類型一:檢查主表物理文件一致性,包括下述檢查步驟:
[0020](1)通過解析出的relname在pg_class系統表中查詢獲取主表物理文件名稱relfilenode;
[0021](2)打開并逐頁讀取物理文件,同時校驗每頁的crc,即pageheader中的pg_checksum;
[0022](3)統計所有頁校驗結果并返回給客戶端。
[0023]進一步地,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法中所述校驗每頁的crc是指在對數據頁落盤前計算整頁的crc值并填充到pageheader的pd_checksum字段,讀取數據頁后,使用同樣的方式計算整頁的crc值進行比較,比較結果一致則說明數據頁未被修改。
[0024]進一步地,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,針對類型二:檢查索引表物理文件一致性,包括下述檢查步驟:
[0025](1)通過解析出的relname在pg_class和pg_index系統表中查詢獲取主表所有索引表的物理文件名稱relfilenode;
[0026](2)打開并逐頁讀取物理文件,同時校驗每頁的crc;
[0027](3)統計所有頁校驗結果并返回給客戶端。
[0028]進一步地,上述基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法步驟(1)中所述通過解析出的relname在pg_class和pg_index系統表中查詢獲取主表所有索引表的物理文件名稱relfilenode包括:根據pg_class和pg_index的存儲內容,pg_class中的主表oid等于pg_index中的indexreloid,由此可以查詢到所有主表相關的索引oid,即indreloid,再使用indreloid返回到pg_class中查詢對應的relfilenode。
[0029]進一步地,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,針對類型三:檢查主表和索引表物理文件邏輯一致性,包括下述檢查步驟:
[0030](1)通過解析出的relname在pg_class和pg_index系統表中查詢獲取主表和主表所有索引表的物理文件名稱relfilenode;
[0031](2)打開并逐頁讀取索引表物理文件,同時校驗每頁的crc;
[0032](3)逐行讀取索引行,并通過索引行存儲的ctid到主表中找到對應的主表數據,比較索引列數據和對應的主表數據;
[0033](4)統計檢查結果并返回給客戶端。
[0034]本專利技術方法的實施策略主要有以下兩種:
[0035]第一種:預先指定實現語法、檢查目標表名稱和檢查項(主表物理文件一致性、索引表物理文件一致性、主表和索引表物理文件邏輯一致性),通過執行相應的sql命令即可實施。
[0036]第二種:預先將待執行的sql命令和檢查項封裝為可執行工具,通過執行該工具即可實施。
[0037]另外,本專利技術還提供了一種計算機可讀存儲介質,所述存儲介質上存儲有計算機程序,所述程序被處理器執行時實現上述的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法的步驟。
[0038]綜上,本專利技術基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法克服了傳統的數據文件一致性校驗方法啟動滯后,檢查失敗會導致業務失敗甚至數據庫實例異常的缺陷。通過本方法可在DBA日常運維過程中,定期主動對指定表的物理文件進行全量一致性檢查,并可對主表相關的btree索引物理文件和主表物理文件的一致性關系進行檢查,從而可以及時發現數據庫中出現的數據文件一致性問題,并采取相應修復規避措施,以盡量降低可能造成的影響和損失。
附圖說明
[0039]本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,其特征在于,所述方法包括:S1.啟動openGauss數據庫,使數據庫處于正常服務狀態;S2.數據庫接收客戶端發來的請求并進行解析;S3.解析出需要實施的一致性檢查類型和檢查目標表名稱relname;S4.根據不同的檢查類型實施具體檢查操作。2.根據權利要求1所述的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,其特征在于,步驟S4中所述不同的檢查類型包括:類型一:檢查主表物理文件一致性;類型二:檢查索引表物理文件一致性;類型三:檢查主表和索引表物理文件邏輯一致性。3.根據權利要求2所述的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,其特征在于,針對所述類型一:檢查主表物理文件一致性,包括下述檢查步驟:(1)通過解析出的relname在pg_class系統表中查詢獲取主表物理文件名稱relfilenode;(2)打開并逐頁讀取物理文件,同時校驗每頁的crc,即pageheader中的pg_checksum;(3)統計所有頁校驗結果并返回給客戶端。4.根據權利要求3所述的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,其特征在于,步驟(2)中所述校驗每頁的crc是指在對數據頁落盤前計算整頁的crc值并填充到pageheader的pg_checksum字段,讀取數據頁后,使用同樣的方式計算整頁的crc值進行比較,比較結果一致則說明數據頁未被修改。5.根據權利要求2所述的基于openGauss數據庫的行存數據文件和索引文件一致性檢查方法,其特征在于,針對所述類型二:檢查索引表物理文件一致性,包括下述檢查步驟:(1)通過解析出的rel...
【專利技術屬性】
技術研發人員:劉遙,劉洋,
申請(專利權)人:廣州海量數據庫技術有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。