Skip to content

Files

Latest commit

Dec 15, 2023
f400df2 · Dec 15, 2023

History

History
193 lines (68 loc) · 4.64 KB

20190122_01.md

File metadata and controls

193 lines (68 loc) · 4.64 KB

PostgreSQL 逻辑复制、增量复制、逻辑订阅、增量订阅中间件 amazonriver - HelloBike开源 - 同步到elastic search , kafka

作者

digoal

日期

2019-01-22

标签

PostgreSQL , 逻辑复制 , 流复制 , testdecoding , amazonriver , hellobike


背景

amazonriver 是一个将postgresql的实时数据同步到es或kafka的服务。由hellobike开源。

版本支持

Postgresql 9.4 or later    
Kafka 0.8 or later    
ElasticSearch 5.x    

架构图

pic

原理

amazonriver 利用pg内部的逻辑复制功能,通过在pg创建逻辑复制槽,接收数据库的逻辑变更,通过解析test_decoding特定格式的消息,得到逻辑数据

安装使用

安装

$git clone https://github.com/hellobike/amazonriver    
$cd amazonriver    
$glide install    
$go install    

使用

amazonriver -config config.json    

PG 配置

PG数据库需要预先开启逻辑复制pg配置

amazonriver 配置

监控

amazonriver支持使用prometheus来监控同步数据状态,配置Grafana监控

同步到 elasticsearch

同步到elasticsearch

同步到 kafka

同步到kafka

性能测试

性能测试

许可

amazonriver 使用 Apache License 2 许可

感谢hellobike

参考

go语言版本

https://github.com/hellobike/amazonriver

java语言版本

https://github.com/hellobike/tunnel

logical decoding在主从架构下的切换逻辑处理问题

1、判断slot是否存在

2、如果slot不存在,新建slot(这一步说明发生了切换,从库没有slot信息,新建slot,从新的slot继续消费。会有一些数据丢失。)

3、如果slot已经存在,从slot继续消费。

《PostgreSQL 使用逻辑decode实现异步主从切换后,时间线分歧变化量补齐、修复》

《PostgreSQL 暂时不支持replication slot信息的主从同步》

《PostgreSQL Failover slot - 支持将slot信息发送给物理备库》

0丢失还是需要内核层面支持slot failover,同时结合同步复制来实现。

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat