同区域同账号下Redshift预置与无服务器集群数据共享查询异常
Redshift预置集群与无服务器集群数据共享排查方案
核心排查步骤
先把生产者端的权限配置做扎实
在预置集群(生产者)里,必须把要共享的模式、表明确加到数据共享里,还要给无服务器的命名空间开访问权限:-- 给数据共享加模式 ALTER DATASHARE {MY-DATASHARE-NAME} ADD SCHEMA {SCHEMA-NAME}; -- 给数据共享加表 ALTER DATASHARE {MY-DATASHARE-NAME} ADD TABLE {SCHEMA-NAME}.{TABLE-NAME}; -- 授权无服务器命名空间访问 GRANT USAGE ON DATASHARE {MY-DATASHARE-NAME} TO NAMESPACE '{SERVERLESS-NAMESPACE-ID}';做完之后在生产者端跑
DESC DATASHARE {MY-DATASHARE-NAME};,确认模式和表确实在共享列表里。消费者端的命令别写错命名空间ID
无服务器集群(消费者)跑DESC DATASHARE的时候,必须用生产者集群的命名空间ID,不是自己的。命令格式要精准:DESC DATASHARE {MY-DATASHARE-NAME} OF NAMESPACE '{PRODUCER-NAMESPACE-ID}';注意:命名空间ID是36位的UUID,一个字符都不能错,别多空格少空格。
给消费者用户开权限
无服务器这边执行查询的用户,得有Redshift内部的USAGE权限:GRANT USAGE ON DATASHARE {MY-DATASHARE-NAME} OF NAMESPACE '{PRODUCER-NAMESPACE-ID}' TO {CONSUMER-USER};同时检查IAM角色有没有
redshift:DescribeDataShares和redshift:ListDataShares权限,缺了就补上。等会儿再试,可能是同步延迟
数据共享的元数据同步有时候会慢个几分钟,尤其是刚建完或者改完配置的时候。别急着重建,等5-10分钟再跑DESC DATASHARE,或者在生产者端再执行一次GRANT USAGE命令触发同步。
额外验证动作
生产者端查数据共享状态:
SELECT * FROM SVV_DATASHARES WHERE share_name = '{MY-DATASHARE-NAME}';确认
consumer_namespaces里有你无服务器的命名空间ID,status是ACTIVE。消费者端查系统视图:
SELECT * FROM SVV_DATASHARE_OBJECTS WHERE share_name = '{MY-DATASHARE-NAME}';如果这个视图能返回结果,说明元数据已经同步了,就是你之前的
DESC DATASHARE命令可能用错了命名空间ID。
内容的提问来源于stack exchange,提问作者김재민
相关产品推荐
相关产品推荐

