心跳丟失數量(HeartBeatMissed):主機會不斷地向備機發送心跳,以確認仍然可以和對方通信。這個值表明了有多少心跳信號沒有發送成功或者沒有接收成功。
日誌 LSN 差異(LogGapRunAvg):這個值表示一段時間以內,主機和備機日誌差異的平均值。如果這個值一直很大,可能表明網絡狀況比較差,或者備機的性能和主機差異太大,以至於日誌不能及時的從主機傳到備機。
連接狀態(ConnectStatus):包括三種 CONNECTED, DISCONNECTED, CONGESTED。CONNECTED 表示連接狀況良好;DISCONNECTED 表示主機和備機已經斷開連接;CONGESTED 表示當前的網絡狀況不太好,日誌或者消息的發送遇到擁塞。
連接時間(ConnectTime):如果主機和備機是連接的,表示連接建立起來的時間;如果連接時斷開的,表示的是連接斷開的時間;如果發生了網絡擁塞,則表示上次網絡擁塞的時間。
超時時間(Timeout):如果 HADR 在這段時間內沒有收到來自同伴的任何消息,它就會斷開網絡連接。需要注意的是,這個時間並一定是網絡出現錯誤以後的等待時間。HADR 可以發現網絡上的大部分錯誤,當這些錯誤發生時,HADR 會立刻斷開和對方的連接,而並不會等待。另外,這項配置還有另外兩個作用:
1. 心跳的時間間隔為 HADR_TIMEOUT/4 和 30 秒鐘兩者之間的較小的那個值
2. 如果首先在主機上執行啟動 HADR 的操作,如果主機沒有在 HADR_TIMEOUT 時間以內沒有收到備機的連接,主機上的數據庫就會停掉,以防止兩台主數據庫的存在而導致腦裂。
同伴窗口(PeerWindow):相對應 DB2 配置文件中的 HADR_PEER_WINDOW,該參數只對 SYNC 和 NEARSYNC 兩種同步模式有效。如果該參數不為零,當主機和備機斷開連接時,在 HADR_PEER_WINDOW 這段時間以內,數據庫處於 DISCONNECTED PEER 狀態。主機在這段時間內不能提交任何事務。所以,這段時間內,如果備機做了接管,備機不會丟失任何事務。這個參數通對於在 TSA 對 HADR 自動做接管的環境中特別重要,因為 TSA 執行”takeover hard on db dbname by force peer window only”這個命令進行接管。
同伴窗口結束時間(PeerWindowEnd):顯示了同伴窗口的結束時間。過了這個時間以後,HADR 將處於 DISCONNECTED 狀態。
本地主機名(LocalHost):本地 HADR 所在的主機名或者 IP 地址。
本地服務名(LocalService):本地 HADR 所使用的服務名稱或者端口號。
遠程主機名(RemoteHost):對端 HADR 所在機器的的主機名或者 IP 地址。
遠程服務名(RemoteService):對端 HADR 使用的服務名稱或者端口號。
遠程實例(RemoteInstance):對端 HADR 數據庫所在的實例的名字。
主機日誌文件(PrimaryFile):主機目前正在寫的日誌文件。
主機日誌頁號(PrimaryPg):主機目前正在寫的日誌文件中的頁號。
主機日誌序號(PrimaryLSN):主機正在處理的日誌記錄的序列號。
備機日誌文件(StandByFile):備機目前正在寫的日誌文件。
備機日誌頁號(StandByPg):備機目前正在寫的日誌文件中的頁號。
備機日誌序號(StandByLSN):備機正在處理的日誌記錄的序列號。
對於很多 DBA 來說,知道主機和備機的同步情況很重要。從主機日誌序號和備機日誌序號裡面,我們可以判斷出來主機還有多少日誌沒有傳輸到備機。例如以下圖 7 的 db2pd 的結果:
我們可以看出來主機和備機的日誌相差 0x0000000000FA179C-0x0000000000FA16E6 = 0xB6。也就是十進制的 182 個字節。

db2trc 命令是 DB2 提供的跟蹤工具。該跟蹤工具記錄有關操作的信息並將此信息格式化為可讀格式。需要注意的是,運行跟蹤時會增加開銷,所以啟用跟蹤工具可能會影響系統性能。
db2trace 可以跟蹤每個函數以及該函數的執行時間。利用這一性質,我們可以計算出來每次寫日誌花費的時間以及 HADR 帶來的開銷。
首先,我們需要找到主機上的寫日誌的 EDU(Engine Dispatchable Unit),即 db2loggw 的線程號(或進程號)。對於 v91 及以前的版本,我們使用 db2procs,如圖 8:
對於 v95 及以後版本,db2 基於線程模型,使用 db2pd – edus,如圖 9:
找到 HADR 的 EDU 以後,我們可以通過 db2trc 去跟蹤 loggw 這個進程(或者線程)。例如對於圖 8,使用命令:
|
db2trc on -t -p 32567 -f trace.dump
|
等主機上運行過了需要寫日誌的交易(例如插入,刪除,修改)以後,將 db2trc 關掉,然後格式化 db2trace 的 dump 文件:
|
db2trc off; db2trc flow -t trace.dump trace.flow |
打開文件 trace.flow,以圖 10 為例。
注意標記紅線和紅色框裡面的內容,計算 hadr 的方法如下:
1. 找到 sqlpgwlp 函數,
2. 找到這個函數內的 sqloWaitEDUWaitPost
3. 計算 sqlpgwlp 的執行時間。T1 = 0.196988000 – 0.192810000 = 0.004178000
4. 計算 sqloWaitEDUWaitPost 的執行時間。T2 = 0.196951000 – 0.196946000 = 0.000005000
T1 是完成這次寫日誌的總時間,T2 就是這次寫日誌時,HADR 帶來的開銷
如果我們跟蹤了多次寫日誌的操作,就跟得到多個上面的片段。可以根據所有的片段計算平均值,從而得到更精確地開銷比例。

以下文章點擊率最高
Loading…



