pgstream 使用教程

pgstream 使用教程

pgstream PostgreSQL replication with DDL changes pgstream 项目地址: https://gitcode.com/gh_mirrors/pg/pgstream

1. 项目介绍

pgstream 是一个开源的 CDC(Change Data Capture)命令行工具和库,它提供了对 PostgreSQL 的复制支持,包括 DDL(Data Definition Language)变化的复制到任何指定的输出。pgstream 支持多种复制输出,如 Elasticsearch/OpenSearch、Webhooks、PostgreSQL 等,并且具有模块化的部署配置,仅需要 PostgreSQL。

2. 项目快速启动

环境准备

在开始之前,请确保您的环境中安装了以下依赖:

  • PostgreSQL
  • Kafka(如果使用 Kafka 作为中间件)
  • OpenSearch 或 Elasticsearch(如果使用 OpenSearch/Elasticsearch 作为输出)

安装 pgstream

您可以从源代码安装 pgstream,运行以下命令:

go install github.com/xataio/pgstream@latest

或者,如果您使用的是 macOS 或 Linux,可以通过 Homebrew 安装:

brew tap xataio/pgstream
brew install pgstream

初始化数据库

在 PostgreSQL 数据库中创建 pgstream 架构以及所需的表、函数和触发器。同时,为配置的数据库创建一个复制槽,供 pgstream 服务使用。

pgstream init --pgurl "postgres://username:password@localhost:5432/dbname?sslmode=disable"

如果需要,您可以使用 --replication-slot 标志或设置环境变量 PGSTREAM_POSTGRES_REPLICATION_SLOT_NAME 来指定复制槽的名称。

运行 pgstream

运行 pgstream 服务时,需要提供配置,可以通过环境变量、配置文件或两者的组合来设置。以下是几个示例配置文件,可以作为参考。

PostgreSQL 到 OpenSearch
pgstream run -c pg2os.env --log-level trace
PostgreSQL 到 Kafka
pgstream run -c pg2kafka.env --log-level trace

在另一个终端,运行 Kafka 到 OpenSearch 的配置:

pgstream run -c kafka2os.env --log-level trace
PostgreSQL 到 PostgreSQL(带初始快照)
pgstream run -c pg2pg.env --log-level trace
PostgreSQL 快照模式到 PostgreSQL
pgstream run -c snapshot2pg.env --log-level trace

3. 应用案例和最佳实践

  • 数据同步:使用 pgstream 在不同的 PostgreSQL 实例之间同步数据,包括结构和数据变更。
  • 数据脱敏:在数据复制过程中使用列值转换功能对敏感数据进行脱敏。
  • 数据集成:将 PostgreSQL 数据集成到 Elasticsearch 或其他数据存储系统中,以便进行搜索和分析。

4. 典型生态项目

  • Elasticsearch/OpenSearch:用于全文搜索和数据分析。
  • Kafka:作为消息中间件,实现高吞吐量的数据传输。
  • Webhooks:用于触发外部服务或自动化流程。

通过以上教程,您可以快速上手 pgstream,实现 PostgreSQL 数据的复制和集成。在实际应用中,请根据具体需求调整配置和部署方案。

pgstream PostgreSQL replication with DDL changes pgstream 项目地址: https://gitcode.com/gh_mirrors/pg/pgstream

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

3765209 [Druid-ConnectionPool-Create-146186969] com.alibaba.druid.pool.DruidDataSource.run:2815| create connection SQLException, url: jdbc:postgresql://10.251.150.35:5432/adverse, errorCode 0, state 08001 org.postgresql.util.PSQLException: Connection to 10.251.150.35:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:285) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:217) at org.postgresql.Driver.makeConnection(Driver.java:458) at org.postgresql.Driver.connect(Driver.java:260) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:118) at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:764) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112) at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:232) at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:112) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1645) at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1709) at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2813) Caused by: java.net.ConnectException: 拒绝连接 (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:607) at org.postgresql.core.PGStream.<init>(PGStream.java:81) at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:93) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:197)
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

解然嫚Keegan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值