GaussDB逻辑解码连接失败
- 故障现象
连接数据库解码失败,报拒绝连接错误。
- 故障原因
可能原因有以下:
用户没有逻辑解码权限。
报错日志如下:
FATAL: must be system admin or replication role or a member of the gs_role_replication role to use replication slots
用户名和用户所在机器的IP未在数据库解码CN或DN节点上配置白名单。
报错日志如下(以用户Ruby为例,其中的X.X.X.X代指用户所在机器的IP):
FATAL: no pg_hba.conf entry for replication connection from host "X.X.X.X", user "Ruby", SSL off
连接CN解码时,指定用户未在主DN上配置来自CN连接的白名单。
报错日志如下:
FATAL: [FATAL] Connection from CN must use trust or gss auth method.
- 处理方法
针对用户没有解码权限场景:
为解码用户(如下以Ruby为例)赋予解码角色权限,执行以下SQL语句:
GRANT gs_role_replication TO Ruby;
针对连接CN解码白名单未配置场景:
使用gs_guc工具,为用户名(以Ruby为例)和用户所在机器IP(如下用X.X.X.X指代,实际使用时需替换为正确IP)在数据库解码节点上配置白名单:
gs_guc reload -Z coordinator -N all -I all -h 'host replication Ruby X.X.X.X/32 sha256'
针对直连DN解码白名单未配置场景:
使用gs_guc工具,为用户名(以Ruby为例)和用户所在机器IP(如下用X.X.X.X指代,实际使用时需替换为正确IP)在数据库解码节点上配置白名单:
gs_guc reload -Z datanode -N all -I all -h 'host replication Ruby X.X.X.X/32 sha256'
针对连接CN解码时,指定用户未在主DN上配置来自CN连接的白名单:
使用gs_guc工具,为用户名(以Ruby为例)和解码连接CN所在机器IP(如下用X.X.X.X指代,实际使用时需替换为正确IP)在主DN节点上配置白名单:
gs_guc reload -Z datanode -N all -I all -h 'host replication Ruby X.X.X.X/32 trust'
注意:如果需要为同一用户同时配置直连DN解码以及连接CN解码白名单,在相关DN上则不能使用gs_guc工具,而需要手动将单引号中的内容(如:host replication Ruby X.X.X.X/32 trust)追加到对应DN节点的pg_hba.conf文件中。该文件存在于指定DN的实例路径下。
- 点赞
- 收藏
- 关注作者
评论(0)