- 使用
PostgreSQL表引擎读取 PostgreSQL 表中的数据 - 使用 Experimental 的
MaterializedPostgreSQL数据库引擎,将 PostgreSQL 中的数据库与 ClickHouse 中的数据库同步
使用 PostgreSQL 表引擎
PostgreSQL 表引擎允许在 ClickHouse 中对存储在远程 PostgreSQL 服务器上的数据执行 SELECT 和 INSERT 操作。
本文将通过一个表来说明集成的基本方法。
1
配置 PostgreSQL
- 在
postgresql.conf中,添加以下配置项以使 PostgreSQL 在网络接口上监听:
- 创建一个供 ClickHouse 连接使用的用户。为便于演示,本示例授予其完整的超级用户权限。
- 在 PostgreSQL 中创建一个新数据库:
- 创建新表:
- 添加几行数据进行测试:
- 要将 PostgreSQL 配置为允许新用户连接到新数据库以进行复制,请将以下条目添加到
pg_hba.conf文件中。将 address 行更新为您的 PostgreSQL 服务器所在的子网或 IP 地址:
- 重新加载
pg_hba.conf配置文件 (请根据您的版本调整此命令) :
- 验证新的
clickhouse_user是否可以登录:
如果您在 ClickHouse Cloud 中使用此功能,可能需要允许 ClickHouse Cloud 的 IP 地址访问您的 PostgreSQL 实例。
有关出口流量的详细信息,请查看 ClickHouse Cloud Endpoints API。
2
在 ClickHouse 中定义表
3
测试集成
- 在 ClickHouse 中,查看初始数据行:
- 回到 PostgreSQL,在表中添加几条数据:
- 这两行新数据应该会出现在您的 ClickHouse 表中:
- 让我们看看向 ClickHouse 表添加行时会发生什么:
- 在 ClickHouse 中新增的行应出现在 PostgreSQL 的表中:
PostrgeSQL 表引擎实现 PostgreSQL 与 ClickHouse 之间的基础集成。
请参阅 PostgreSQL 表引擎文档 了解更多功能,例如指定 schema、仅返回部分列,以及连接到多个副本。另请参阅博客 ClickHouse and PostgreSQL - 数据世界中的天作之合 - 第 1 部分。使用 MaterializedPostgreSQL 数据库引擎
psql) 和 ClickHouse 命令行客户端 (clickhouse-client)。PostgreSQL 服务器安装在 Linux 上。如果 PostgreSQL 数据库是全新的测试安装,则以下内容为最小配置。
1
在 PostgreSQL 中
- 在
postgresql.conf中,设置最小监听级别、复制 wal level 和 replication slots:
logical,并且至少需要 2 个 replication slots- 使用管理员账户,创建一个供 ClickHouse 连接的用户:
- 创建新数据库:
- 在
psql中连接到新数据库:
- 创建新表:
- 添加初始行:
- 配置 PostgreSQL,允许新用户连接到新数据库以进行复制。下面是需要添加到
pg_hba.conf文件中的最简条目:
- 使用类似以下内容重新加载
pg_hba.conf配置 (请根据你的版本调整) :
- 使用新的
clickhouse_user测试登录:
2
在 ClickHouse 中
- 登录到 ClickHouse 命令行客户端
- 为该数据库引擎启用 PostgreSQL Experimental 功能:
- 创建要复制的新数据库,并定义初始表:
有关 PostgreSQL 数据库引擎的完整指南,请参阅 https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- 验证初始表中有数据:
3
测试基本复制
- 在 PostgreSQL 中,添加新行:
- 在 ClickHouse 中,验证是否能看到新增的行:
4
摘要
本集成指南主要通过一个简单示例说明如何复制包含单个表的数据库,不过,也提供了更高级的选项,例如复制整个数据库,或向现有复制中添加新表和 schema。尽管这种复制不支持 DDL 命令,但可以将该引擎设置为检测更改,并在发生结构变更时重新加载表。
如需了解高级选项支持的更多功能,请参阅参考文档。