Materialize项目:从Amazon Aurora PostgreSQL实时数据摄取指南
概述
Materialize是一个流式数据库,能够实时处理来自各种数据源的变化。本文将详细介绍如何将Amazon Aurora PostgreSQL数据库中的数据实时同步到Materialize中。通过PostgreSQL的逻辑复制功能,Materialize可以持续捕获Aurora中的数据变更,并保持与源数据库的实时同步。
前置准备
在开始配置之前,请确保满足以下条件:
- 拥有一个运行中的Amazon Aurora PostgreSQL实例(版本10+)
- 该实例不是Aurora Serverless v1(该版本不支持逻辑复制)
- 具有足够的权限配置数据库参数和安全组规则
重要警告:Aurora PostgreSQL 16.1版本存在一个已知问题,可能导致逻辑复制失败并显示错误"could not map filenumber...to relation OID"。如果遇到此问题,请将Aurora升级到16.2或更高版本。
第一部分:配置Amazon Aurora
1. 启用逻辑复制
Materialize依赖PostgreSQL的逻辑复制协议来捕获数据变更。在Aurora中启用逻辑复制的步骤如下:
- 创建或修改数据库参数组
- 设置以下参数:
rds.logical_replication = 1
wal_level = logical
- 将参数组应用到数据库实例
- 重启实例使更改生效
2. 创建发布和复制用户
为了Materialize能够读取变更数据,需要:
-
创建专用用户:
CREATE USER materialize WITH PASSWORD 'secure_credentials' REPLICATION;
-
授予必要权限:
GRANT rds_replication TO materialize; GRANT SELECT ON ALL TABLES IN SCHEMA public TO materialize;
-
创建发布:
CREATE PUBLICATION mz_source FOR ALL TABLES;
第二部分:网络安全性配置(可选)
根据您的安全需求,可以选择以下三种网络连接方式:
方案一:允许Materialize静态IP
-
查询Materialize出口IP:
SELECT * FROM mz_egress_ips;
-
在Aurora安全组中添加入站规则,允许这些IP访问5432端口。
方案二:使用AWS PrivateLink
PrivateLink提供了最安全的连接方式,数据不会经过公共互联网:
- 获取Aurora实例IP地址
- 创建目标组(IP地址类型,TCP 5432端口)
- 创建网络负载均衡器
- 配置Aurora安全组允许来自负载均衡器的流量
- 创建VPC终端节点服务
方案三:使用SSH隧道
适合已有SSH基础设施的环境:
- 启动EC2实例作为SSH堡垒主机
- 配置安全组仅允许Materialize IP
- 配置Aurora安全组允许来自堡垒主机的流量
第三部分:在Materialize中摄取数据
1. 创建专用集群(可选)
对于生产环境,建议创建独立集群:
CREATE CLUSTER ingest_postgres SIZE = 'medium';
2. 开始数据摄取
根据选择的网络方案,执行相应命令:
基本连接方式
-
存储密码凭证:
CREATE SECRET pg_credentials AS 'secure_credentials';
-
创建连接对象:
CREATE CONNECTION pg_connection TO POSTGRES ( HOST 'aurora-writer-endpoint', PORT 5432, USER 'materialize', PASSWORD SECRET pg_credentials, SSL MODE 'require', DATABASE 'your_database' );
-
创建数据源:
CREATE SOURCE mz_source FROM POSTGRES CONNECTION pg_connection (PUBLICATION 'mz_source') FOR ALL TABLES;
PrivateLink连接方式
-
创建PrivateLink连接:
CREATE CONNECTION privatelink_svc TO AWS PRIVATELINK ( SERVICE NAME 'your-service-name', AVAILABILITY ZONES ('az1', 'az2') );
-
获取并配置AWS principal
-
验证连接:
VALIDATE CONNECTION privatelink_svc;
-
创建PostgreSQL连接(同上,添加AWS PRIVATELINK参数)
后续管理
数据源创建后,您可以:
-
处理上游模式变更:
ALTER SOURCE mz_source ADD SUBSOURCE new_table;
-
监控复制状态:
SELECT * FROM mz_source_statuses;
最佳实践
- 始终使用Aurora的Writer端点
- 为生产环境配置适当的集群大小
- 定期监控复制延迟
- 考虑使用PrivateLink以获得最佳安全性
- 为关键表创建物化视图以提高查询性能
通过以上步骤,您已成功将Amazon Aurora PostgreSQL数据库实时连接到Materialize,可以开始构建实时数据应用和分析管道了。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考