Redshift跨集群同步插入数据:无需中间RDS的方案问询
无需中间RDS的Redshift跨集群同步插入方案
方案一:Redshift联邦查询直接跨集群写入
这是最直接的替代方案,无需中间RDS,完全在Redshift集群间完成同步写入:
在集群A上创建针对集群B的联邦连接(外部数据源)
CREATE EXTERNAL DATA SOURCE redshift_cluster_b WITH ( TYPE = REDSHIFT, PARAMETERS = ( dbname='<集群B的数据库名>', server='<集群B的端点地址>', port='5439' ), IAM_ROLE='<具有集群B访问权限的IAM角色ARN>' );在集群A上创建映射到集群B目标表的外部schema
CREATE EXTERNAL SCHEMA schema_b FROM REDSHIFT DATA SOURCE redshift_cluster_b SCHEMA '<集群B中目标表所在的schema>';直接从集群A执行跨集群同步插入
INSERT INTO schema_b.<目标表名> SELECT <需要插入的字段列表> FROM <集群A的源表/查询语句>;该操作为同步执行,集群A的INSERT语句完成后,集群B的目标表中立即可见新数据,完全满足你的同步要求。
方案二:Redshift数据共享结合物化视图(适用于频繁同步只读场景)
如果你的需求是将集群A的数据同步到集群B供查询,也可采用数据共享+物化视图实现准实时同步(若需主动写入,方案一更贴合):
- 在集群A中创建数据共享,共享需同步的源表
- 在集群B中接受数据共享,创建只读外部表
- 在集群B中基于外部表创建物化视图,可手动触发同步(完成后数据立即可用)
CREATE MATERIALIZED VIEW mv_sync_data AS SELECT * FROM shared_schema.<共享表名> WITH DATA; -- 手动触发同步 REFRESH MATERIALIZED VIEW mv_sync_data;
内容的提问来源于stack exchange,提问作者user433342
相关产品推荐
相关产品推荐

