這篇文章主要講解了“如何編寫PostgreSQL邏輯解碼插件”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何編寫PostgreSQL邏輯解碼插件”吧!
創(chuàng)新互聯(lián)建站是一家專業(yè)提供昌邑企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為昌邑眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
1、以邏輯復(fù)制插件為例,先看一下它是怎么運(yùn)行的:
創(chuàng)建邏輯槽,默認(rèn)使用test_decoding插件:
pg_recvlogical --create-slot -S test_slot -d flying
可以根據(jù)需要指定其他解碼插件,參數(shù)-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
開始邏輯復(fù)制,這里直接打印到標(biāo)準(zhǔn)輸出
pg_recvlogical --start -S test_slot -d flying -f -
給表a(col1 int)插入一條數(shù)據(jù):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
這個(gè)插件更多是演示功能,有人解析它的結(jié)果用在生產(chǎn)環(huán)境,也是沒問題的。新版本還有一個(gè)可以參考的插件pgoutput,源代碼在src/backend/replication/pgoutput。
2、閱讀理解代碼,我們可以知道各部分怎樣實(shí)現(xiàn)
(1)、初始化時(shí)設(shè)置回調(diào)函數(shù) _PG_output_plugin_init
結(jié)合文檔,理解結(jié)構(gòu)體OutputPluginCallbacks各成員分別代表什么,即使沒有注釋也很容易理解。
(2)、復(fù)制啟動(dòng)參數(shù)
pg_recvlogical允許通過 -o 傳遞參數(shù)給插件,從startup_cb可以學(xué)習(xí)到如何定義我們自己需要的選項(xiàng)。
(3)、各動(dòng)作解碼,四種:begin、change、truncate、commit
尤其change動(dòng)作,如何區(qū)分 INSERT/UPDATE/DELETE,包括如何正確引用對(duì)象名,識(shí)別空和TOAST,識(shí)別已刪除字段等等。
(4)、還有一些test_decoding沒用到的功能,比如如何找到復(fù)制鍵,默認(rèn)為主鍵,也可以通過SQL命令設(shè)置:ALTER TABLE ... REPLICA IDENTITY ...
這種怎么辦呢?打開與此有關(guān)的頭文件,include/replication 下,根據(jù)注釋和名字可以發(fā)現(xiàn)它就是 RelationGetReplicaIndex函數(shù)。
感謝各位的閱讀,以上就是“如何編寫PostgreSQL邏輯解碼插件”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)如何編寫PostgreSQL邏輯解碼插件這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
新聞名稱:如何編寫PostgreSQL邏輯解碼插件
當(dāng)前網(wǎng)址:http://bm7419.com/article8/pssiop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信公眾號(hào)、網(wǎng)站制作、商城網(wǎng)站、域名注冊(cè)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)