Materialize项目:从Amazon Aurora PostgreSQL实时数据摄取指南

Materialize项目:从Amazon Aurora PostgreSQL实时数据摄取指南

materialize The data warehouse for operational workloads. materialize 项目地址: https://gitcode.com/gh_mirrors/mat/materialize

概述

Materialize是一个流式数据库,能够实时处理来自各种数据源的变化。本文将详细介绍如何将Amazon Aurora PostgreSQL数据库中的数据实时同步到Materialize中。通过PostgreSQL的逻辑复制功能,Materialize可以持续捕获Aurora中的数据变更,并保持与源数据库的实时同步。

前置准备

在开始配置之前,请确保满足以下条件:

  1. 拥有一个运行中的Amazon Aurora PostgreSQL实例(版本10+)
  2. 该实例不是Aurora Serverless v1(该版本不支持逻辑复制)
  3. 具有足够的权限配置数据库参数和安全组规则

重要警告:Aurora PostgreSQL 16.1版本存在一个已知问题,可能导致逻辑复制失败并显示错误"could not map filenumber...to relation OID"。如果遇到此问题,请将Aurora升级到16.2或更高版本。

第一部分:配置Amazon Aurora

1. 启用逻辑复制

Materialize依赖PostgreSQL的逻辑复制协议来捕获数据变更。在Aurora中启用逻辑复制的步骤如下:

  1. 创建或修改数据库参数组
  2. 设置以下参数:
    • rds.logical_replication = 1
    • wal_level = logical
  3. 将参数组应用到数据库实例
  4. 重启实例使更改生效

2. 创建发布和复制用户

为了Materialize能够读取变更数据,需要:

  1. 创建专用用户:

    CREATE USER materialize WITH PASSWORD 'secure_credentials' REPLICATION;
    
  2. 授予必要权限:

    GRANT rds_replication TO materialize;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO materialize;
    
  3. 创建发布:

    CREATE PUBLICATION mz_source FOR ALL TABLES;
    

第二部分:网络安全性配置(可选)

根据您的安全需求,可以选择以下三种网络连接方式:

方案一:允许Materialize静态IP

  1. 查询Materialize出口IP:

    SELECT * FROM mz_egress_ips;
    
  2. 在Aurora安全组中添加入站规则,允许这些IP访问5432端口。

方案二:使用AWS PrivateLink

PrivateLink提供了最安全的连接方式,数据不会经过公共互联网:

  1. 获取Aurora实例IP地址
  2. 创建目标组(IP地址类型,TCP 5432端口)
  3. 创建网络负载均衡器
  4. 配置Aurora安全组允许来自负载均衡器的流量
  5. 创建VPC终端节点服务

方案三:使用SSH隧道

适合已有SSH基础设施的环境:

  1. 启动EC2实例作为SSH堡垒主机
  2. 配置安全组仅允许Materialize IP
  3. 配置Aurora安全组允许来自堡垒主机的流量

第三部分:在Materialize中摄取数据

1. 创建专用集群(可选)

对于生产环境,建议创建独立集群:

CREATE CLUSTER ingest_postgres SIZE = 'medium';

2. 开始数据摄取

根据选择的网络方案,执行相应命令:

基本连接方式
  1. 存储密码凭证:

    CREATE SECRET pg_credentials AS 'secure_credentials';
    
  2. 创建连接对象:

    CREATE CONNECTION pg_connection TO POSTGRES (
      HOST 'aurora-writer-endpoint',
      PORT 5432,
      USER 'materialize',
      PASSWORD SECRET pg_credentials,
      SSL MODE 'require',
      DATABASE 'your_database'
    );
    
  3. 创建数据源:

    CREATE SOURCE mz_source
      FROM POSTGRES CONNECTION pg_connection (PUBLICATION 'mz_source')
      FOR ALL TABLES;
    
PrivateLink连接方式
  1. 创建PrivateLink连接:

    CREATE CONNECTION privatelink_svc TO AWS PRIVATELINK (
      SERVICE NAME 'your-service-name',
      AVAILABILITY ZONES ('az1', 'az2')
    );
    
  2. 获取并配置AWS principal

  3. 验证连接:

    VALIDATE CONNECTION privatelink_svc;
    
  4. 创建PostgreSQL连接(同上,添加AWS PRIVATELINK参数)

后续管理

数据源创建后,您可以:

  1. 处理上游模式变更:

    ALTER SOURCE mz_source ADD SUBSOURCE new_table;
    
  2. 监控复制状态:

    SELECT * FROM mz_source_statuses;
    

最佳实践

  1. 始终使用Aurora的Writer端点
  2. 为生产环境配置适当的集群大小
  3. 定期监控复制延迟
  4. 考虑使用PrivateLink以获得最佳安全性
  5. 为关键表创建物化视图以提高查询性能

通过以上步骤,您已成功将Amazon Aurora PostgreSQL数据库实时连接到Materialize,可以开始构建实时数据应用和分析管道了。

materialize The data warehouse for operational workloads. materialize 项目地址: https://gitcode.com/gh_mirrors/mat/materialize

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卓榕非Sabrina

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

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

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

打赏作者

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

抵扣说明:

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

余额充值