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
amazonriver 利用pg内部的逻辑复制功能,通过在pg创建逻辑复制槽,接收数据库的逻辑变更,通过解析test_decoding特定格式的消息,得到逻辑数据
$git clone https://github.com/hellobike/amazonriver
$cd amazonriver
$glide install
$go install
amazonriver -config config.json
PG数据库需要预先开启逻辑复制pg配置
amazonriver支持使用prometheus来监控同步数据状态,配置Grafana监控
amazonriver 使用 Apache License 2 许可
go语言版本
https://github.com/hellobike/amazonriver
java语言版本
https://github.com/hellobike/tunnel
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热门书籍等,奖品丰富,快来许愿。开不开森.