Postgresql
插入和更新觸發器不會在復製表上觸發
wal_level = logical
我在我的 postgresql.conf 中的兩台伺服器上創建了一個發布和一個訂閱。複製執行正常。我的問題是跟踪複製表中的更改,所以我ve created a function and a trigger on
INSERTand
UPDATE`。但是,當在我的複製表中進行更改時,我創建的觸發器不會觸發。我在這裡的另一個問題中發現了類似的問題和解決方案,但是當我這樣做時:
ALTER TABLE <table_name> ENABLE ALWAYS TRIGGER <trigger_name>;
我的複製過程停止工作,我
pg_replication_slots.active = f
在我的發布伺服器中看到。我想避免使用 pgAudit、Kafka 和其他類似的解決方案,並儘可能堅持使用 PostgreSQL 工具,因為我是新手,我懷疑我一次可以處理太多新工具。
如果有幫助的話,我可以為您提供兩台伺服器上發出的所有命令。謝謝!
在我的日誌文件中,我看到應該儲存更改的關係不存在:
relation "mtable_history" does not exist at character 13
字元 13 是查詢中的一個位置:
INSERT INTO mtable_history VALUES ...
然而,它確實存在於
\dt
問題是出於安全原因,
search_path
在複製重放期間將 設置為空。因此,您必須使用觸發器函式中的模式來限定對象名稱,例如public.mtable_history
.