pgsql binlog监听功能点解析(sql监听查看)越早知道越好

随心笔谈9个月前更新 admin
217 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章主要介绍了PostgreSQL BinLog监听的功能点和优化方案,重点围绕以下几个方面展开: 1. **功能点解析**: - **磁盘持久化**:确保数据在断电后仍可恢复。 - **心跳机制**:设置`heartbeat.interval.ms`属性,确保在没有数据变更时仍能正常运行。 - **延迟大小**:通过计算`delay_size`来判断是否需要停止监听,避免数据过期问题。 - **批量大小**:设置`max.batch.size`以控制一次性处理的BinLog大小,避免服务器压力。 - **表监控**:针对多个表进行监听时,避免同时处理过多数据。 2. **配置示例**: - 设置心跳时间:`props.setProperty("heartbeat.interval.ms", "20000");` - 心跳功能:即使未收到数据,仍能保持心跳,避免异常中断。 - 延迟计算:使用PostgreSQL的系统表`pg_replication_slots`计算`delay_size`。 3. **工具推荐**: - 提供了一个小工具(链接至GitHub),支持稳定的生产环境使用。 4. **注意事项**: - 心跳机制的作用:确保即使没有数据变更,依然能保持正常运行。 - 延迟大小计算:通过工具直接获取,避免手动计算带来的风险。 - 生产环境验证:推荐使用提供的工具进行实际应用验证。 总结:文章通过详细解析PostgreSQL BinLog监听功能,提供了实用的配置示例和工具推荐,帮助开发者优化日志监听性能。



目录引言功能点机器宕机,能支持断点续接如果监听的表 长时间没有数据变动,delay_size 会变大每次binlog传的size 太多,导致服务器处理不过来对多个表的监听,应该只有一个流进行监听希望磁盘持久化offset,保持数据的正确性小工具

监听mysql binlog 大家都知道canal,但是如果是pglog呢,先百度

也就这个靠点谱,文章 没有我想要的demo

去官网看看debezium.io/

其中这个 网址给了demo 但是不能直接用于生产

首先 pglog binlog监听需要满足哪些功能点

进行磁盘持久化

//设置心跳时间,就算没有数据 也会保持心跳
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(”

心跳这个是 当时上生产的时候,突然发现没有数据变更的时候 ,有报警,说delay了。。。这顿害怕

大概意思

数据库中有许多更新正在被跟踪,但只有极少数更新与连接器正在为其捕获更改的表和模式相关。这种情况可以通过周期性的心跳事件轻松解决。设置heartbeat.interval.ms连接器配置属性。

由于WAL由所有数据库共享,因此使用的WAL数量趋于增长,直到Debezium为其捕获更改的数据库触发事件。为了克服这一点,有必要:使用heartbeat.interval.ms连接器配置属性启用周期性心跳记录生成。定期从Debezium正在捕捉变化的数据库中发出更改事件。

其中

if (r.value() !=null && r.value().startsWith(”

这是因为 如果没有数据来的话,会是ts_ms 开头的,代表,没有新数据

props.setProperty(“max.batch.size”, “200”);
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(“,”)));
props.setProperty(“snapshot.mode”, “never”);

查询数据库 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;

这个工具在生产已经实践稳定,可以直接使用,有问题 可以评论

代码 github.com/a25017012/y…

以上就是pgsql binlog监听功能点解析的详细内容,更多关于pgsql binlog监听的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:MYSQL?Binlog恢复误删数据库详解一文详解MySQL?Binlog日志与主从复制mysql日志文件General_log和Binlog开启及详解MySQL中的?Binlog?深度解析及使用详情PgSQL条件语句与循环语句示例代码详解pgsql 解决包含有单引号的字符串操作

© 版权声明

相关文章