好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pgsql之pg_stat_replication的使用詳解

pgsql之pg_stat_replication的使用詳解

熱門標簽:移動外呼系統模擬題 廣州電銷機器人公司招聘 400電話申請客服 江蘇400電話辦理官方 天津開發區地圖標注app 地圖標注要花多少錢 電話機器人怎么換人工座席 濟南外呼網絡電話線路 電銷機器人能補救房產中介嗎

pg_stat_replication是一個視圖,主要用于監控一個基于流的設置,建議您 注意系統上稱作pg_stat_replication的視圖。(注:當前版本為pg 10.0,10.0以下版本,字段名會有差異)此視圖包含以下信息:

\d pg_stat_replication

每個字段代碼的含義:

pid 這代表負責流連接的wal_sender進程的進程ID。如果您在您的操作系統上檢查您進程表,您應該會找到一個帶有那個號碼的PostgreSQL進程。

usesysid 每個內部用戶都有一個獨一無二的編號。該系統的工作原理很像UNIX。 usesysid 是 (PostgreSQL) 用戶連接到系統的唯一標識符。

usename  (不是用戶名, 注意少了 r)它存儲與用戶相關的 usesysid 的名字。這是客戶端放入到連接字符串中的東西。

application_name這是同步復制的通常設置。它可以通過連接字符串傳遞到master。

client_addr它會告訴您流連接從何而來。它擁有客戶端的IP地址。

client_hostname除了客戶端的IP,您還可以這樣做,通過它的主機名來標識客戶端。您可以通過master上的postgresql.conf中的log_hostname啟用DNS反向查找。

client_port這是客戶端用來和WALsender進行通信使用的TPC端口號。 如果不本地UNIX套接字被使用了將顯示-1。

backend_start它告訴我們slave什么時間創建了流連接。

state此列告訴我們數據的連接狀態。如果事情按計劃進行,它應該包含流信息。

sent_lsn這代表發送到連接的最后的事務日志的位置。

write_lsn這是寫到standby系統磁盤上最后的事務日志位置。

flush_lsn這是被刷新到standby系統的最后位置。(這里注意寫和刷新之間的區別。寫并不意味著刷新 。)

replay_lsn這是slave上重放的最后的事務日志位置。

sync_priority這個字段是唯一和同步復制相關的。每次同步復制將會選擇一個優先權 —sync_priority—會告訴您選擇了那個優先權。

sync_state最后您會看到slave在哪個狀態。這個狀態可以是

async, sync, or potential。當有一個帶有較高優先權的同步slave時,PostgreSQL會把slave 標記為 potential。

在這個系統視圖中每個記錄只代表一個slave。因此,可以看到誰處于連接狀態,在做什么任務。pg_stat_replication也是檢查slave是否處于連接狀態的一個好方法。

上面說到pid代表負責流連接的wal_sender進程的進程ID,我們在機器上通過ps命令查看該進程的狀態:

ps -aux|grep 8225

在Linux上我們可以看到那個進程不僅有自己的作用 (在這種情況下, wal_sender),而且還帶有終端用戶的名字以及相關的網絡連接信息。在上圖中我們可以看到已經有人從192.168.47.127(對應pg_stat_replication的client_addr字段)通過51519(對應pg_stat_replication的client_port字段))端口連接到了master。

bonus:

上面我們提到replay_lsn是slave上重放的最后的事務日志位置。

pg_current_wal_lsn()函數的作用是獲取當前的wal log的寫位置。

pg_wal_lsn_diff()函數的作用是計算兩個wal日志之間的差距。

所以我們可以通過下面的方法獲取高可用架構下從庫的復制延遲情況:

 SELECT
   pg_wal_lsn_diff(A .c1, replay_lsn) /(1024 * 1024) AS slave_latency_MB
  FROM
   pg_stat_replication,
   pg_current_wal_lsn() AS A(c1)
  WHERE client_addr='%s' and application_name = '%s'
  ORDER BY
   slave_latency_MB
  LIMIT 1;

補充:PostgreSQL pg_stat_replication sync_state introduce

PostgreSQL 9.2引入同步復制后, pg_stat_replication的sync_state列有3種狀態.

sync

async

potential

分別代表同步standby, 異步standby, 可升級為同步的standby.

狀態來自以下函數 : pg_stat_get_wal_senders

[測試]

環境:

1個 primary, 3個 standby.

第一種配置 :

primary配置

postgresql.conf
synchronous_standby_names = 'test1,test2,test3'

standby1配置

primary_conninfo = 'application_name=test1 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'

standby2配置

primary_conninfo = 'application_name=test2 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'

standby3配置

primary_conninfo = 'application_name=test3 host=127.0.0.1 port=1999 user=postgres keepalives_idle=60'

primary查詢

digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication;
 pid | application_name | client_addr | sync_state 
------+------------------+-------------+------------
 6311 | test1   | 127.0.0.1 | sync
 6321 | test2   | 127.0.0.1 | potential
 6391 | test3   | 127.0.0.1 | potential
(3 rows)

如果sync節點掛掉, 按synchronous_standby_names的順序, 第一個potential節點會變成sync狀態.

pg_ctl stop -m fast -D /pgdata11999
digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication;
 pid | application_name | client_addr | sync_state 
------+------------------+-------------+------------
 6564 | test2   | 127.0.0.1 | sync
 6568 | test3   | 127.0.0.1 | potential
(2 rows)

當test1重新起來后又會變成sync狀態.

pg93@db-172-16-3-33-> pg_ctl start -D /pgdata11999
server starting
digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication;
 pid | application_name | client_addr | sync_state 
------+------------------+-------------+------------
 6564 | test2   | 127.0.0.1 | potential
 6605 | test1   | 127.0.0.1 | sync
 6568 | test3   | 127.0.0.1 | potential
(3 rows)

第二種配置 :

primary配置

synchronous_standby_names = 'test1,test2'

standby1配置不變

standby2配置不變

standby3配置不變

primary查詢

digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication;
 pid | application_name | client_addr | sync_state 
------+------------------+-------------+------------
 6470 | test1   | 127.0.0.1 | sync
 6472 | test3   | 127.0.0.1 | async
 6474 | test2   | 127.0.0.1 | potential
(3 rows)

test3變成異步了. 因為test3沒有配置在primary的synchronous_standby_names 中.

第三種配置 :

primary配置

synchronous_standby_names = 'test1'

standby1配置不變

standby2配置不變

standby3配置不變

primary查詢

digoal=# select pid,application_name,client_addr,sync_state from pg_stat_replication;
 pid | application_name | client_addr | sync_state 
------+------------------+-------------+------------
 6519 | test2   | 127.0.0.1 | async
 6521 | test3   | 127.0.0.1 | async
 6523 | test1   | 127.0.0.1 | sync
(3 rows)

test2,test3變成異步了. 因為test2,test3沒有配置在primary的synchronous_standby_names 中.

1. src/backend/replication/walsender.c

/*
 * Returns activity of walsenders, including pids and xlog locations sent to
 * standby servers.
 */
Datum
pg_stat_get_wal_senders(PG_FUNCTION_ARGS)
{
...略
   /*
    * More easily understood version of standby state. This is purely
    * informational, not different from priority.
    */
   if (sync_priority[i] == 0)
    values[7] = CStringGetTextDatum("async");
   else if (i == sync_standby)
    values[7] = CStringGetTextDatum("sync");
   else
    values[7] = CStringGetTextDatum("potential");
...略

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL 恢復誤刪數據的操作
  • 在postgreSQL中運行sql腳本和pg_restore命令方式
  • PostgreSQL物理備份恢復之 pg_rman的用法說明

標簽:濮陽 杭州 昭通 溫州 榆林 辛集 寶雞 海西

巨人網絡通訊聲明:本文標題《pgsql之pg_stat_replication的使用詳解》,本文關鍵詞  pgsql,之,stat,replication,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pgsql之pg_stat_replication的使用詳解》相關的同類信息!
  • 本頁收集關于pgsql之pg_stat_replication的使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 免费毛片在线| 国精产品一区一区三区有限公司 | 被强行插入| 在线一级片| 91精品成人免费国产片| 免费的短视频app大全下载安装| 人妻撅起屁股迎合挺进视频网站| 91这里只有精品久久| 动漫美女禁处受辱gif网站| 女性私密护理内部按摩视频| 日韩欧美国产一区二区三区| 伊人精品A片一区二区三区| 久久久久久精品免费播放潮水| 三级经典在线观看| 在公车上玩两个极品| 真人一对一免费视频| 看全色黄大色黄女片爽直播| 精品久久久一二三区| yin荡护士长H肉承欲欢| 色欲亚洲AV无码久久精品成人| 国产精品久久免费观看| 爽?好多水?快?深点无码| 古代高H猛烈乱肉交| 中国的女bbw| 美女露出尿口让男人桶| 午夜夫妻视频| 国产高清一区二区三区| 国产三级在线观看视频不卡| 蜜桃成熟时4| 中国女人丰满毛片ⅩXXXX| 女性赤裸身体秘?喂奶头| 日本19xxxxxxxx69| 92午夜免费福利757永久| 亚洲天堂网站在线| 他吃我下面把舌头伸进去| 英语老师的小兔子好软水好多视频| 精品97人妻无码中文永久在线| 97久久超碰国产精品电影在哪里观看| 边吃奶边摸叫床刺激A片| 自拍偷在线精品自拍偷99九色| a级日本乱理伦片免费入|