最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pgsql binlog監(jiān)聽功能點(diǎn)解析

 更新時(shí)間:2023年02月14日 10:50:25   作者:雨夜之寂  
這篇文章主要為大家介紹了pgsql binlog監(jiān)聽功能點(diǎn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

監(jiān)聽mysql binlog 大家都知道canal,但是如果是pglog呢,先百度

也就這個(gè)靠點(diǎn)譜,文章 沒有我想要的demo

去官網(wǎng)看看debezium.io/

其中這個(gè) 網(wǎng)址給了demo 但是不能直接用于生產(chǎn)

功能點(diǎn)

首先 pglog binlog監(jiān)聽需要滿足哪些功能點(diǎn)

機(jī)器宕機(jī),能支持?jǐn)帱c(diǎn)續(xù)接

進(jìn)行磁盤持久化

如果監(jiān)聽的表 長時(shí)間沒有數(shù)據(jù)變動(dòng),delay_size 會(huì)變大

//設(shè)置心跳時(shí)間,就算沒有數(shù)據(jù) 也會(huì)保持心跳
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);
    }
}

心跳這個(gè)是 當(dāng)時(shí)上生產(chǎn)的時(shí)候,突然發(fā)現(xiàn)沒有數(shù)據(jù)變更的時(shí)候 ,有報(bào)警,說delay了。。。這頓害怕

大概意思

數(shù)據(jù)庫中有許多更新正在被跟蹤,但只有極少數(shù)更新與連接器正在為其捕獲更改的表和模式相關(guān)。這種情況可以通過周期性的心跳事件輕松解決。設(shè)置heartbeat.interval.ms連接器配置屬性。

由于WAL由所有數(shù)據(jù)庫共享,因此使用的WAL數(shù)量趨于增長,直到Debezium為其捕獲更改的數(shù)據(jù)庫觸發(fā)事件。為了克服這一點(diǎn),有必要:使用heartbeat.interval.ms連接器配置屬性啟用周期性心跳記錄生成。定期從Debezium正在捕捉變化的數(shù)據(jù)庫中發(fā)出更改事件。

其中

if (r.value() != null && r.value().startsWith("{"ts_ms")) {
    continue;
}

這是因?yàn)?如果沒有數(shù)據(jù)來的話,會(huì)是ts_ms 開頭的,代表,沒有新數(shù)據(jù)

每次binlog傳的size 太多,導(dǎo)致服務(wù)器處理不過來

props.setProperty("max.batch.size", "200");

對(duì)多個(gè)表的監(jiān)聽,應(yīng)該只有一個(gè)流進(jìn)行監(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,保持?jǐn)?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;

這個(gè)工具在生產(chǎn)已經(jīng)實(shí)踐穩(wěn)定,可以直接使用,有問題 可以評(píng)論

代碼 github.com/a25017012/y…

以上就是pgsql binlog監(jiān)聽功能點(diǎn)解析的詳細(xì)內(nèi)容,更多關(guān)于pgsql binlog監(jiān)聽的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

军事| 塔城市| 依兰县| 武乡县| 山东省| 深州市| 太和县| 洞头县| 海林市| 南靖县| 西城区| 迁西县| 泗阳县| 盐池县| 台南县| 榕江县| 吴桥县| 宜兰县| 海安县| 武邑县| 资阳市| 绥棱县| 南华县| 安化县| 桂阳县| 班玛县| 白水县| 汉寿县| 全椒县| 渭南市| 宽城| 虎林市| 西华县| 射阳县| 夏津县| 肇州县| 屯昌县| 育儿| 化德县| 安阳市| 临洮县|