91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編寫PostgreSQL邏輯解碼插件

發布時間:2021-11-15 16:40:54 來源:億速云 閱讀:155 作者:iii 欄目:大數據

這篇文章主要講解了“如何編寫PostgreSQL邏輯解碼插件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何編寫PostgreSQL邏輯解碼插件”吧!

1、以邏輯復制插件為例,先看一下它是怎么運行的:

創建邏輯槽,默認使用test_decoding插件:

pg_recvlogical --create-slot -S test_slot -d flying

可以根據需要指定其他解碼插件,參數-P, --plugin=PLUGIN,更多信息 pg_recvlogical --help

查看一下

flying=# select * from pg_replication_slots;
 slot_name |    plugin     | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn
-----------+---------------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
 test_slot | test_decoding | logical   |  12635 | flying   | f         | f      |            |      |          926 | 0/F05CA448  | 0/F05CA480

開始邏輯復制,這里直接打印到標準輸出

pg_recvlogical --start -S test_slot -d flying -f -

 給表a(col1 int)插入一條數據:insert into a values(100); 接收端開始輸出:

quanzl-mac:bin quanzl$ ./pg_recvlogical --start -S test_slot -d flying -f -
BEGIN 926
table public.a: INSERT: col1[integer]:100
COMMIT 926

這個插件更多是演示功能,有人解析它的結果用在生產環境,也是沒問題的。新版本還有一個可以參考的插件pgoutput,源代碼在src/backend/replication/pgoutput。

2、閱讀理解代碼,我們可以知道各部分怎樣實現

(1)、初始化時設置回調函數 _PG_output_plugin_init

結合文檔,理解結構體OutputPluginCallbacks各成員分別代表什么,即使沒有注釋也很容易理解。

(2)、復制啟動參數

pg_recvlogical允許通過 -o 傳遞參數給插件,從startup_cb可以學習到如何定義我們自己需要的選項。

(3)、各動作解碼,四種:begin、change、truncate、commit

尤其change動作,如何區分 INSERT/UPDATE/DELETE,包括如何正確引用對象名,識別空和TOAST,識別已刪除字段等等。

(4)、還有一些test_decoding沒用到的功能,比如如何找到復制鍵,默認為主鍵,也可以通過SQL命令設置:ALTER TABLE ...  REPLICA IDENTITY ...

這種怎么辦呢?打開與此有關的頭文件,include/replication 下,根據注釋和名字可以發現它就是 RelationGetReplicaIndex函數。

感謝各位的閱讀,以上就是“如何編寫PostgreSQL邏輯解碼插件”的內容了,經過本文的學習后,相信大家對如何編寫PostgreSQL邏輯解碼插件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新泰市| 永安市| 铁岭市| 通化县| 泸定县| 宁阳县| 长泰县| 内乡县| 庆元县| 庆阳市| 始兴县| 宿迁市| 青河县| 寿宁县| 永清县| 兴文县| 泰顺县| 得荣县| 法库县| 安多县| 宝山区| 沂水县| 汉川市| 延安市| 恭城| 塘沽区| 长泰县| 巴青县| 芷江| 德江县| 贞丰县| 资讯| 盐池县| 平罗县| 涞水县| 怀柔区| 台东市| 新竹县| 腾冲县| 乌兰察布市| 碌曲县|