GaussDB(DWS)數據同步狀態查看方法

      網友投稿 747 2025-04-04

      GaussDB(DWS)數據同步狀態查看方法

      1 背景概述:

      1.1DN高可用架構模型

      要理解或描述數據同步的過程機制,需要首先要了解GaussDB(DWS)的DN高可用架構,理解涉及數據同步的各組件的關系、數據類型、數據流向、設計原理和目的。

      GaussDB(DWS)的DN高可用架構為主、備、從備架構。即在分布式環境中,完整的集群數據采用分片技術分布在多個DN組上,每組DN承擔一個數據分片,包括:一個主DN、一個備DN和一個從備DN。主和備各有一份完整的數據,從備上一般不存儲數據,僅在備機故障時做數據的暫存。組件之間關系如圖1所示:

      圖1 DN高可用架構關系圖

      主、備、從備高可用架構下,主、備及主、從備之間均會建立流復制通道。流復制又分為日志復制和數據頁復制。日志復制用于同步主DN由于WAL機制刷到磁盤上的XLOG,同步到備DN進行回放。數據頁復制用于同步批量導入的行存數據、或列存CU文件。需要注意的一點是,從備僅用于存放XLOG和數據,回放(replay)僅發生在備DN上。

      1.2 數據同步涵蓋范圍

      數據同步就是涉及集群中主、備節點以及從備節點之間的日志復制數據的傳輸、回放,數據頁復制數據的傳輸、追趕,備機重建等過程。GaussDB(DWS)集群高可用實踐WAL(Write Ahead Logging)思想,并通過各組件的主備的數據同步、倒換、重建等機制,保證數據庫單實例遭遇Crash后,具備故障恢復及自愈的能力,保護數據庫中數據的可靠性和完整性,最終實現集群對外業務連續性的過程。

      這些主要的過程有:

      1.??????? 主備之間的正常流復制

      每組DN獨立承擔一個數據分片,因此要求各個DN主與備必須強同步。為保證DN的主備強同步,數據在主DN操作時產生日志,事務提交時將日志同步給備DN。備機對接收到的XLOG進行回放(replay),將日志轉為數據。另外,列存和行存批插場景下,備機正常時,新增(變更)數據會發往備機。使用數據頁同步相對于日志同步少了磁盤IO,可以提升同步效率,減小RTO。

      2.??????? 備機追趕

      為了解決單節點故障后集群寫事務可用,DN的高可用設計引入從備這個實例。一旦備DN故障,數據將發送給從備,仍然保證了數據寫兩份的原則,事務照樣可以提交。但主機會對BCM文件里面的標記位置狀態位。BCM文件中每一bit位(除預留位外)對應數據文件中每一頁(8k)狀態。

      當備機重新啟動的時候,會連接主機做數據頁追趕(catchup)。追趕機制分為全量和增量兩種。全量catchup機制,不依賴于從備,主機遞歸掃描本地默認表空間和自定義表空間下的所有BCM文件,然后查看狀態位來確認哪些數據文件需要發送給備機。增量catchup機制依賴于從備,主機通知從備遍歷其從備上暫存的數據頁,將變更的數據頁列表發往主機,主機直接按照從備發來的變更列表,將變更數據發往備機。

      3.??????? 主備倒換

      當主DN故障時,需要對備DN進行failover,failover后備DN升為主DN來接管業務。所以failover時,備DN需要連接從備DN,向從備DN請求數據,以補齊備DN比主DN缺少的數據。failover的過程是備DN獨立完成的,不需要和主DN進行交互。

      4.??????? 備機重建

      重建功能主要目的是單點故障修復,備機重建方式按照實現分為全量重建和增量重建,均和主DN進行交互。全量重建是備機清空數據目錄,保留配置文件,向主機發送全量重建請求,主機將自己的數據目錄除了配置文件外,全部發給備機,重建后啟動備機。增量重建是一種以主DN文件為基準,按照文件塊對備DN文件進行校驗,如果備DN文件的某個文件塊校驗不一致,則主機將此文件塊發給備DN,寫入文件對應的文件塊中。與全量重建相比較,拷貝的數據量和WAL日志量都更少,代價更小。

      從以上這些數據同步過程中,我們發現表現在運維上一個明顯的特點是,這些過程有可能會時間花費較長,一旦同步過程中出現異常問題,其內部關鍵過程信息輸出對于問題分析定位十分重要。因此,GaussDB(DWS)提供了豐富的系統函數、視圖、工具等可以直觀地對同步進度進行跟蹤,尤其是為方便定位人員使用,gs_ctl工具已集合了大部分相關系統函數的調用,可做到在任何時間,從未啟動、啟動、重建到運行時的關鍵信息顯示。

      2 方法總結

      2.1 系統視圖

      總結涉及數據同步的系統視圖如表1所示。具體參數、返回值定義請參考相應版本的產品文檔手冊。

      分類

      名稱

      用途

      使用范圍

      視圖類

      pg_replication_slots

      顯示當前DN上所有的復制槽信息

      主、備DN均可上執行

      pg_get_senders_catchup_time

      顯示單個DN上當前活躍的主備發送線程的追趕信息。

      主DN上執行

      pg_stat_replication

      用于描述日志同步狀態信息,如發起端發送日志位置,接收端接收日志位置等。

      主DN上執行

      表1 系統視圖表

      2.2 系統函數

      總結涉及數據同步的系統函數如表2所示。具體參數、返回值定義請參考相應版本的產品文檔手冊。

      分類

      名稱

      用途

      使用范圍

      函數類

      pgxc_get_senders_catchup_time

      顯示所有DN上當前活躍的主備發送線程的追趕信息。

      CN上執行

      pgxc_stat_get_wal_senders

      顯示所有DN上所有的WAL復制發送線程的統計信息。

      CN上執行

      pgxc_stat_xlog_space

      顯示所有主DN上XLOG空間使用信息

      CN上執行

      pg_stat_xlog_space

      顯示當前DN上XLOG空間使用信息

      主、備DN均可上執行

      pg_stat_get_stream_replications

      顯示當前DN上所有的復制統計信息。

      主、備DN均可上執行

      pg_get_replication_slots

      顯示當前DN上所有的復制槽信息

      主DN上執行

      pg_stat_get_wal_senders

      顯示當前DN上所有的WAL復制發送線程的統計信息。

      主DN上執行

      pg_stat_get_data_senders

      顯示當前DN上所有的數據頁復制發送線程的統計信息。

      主DN上執行

      pg_current_xlog_location

      獲取當前事務日志的寫入位置

      主DN上執行

      pg_current_xlog_insert_location

      獲取當前事務日志buffer的插入位置

      主DN上執行

      pg_stat_get_wal_receiver

      顯示當前DN上所有的WAL復制接收線程的統計信息。

      備DN上執行

      pg_is_in_recovery

      如果恢復仍然在進行中,則返回true

      備DN上執行

      pg_last_xlog_receive_location

      獲取最后接收事務日志的位置并通過流媒體復制同步到磁盤。

      備DN上執行

      pg_last_xlog_replay_location

      獲取最后一個事務日志在恢復時重放的位置。

      備DN上執行

      pg_last_xact_replay_timestamp

      獲取最后一個事務在恢復時重放的時間戳。

      備DN上執行

      pg_xlogfile_name(location text)

      將事務日志的位置字符串轉換為文件名。

      備DN上執行

      pg_xlogfile_name_offset(location text)

      將事務日志的位置字符串轉換為文件名并返回在文件中的字節偏移量。

      備DN上執行

      pg_xlog_location_diff(location text, ? location text)

      計算兩個事務日志位置之間在字節上的區別。

      備DN上執行

      pg_xlog_replay_completion

      顯示當前DN XLOG redo的進度信息

      主、備DN均可上執行

      pg_data_sync_from_dummy_completion

      顯示當前DN 數據頁從dummystandby傳輸的進度信息

      備DN上執行

      表2 系統函數表

      2.3 常用工具

      總結涉及數據同步的常用工具如表3所示。具體工具說明、參數定義請參考相應版本的產品文檔手冊中的定義。

      分類

      名稱

      用途

      使用范圍

      工具類

      cm_ctl

      操作、檢查數據庫集群的狀態。

      任何節點上均可執行

      gs_ctl

      操作、檢查管理節點的數據庫實例狀態。

      主、備DN上均可執行

      pg_xlogdump

      解析XLOG文件內容

      主、備DN上均可執行

      pg_controldata

      顯示control file的所有信息

      主、備DN上均可執行

      表3 常用工具表

      3 應用場景

      3.1 查看DN實例Redo進度

      當DN實例crash發生時,我們可以通過回放XLOG日志中記錄的數據變化還原crash前的操作。這個就是所謂的redo/recovery過程。如果需要redo的XLOG比較多,或者遇到某種特殊日志類型,對DN實例進行啟動,啟動過程時間就會有些長。

      DN實例啟動過程中,如果期望查看XLOG redo的進度。最方便的是使用gs_ctl query工具對指定DN實例路徑進行狀態查詢,結果中可以顯示xlog redo的進度,如圖2所示。此外,在DN實例可以接受gsql連接時(啟動到最小恢復點之前是拒絕連接的),也可直接在當前DN上執行pg_xlog_replay_completion 函數來獲取XLOG redo進度信息。

      圖2 DN實例啟動時XLOG Redo進度查詢

      啟動Redo進度相關信息(Xlog replay info)包括:

      replay_start:Xlog Redo的起始LSN 。DN實例啟動XLOG redo過程時,記錄replay_start。

      replay_current:Xlog Redo的當前replay的LSN。

      replay_end:DN本地接收到的最大XLOG lsn。

      replay_percent:Xlog Redo的當前完成的百分比。(replay_current - replay_start)*100 / (replay_end - replay_start)的計算值。

      依據replay_current的變化,可以看到XLOG redo的推進。

      依據replay_percent和啟動開始時間,可以推測DN實例啟動到正常狀態的所需時間。

      3.2 查看備機Failover進度

      當主機發生故障時,我們需要將備機failover成主機,此時備機需要連接從備同步XLOG和數據頁文件。如果需要同步的XLOG比較多,或者遇到某種特殊日志類型,或者數據文件比較多時,對備DN實例進行failover,過程時間就會有些長。

      備機failover升主過程中,如果期望查看XLOG redo和數據頁文件同步的進度。最方便的是使用gs_ctl query工具對指定DN實例路徑進行狀態查詢,結果中可以顯示xlog redo的進度和從備數據同步的進度,如圖3所示。此外,在DN實例可以接受gsql連接時,也可直接在當前DN上執行pg_data_sync_from_dummy_completion 函數來獲取從備數據文件同步的進度信息。

      圖3 備機Failover進度查詢

      Failover Redo進度相關信息(Xlog replay info),字段含義同Start Redo,區別在于,備DN在處理failover請求連接從備時候獲取最新的replay lsn更新了replay_start。

      Failover數據頁文件進度相關信息(Data sync from dummy)包括:

      start_index:數據頁文件同步的起始編號。

      current_index:數據頁文件同步的當前編號。

      total_index:數據頁文件同步的最大編號。

      sync_percent:數據頁文件當前完成的百分比。(current_index - start_index) *100/ (total_index - start_index + 1) 的計算值。

      依據current_index的變化,可以看到數據頁同步的推進。

      依據sync_percent和failover開始時間,可以推測DN實例failover到正常狀態的所需時間。

      3.3 查看備機Catchup進度

      當備機重新啟動的時候,會連接主機做數據頁追趕(catchup)。如果需要傳輸的數據頁比較多,或者因為業務造成的鎖沖突,catchup 時間就會比較長,備DN長時間不能成為Normal狀態。

      如果期望查看數據頁catchup的進度,可以在CN上執行select * from pgxc_get_senders_catchup_time()可進行當前活躍的主備發送線程的追趕信息顯示,如圖4所示。

      圖4 集群上catchup進度查詢

      也可以在相應的主DN上執行select * from pg_get_senders_catchup_time可進行當前活躍的主備發送線程的追趕信息顯示。完成后,看到的是剛結束的catchup過程信息,如圖5所示。

      圖5 主DN上catchup進度查詢

      備機Catchup進度相關信息包括:

      catchup_type:"Incremental"或者"Full"。catchup方式為全量還是增量。

      catchup_bcm_filename:當前主機正在處理的一個BCM文件名稱。

      catchup_bcm_finished:catchup已操作完成的BCM文件數量。

      catchup_bcm_total:catchup總共需要操作的BCM文件數量。

      catchup_percent:catchup已經操作完成的百分。catchup_bcm_finished*100 / catchup_bcm_total 的計算值。

      catchup_remaining_time:依據已完成的進度,預估剩余完成時間。

      依據catchup_bcm_filename和catchup_bcm_finished的變化,可以看到數據頁追趕的推進。

      依據catchup_percent和catchup_remaining_time,可以推測備DN實例追趕到正常狀態的所需時間。

      3.4 查看DN實例XLOG空間使用狀況

      隨著數據庫的不斷運行,產生的日志文件越來越多,如果因為節點故障或其它原因有可能造成日志文件不斷積累而充爆磁盤。為了解此使用信息,最方便的是使用gs_ctl query工具對指定DN實例路徑進行狀態查詢,結果中可以顯示該實例的XLOG空間使用信息,截圖示例請參見上面其它場景。此外,還提供系統函數 pgxc_stat_xlog_space、pg_stat_xlog_space 對數據庫集群或單個實例進行查詢,例如使用pgxc_stat_xlog_space可以獲取到整個集群的CN、主DN的XLOG空間使用信息,如圖6所示。

      圖6 Xlog空間使用查詢

      XLOG空間使用信息(Xlog space info)包括:

      xlog_files:pg_xlog目錄下,去除backup、archive_status等子目錄,所有識別為xlog文件的數目;

      xlog_size:pg_xlog目錄下,去除backup、archive_status等子目錄,所有識別為xlog文件的大小之和,以MB單位顯示;

      other_size:pg_xlog目錄下backup、archive_status等子目錄文件的大小之和,以MB單位顯示。

      Gauss AP 數據倉庫服務 GaussDB(DWS) EI企業智能

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:表格中取前幾位怎么設置(如何在表格中取前幾位數)
      下一篇:全屋定制家居生產設備,定制家居工廠的秘密武器
      相關文章
      亚洲av无码专区国产乱码在线观看 | 亚洲日韩中文字幕日韩在线| 亚洲黄色免费网址| 亚洲伊人久久大香线蕉综合图片| 极品色天使在线婷婷天堂亚洲| 亚洲日韩国产一区二区三区在线 | 91亚洲自偷在线观看国产馆| 亚洲国产精品久久久久婷婷软件 | 亚洲丶国产丶欧美一区二区三区| 亚洲综合成人婷婷五月网址| 丁香婷婷亚洲六月综合色| 久久亚洲精品专区蓝色区| 亚洲中文字幕无码久久2020| 狠狠色伊人亚洲综合网站色| 亚洲看片无码在线视频| 亚洲 日韩 色 图网站| 亚洲中文字幕乱码一区| 亚洲国产精品精华液| 亚洲AV女人18毛片水真多| 丰满亚洲大尺度无码无码专线 | 亚洲AV无码专区在线厂| 亚洲高清无码在线观看| 亚洲成a人在线看天堂无码| 亚洲成av人片一区二区三区 | 亚洲视频一区在线| 亚洲精品中文字幕无码蜜桃| 亚洲av无码一区二区三区不卡| 亚洲AV乱码一区二区三区林ゆな| 亚洲av无码国产精品色午夜字幕 | 亚洲av日韩综合一区久热| 亚洲日韩一区二区三区| 亚洲精品无码中文久久字幕| 亚洲人色大成年网站在线观看| 亚洲一卡2卡3卡4卡乱码 在线 | 亚洲AV无码久久寂寞少妇| 国产亚洲3p无码一区二区| 亚洲国产av无码精品| 亚洲av无码不卡私人影院| 亚洲高清免费视频| 亚洲性日韩精品一区二区三区| 亚洲国产成人精品无码区二本|