W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
pg_recvlogical — 控制 PostgreSQL 邏輯解碼流
pg_recvlogical
[option
...]
pg_recvlogical
控制邏輯解碼復(fù)制槽以及來自這種復(fù)制槽的流數(shù)據(jù)。
它會創(chuàng)建一個復(fù)制模式的連接,因此它受到和pg_receivewal 相同的約束,還有邏輯復(fù)制(第 48 章)的約束。
pg_recvlogical
與邏輯解碼SQL接口的peek和get模式?jīng)]有等效性。它咋接收到數(shù)據(jù)以及干凈地退出時,它會惰性地發(fā)送數(shù)據(jù)的確認(rèn)。為了檢查一個槽上還未消費的待處理數(shù)據(jù),可以使用pg_logical_slot_peek_changes
。
必須至少要指定下列選項之一來選擇一個動作:
--create-slot
為--dbname
指定的數(shù)據(jù)庫用--slot
指定的名稱創(chuàng)建一個新的邏輯復(fù)制槽,使用 --plugin
指定的輸出插件。
--drop-slot
刪除名稱由--slot
指定的復(fù)制槽,然后退出。
--start
從--slot
指定的邏輯復(fù)制槽開始進(jìn)行流式傳送更改,一直繼續(xù) 到被一個信號終止。如果服務(wù)器端關(guān)機(jī)或者斷開連接導(dǎo)致更改流結(jié)束,會進(jìn)入一個 循環(huán)一直重試,通過指定--no-loop
可以防止這種情況下進(jìn)入 循環(huán)重試。
流格式由槽創(chuàng)建時指定的輸出插件決定。
連接必須是連接到用于創(chuàng)建該槽的同一個數(shù)據(jù)庫上。
--create-slot
和--start
可以被一起指定。 --drop-slot
不能和另一個動作組合在一起。
下面的命令行選項控制輸出的位置和格式以及其他復(fù)制行為:
-E lsn
--endpos=lsn
在--start
模式中,當(dāng)接收過程到達(dá)指定的LSN時會自動地停止復(fù)制并且以正常的退出狀態(tài)0退出。如果不處于--start
模式時指定這個選項,則會發(fā)生錯誤。
如果有一個記錄的LSN正好等于lsn
,則該記錄將被輸出。
--endpos
不會察覺到事務(wù)邊界并且可能會在一個事務(wù)中間截斷輸出。任何部分輸出的事務(wù)都將不會被消費,并且在下一次從該槽中讀取時將會重放該事務(wù)。單個的消息不會被截斷。
-f filename
--file=filename
把接收到并且解碼好的事務(wù)數(shù)據(jù)寫入到一個文件。使用-
可以寫到stdout。
-F interval_seconds
--fsync-interval=interval_seconds
指定pg_recvlogical發(fā)出 fsync()
調(diào)用確保輸出文件被安全地刷到磁盤的頻度。
服務(wù)器將會偶爾要求客戶端執(zhí)行一次刷寫并且把刷寫位置報告給服務(wù)器。 這個設(shè)置可以在此之外更加頻繁地執(zhí)行刷寫。
指定間隔為0
會完全禁止發(fā)出fsync()
調(diào)用,但是仍會報告進(jìn)度給服務(wù)器。在這種情況下,發(fā)生崩潰會導(dǎo)致數(shù)據(jù)丟失。
-I lsn
--startpos=lsn
在--start
模式中,從給定的 LSN 開始復(fù)制。這個參數(shù)的 效果請見第 48 章和 第 52.4 節(jié)中的文檔。在其他模式中會忽略這個參數(shù)。
--if-not-exists
當(dāng)指定--create-slot
并且具有指定名稱 的槽已經(jīng)存在時不要拋出錯誤。
-n
--no-loop
當(dāng)服務(wù)器連接丟失時,不要在循環(huán)中重試,直接退出。
-o name
[=value
]
--option=name
[=value
]
如果指定了輸出插件,把選項值value
傳遞給選項name
。存在哪些選項以及它們的效果 取決于使用的輸出插件。
-P plugin
--plugin=plugin
在創(chuàng)建一個槽時使用指定的邏輯解碼輸出插件。 見第 48 章。如果該槽已經(jīng)存在,這個選項沒有效果。
-s interval_seconds
--status-interval=interval_seconds
這個選項和pg_receivewal中的同名選項具有 相同的效果。請參考那里的描述。
-S slot_name
--slot=slot_name
在--start
模式中,使用名為slot_name
的已有邏輯復(fù)制槽。在--create-slot
模式中,使用這個名稱 創(chuàng)建該槽。在--drop-slot
模式中,刪除這個名稱指定的槽。
-v
--verbose
開啟詳細(xì)輸出模式。
下列命令行選項控制數(shù)據(jù)庫連接參數(shù)。
-d database
--dbname=database
要連接的數(shù)據(jù)庫。這個選項的詳細(xì)含義請見動作的描述。dbname
可以是連接字符串。 如果是這樣,連接字符串參數(shù)將覆蓋任何沖突的命令行選項。默認(rèn)為用戶名。
-h hostname-or-ip
--host=hostname-or-ip
指定服務(wù)器正在運行的機(jī)器的主機(jī)名。如果該值開始于一個斜線, 它被用作一個 Unix 域套接字的目錄。默認(rèn)是從 PGHOST
環(huán)境變量中取得(如果被設(shè)置), 否則將嘗試一次 Unix 域套接字連接。
-p port
--port=port
指定服務(wù)器正在監(jiān)聽連接的 TCP 端口或本地 Unix 域套接字文件擴(kuò)展名。 默認(rèn)是放在PGPORT
環(huán)境變量中(如果被設(shè)置), 否則使用編譯在程序中的默認(rèn)值。
-U user
--username=user
要作為哪個用戶連接。默認(rèn)是用當(dāng)前操作系統(tǒng)用戶名。
-w
--no-password
從不發(fā)出一個口令提示。如果服務(wù)器要求口令認(rèn)證并且沒有 其他方式提供口令(例如一個.pgpass
文件), 那么連接嘗試將失敗。這個選項對于批處理任務(wù)和腳本有用, 因為在其中沒有一個用戶來輸入口令。
-W
--password
強(qiáng)制pg_dump在連接到一個數(shù)據(jù)庫之前提示要求一個口令。
這個選項不是必須的,因為如果服務(wù)器要求口令認(rèn)證, pg_dump將自動提示要求一個口令。 但是,pg_dump將浪費一次連接嘗試 來發(fā)現(xiàn)服務(wù)器想要一個口令。在某些情況下,值得鍵入 -W
來避免額外的連接嘗試。
還有下列附加選項可用:
-V
--version
打印pg_recvlogical的版本并且退出。
-?
--help
顯示關(guān)于pg_recvlogical命令行參數(shù)的幫助,并且退出。
和大部分其他PostgreSQL工具相似,這個工具也使用libpq(見第 33.14 節(jié))支持的環(huán)境變量。
環(huán)境變量PG_COLOR
規(guī)定在診斷消息中是否使用顏色??赡艿闹禐?code class="literal">always、auto
、never
。
如果在源服務(wù)器上啟用了組權(quán)限,pg_recvlogical將會在接收到的WAL文件上保留組權(quán)限。
一個例子請見第 48.1 節(jié)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: