pgsql binlog監(jiān)聽功能點解析
引言
監(jiān)聽mysql binlog 大家都知道canal,但是如果是pglog呢,先百度
也就這個靠點譜,文章 沒有我想要的demo
去官網(wǎng)看看debezium.io/
其中這個 網(wǎng)址給了demo 但是不能直接用于生產(chǎn)
功能點
首先 pglog binlog監(jiān)聽需要滿足哪些功能點
機器宕機,能支持斷點續(xù)接
進行磁盤持久化
如果監(jiān)聽的表 長時間沒有數(shù)據(jù)變動,delay_size 會變大
//設(shè)置心跳時間,就算沒有數(shù)據(jù) 也會保持心跳 props.setProperty("heartbeat.interval.ms", "20000");
for (ChangeEvent<String, String> r : records) { try { if (log.isDebugEnabled()) { log.debug("{}\n{}", r.key(), r.value()); } if (r.value() != null && r.value().startsWith("{"ts_ms")) { continue; } xxx 具體數(shù)據(jù)處理 } catch (Exception e) { log.error("PGLog-binlog param:[{}]", r, e); } }
心跳這個是 當時上生產(chǎn)的時候,突然發(fā)現(xiàn)沒有數(shù)據(jù)變更的時候 ,有報警,說delay了。。。這頓害怕
大概意思
數(shù)據(jù)庫中有許多更新正在被跟蹤,但只有極少數(shù)更新與連接器正在為其捕獲更改的表和模式相關(guān)。這種情況可以通過周期性的心跳事件輕松解決。設(shè)置heartbeat.interval.ms連接器配置屬性。
由于WAL由所有數(shù)據(jù)庫共享,因此使用的WAL數(shù)量趨于增長,直到Debezium為其捕獲更改的數(shù)據(jù)庫觸發(fā)事件。為了克服這一點,有必要:使用heartbeat.interval.ms連接器配置屬性啟用周期性心跳記錄生成。定期從Debezium正在捕捉變化的數(shù)據(jù)庫中發(fā)出更改事件。
其中
if (r.value() != null && r.value().startsWith("{"ts_ms")) { continue; }
這是因為 如果沒有數(shù)據(jù)來的話,會是ts_ms 開頭的,代表,沒有新數(shù)據(jù)
每次binlog傳的size 太多,導致服務(wù)器處理不過來
props.setProperty("max.batch.size", "200");
對多個表的監(jiān)聽,應(yīng)該只有一個流進行監(jiān)聽
props.setProperty("table.include.list", schs.stream().map(BinlogConfig::getSch).map(a -> tables.stream().map(b -> a + "." + b).map(String::valueOf).collect(Collectors.joining(","))).map(String::valueOf).collect(Collectors.joining(",")));
希望磁盤持久化offset,保持數(shù)據(jù)的正確性
props.setProperty("snapshot.mode", "never");
小工具
查詢數(shù)據(jù)庫 offset推遲多少
select pg_replication_slots.*, pg_current_wal_lsn(), pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_insert_lsn(), restart_lsn)) as delay_size from pg_replication_slots;
這個工具在生產(chǎn)已經(jīng)實踐穩(wěn)定,可以直接使用,有問題 可以評論
以上就是pgsql binlog監(jiān)聽功能點解析的詳細內(nèi)容,更多關(guān)于pgsql binlog監(jiān)聽的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Navicat?Premium?12.0.29安裝與激活超詳細教程
這篇文章主要介紹了Navicat?Premium?12.0.29安裝與激活超詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12開源數(shù)據(jù)庫設(shè)計神器chiner的安裝及初體驗介紹
最近在造輪子,從?0?到?1?的那種,就差前臺的界面了,大家可以耐心耐心耐心期待一下。其中需要設(shè)計一些數(shù)據(jù)庫表,可以通過?Navicat?這種圖形化管理工具直接開搞,也可以通過一些數(shù)據(jù)庫設(shè)計工具來搞,比如說?PowerDesigner,更專業(yè)一點2022-02-02GaussDB數(shù)據(jù)庫使用COPY命令導入導出數(shù)據(jù)的場景分析
使用COPY命令可以方便地導入數(shù)據(jù)到GaussDB,GaussDB還提供了其他數(shù)據(jù)導入工具和功能,如使用GDS導入數(shù)據(jù)、使用INSERT多行插入、使用gsql元命令導入數(shù)據(jù)、ETL工具集成等,以滿足不同場景下的數(shù)據(jù)導入需求,對GaussDB COPY命令相關(guān)知識感興趣的朋友一起看看吧2024-01-01