Redshift非引导用户连接数超限,无法查询及终止连接求助
Redshift连接数超限的应急处理方案
一、用超级用户直接连接操作
Redshift给超级用户(引导用户)预留了独立的连接配额(默认10个,不受普通用户500上限限制),直接用超级用户账号通过SQL客户端(比如psql、DBeaver)连接集群:
- 查询所有会话详情:
SELECT procpid, user_name, starttime, db_name, application_name FROM stv_sessions WHERE user_name != 'rdsdb'; -- 过滤系统内部会话 - 终止单个会话(把
<procpid>换成实际进程ID):SELECT pg_terminate_backend(<procpid>); - 批量清理非超级用户会话:
SELECT pg_terminate_backend(procpid) FROM stv_sessions WHERE user_name NOT IN ('rdsdb', '<你的超级用户名>');
二、通过AWS CLI绕开SQL连接限制
如果连SQL客户端都连不上,用AWS CLI操作:
- 先获取临时超级用户凭证(需对应IAM权限):
aws redshift get-cluster-credentials --db-user <超级用户名> --db-name <数据库名> --cluster-identifier <集群ID> --duration-seconds 3600 - 拿到凭证后,用psql命令行连接:
之后就能执行前面的会话查询和终止命令了。psql -h <集群端点地址> -p 5439 -U <临时用户名> -d <数据库名>
三、极端情况:重启集群
要是以上方法都没效果,直接在AWS控制台重启Redshift集群——但要注意,重启会中断所有运行中的任务,未提交的事务会回滚,仅作为紧急备选方案。
内容的提问来源于stack exchange,提问作者Daniel Moskowitz
相关产品推荐
相关产品推荐

