pg_recvlogical — 控制 PostgreSQL 邏輯解碼流
pg_recvlogical
[選項
...]
pg_recvlogical
控制邏輯解碼複製槽,並從這些複製槽流式傳輸資料。
它建立複製模式連線,因此它受到與 pg_receivewal 相同的限制,以及邏輯複製的限制(請參閱第 47 章)。
pg_recvlogical
沒有相當於邏輯解碼 SQL 介面的 peek 和 get 模式。 它會在其接收資料時和正常退出時,以 lazy 的方式傳送資料的回放確認。 若要檢查插槽上未處理的資料而不消耗它,請使用 pg_logical_slot_peek_changes
。
在沒有發生重大錯誤的情況下,pg_recvlogical 將會持續執行,直到被 SIGINT (Control+C) 或 SIGTERM 訊號終止。
必須指定以下選項中的至少一個才能選擇動作
--create-slot
使用 --plugin
指定的輸出外掛程式,為 --dbname
指定的資料庫建立一個名稱由 --slot
指定的新邏輯複製槽。
可以使用 --create-slot
指定 --two-phase
,以啟用準備好的交易的解碼。
--drop-slot
刪除名稱由 --slot
指定的複製槽,然後退出。
--start
開始從 --slot
指定的邏輯複製槽串流傳輸變更,持續到訊號終止。 如果伺服器端的變更流因伺服器關機或斷線而結束,除非指定了 --no-loop
,否則會在迴圈中重試。
流格式由建立插槽時指定的輸出外掛程式決定。
連線必須連線到用於建立插槽的相同資料庫。
可以一起指定 --create-slot
和 --start
。--drop-slot
不能與另一個動作組合使用。
以下命令列選項控制輸出的位置和格式以及其他複製行為
-E lsn
--endpos=lsn
在 --start
模式下,當接收達到指定的 LSN 時,自動停止複製並以正常結束狀態 0 退出。如果在不是 --start
模式下指定,則會引發錯誤。
如果存在 LSN 與 lsn
完全相等的記錄,則將輸出該記錄。
--endpos
選項不知道交易邊界,並且可能會截斷交易中的部分輸出。任何部分輸出的交易將不會被消耗,並且在下次從插槽讀取時將再次重播。個別訊息永遠不會被截斷。
-f filename
--file=filename
將接收和解碼的交易資料寫入此檔案。 使用 -
作為 stdout。
-F interval_seconds
--fsync-interval=interval_seconds
指定 pg_recvlogical 應該多久發出 fsync()
呼叫,以確保輸出檔案安全地刷新到磁碟。
伺服器會不時請求用戶端執行刷新並向伺服器報告刷新位置。 此設定是對此的補充,以更頻繁地執行刷新。
指定間隔 0
會完全停用發出 fsync()
呼叫,同時仍向伺服器報告進度。 在這種情況下,如果發生崩潰,可能會遺失資料。
-I lsn
--startpos=lsn
在 --start
模式下,從給定的 LSN 開始複製。 有關此效果的詳細資訊,請參閱 第 47 章和第 53.4 節中的文件。 在其他模式下忽略。
--if-not-exists
當指定 --create-slot
並且已經存在具有指定名稱的插槽時,不要出錯。
-n
--no-loop
當與伺服器的連線遺失時,不要在迴圈中重試,只需退出即可。
-o name
[=value
]
--option=name
[=value
]
將選項 name
傳遞給輸出外掛程式,如果指定了選項值 value
。 存在哪些選項及其影響取決於使用的輸出外掛程式。
-P plugin
--plugin=plugin
建立槽時,使用指定的邏輯解碼輸出外掛程式。請參閱第 47 章。如果槽已存在,此選項無效。
-s interval_seconds
--status-interval=interval_seconds
此選項與pg_receivewal中同名選項的效果相同。請參閱該處的描述。
-S slot_name
--slot=slot_name
在 --start
模式中,使用名為 slot_name
的現有邏輯複寫槽。在 --create-slot
模式中,建立具有此名稱的槽。在 --drop-slot
模式中,刪除具有此名稱的槽。
-t
--two-phase
啟用預先處理交易的解碼。此選項只能與 --create-slot
一起指定。
-v
--verbose
啟用詳細模式。
以下命令列選項控制資料庫連線參數。
-d dbname
--dbname=dbname
要連線的資料庫。請參閱操作說明以了解詳細資訊。dbname
可以是連線字串。如果是這樣,連線字串參數將覆蓋任何衝突的命令列選項。預設值為使用者名稱。
-h hostname-or-ip
--host=hostname-or-ip
指定伺服器正在運行的電腦的主機名稱。如果值以斜線開頭,則將其用作 Unix 網域套接字的目錄。預設值取自 PGHOST
環境變數(如果已設定),否則嘗試 Unix 網域套接字連線。
-p port
--port=port
指定伺服器正在偵聽連線的 TCP 埠或本機 Unix 網域套接字檔案副檔名。預設值為 PGPORT
環境變數(如果已設定),或編譯時的預設值。
-U user
--username=user
要連線的使用者名稱。預設為目前的作業系統使用者名稱。
-w
--no-password
絕不發出密碼提示。如果伺服器需要密碼驗證,並且沒有其他方式(例如 .pgpass
檔案)提供密碼,則連線嘗試將失敗。此選項在批次作業和沒有使用者輸入密碼的腳本中很有用。
-W
--password
強制 pg_recvlogical 在連線到資料庫之前提示輸入密碼。
此選項並非必要,因為如果伺服器要求密碼驗證,pg_recvlogical 將自動提示輸入密碼。但是,pg_recvlogical 將浪費一次連線嘗試來發現伺服器需要密碼。在某些情況下,值得鍵入 -W
以避免額外的連線嘗試。
以下為其他可用選項
-V
--version
印出 pg_recvlogical 版本並結束。
-?
--help
顯示有關 pg_recvlogical 命令列引數的說明,然後結束。
當 pg_recvlogical 因 SIGINT 或 SIGTERM 訊號而終止時,它將以狀態 0 結束。(這是結束它的正常方式。因此,這不是錯誤。)對於嚴重錯誤或其他訊號,結束狀態將為非零值。
與大多數其他 PostgreSQL 實用程式一樣,此實用程式使用 libpq 支援的環境變數(請參閱第 32.15 節)。
環境變數 PG_COLOR
指定是否在診斷訊息中使用顏色。可能的值為 always
、auto
和 never
。
如果來源叢集上已啟用群組權限,則 pg_recvlogical 將保留接收到的 WAL 檔案的群組權限。
有關範例,請參閱第 47.1 節。
如果您在文件中發現任何不正確之處、與您使用特定功能的經驗不符或需要進一步說明的地方,請使用此表單來報告文件問題。