GPDB6和GPDB7直连primary命令的不同

简介: GPDB6和GPDB7直连primary命令的不同

1、遇到的问题

最近一直在使用GPDB7的版本进行学习,经常需要客户端psql连接primary进行验证,而连接primary必须使用维护模式时的命令:


PGOPTIONS=’-c gp_role = utility’ psql -d postgres -p port

业务版本比较低,使用GPDB6的版本,查询问题时,使用上面的命令连接primary报错:


psql: FATAL: System was started in master-only utility mode - only utility mode connections are allowd

2、分析

1)查看代码报错的位置,在InitPostgres函数中:

    if((Gp_role == GP_ROLE_UTILITY) && (Gp_session_role != GP_ROLE_UTILITY))
    {
      ereport(FATAL,
          (errcode(ERRCODE_CANNOT_CONNECT_NOW),
          errmsg("System was started in master-only utility mode - only utility mode connections are allowed")))
    }

    也就是说变量Gp_role和Gp_session_role的值分别是GP_ROLE_UTILITY和非GP_ROLE_UTILITY时才会报错。在代码中添加打印两个变量,编译后执行发现Gp_session_role的值是GP_ROLE_DISPATCH2)看下这两个变量赋值的地方,Gp_session_role的值来自外部指定,不是从Gp_role处得来:


    assign_gp_session_role
      newrole = string_to_role(newval);
      Gp_session_role = newrole;
      Gp_role = Gp_session_role;
      ...

    3)看下代码的注释:

    可以看出,需要指定gp_session_roleutility。所以进入维护模式的命令为:


    PGOPTIONS=’-c gp_session_role=utility’ psql -d postgres -p port

    GPDB7中改为gp_role=utility。

    目录
    相关文章
    |
    7月前
    |
    SQL 分布式计算 API
    MaxCompute异常问题之报错User not in whitelist in this region如何解决
    MaxCompute异常涉及到在使用阿里云MaxCompute大数据计算服务时遇到的各种错误和问题;本合集将提供针对MaxCompute异常的分析和解决方案,帮助用户处理数据处理、分析任务中的异常情况。
    |
    存储 算法 Serverless
    GPDB中AOCO列存页的checksum
    GPDB中AOCO列存页的checksum
    87 0
    |
    SQL 关系型数据库 MySQL
    阿里云DRDS--MySQL中间件总结分享
    mysql作为互联网公司都会用到的数据库,如果在使用过程中出现性能问题,会采用mysql的横向扩展,使用主从复制来提高读性能,要是解决写入问题,需要进行分库分表。本文不会去介绍mysql的高可用,本文主要介绍mysql的访问中间件(DAL)的一些实现方案。
    2339 14
    阿里云DRDS--MySQL中间件总结分享
    |
    关系型数据库 分布式数据库 数据库
    PolarDB-X 1.0-VPC 问题-如果RDS实例切换到VPC而DRDS没有切换,对DRDS会产生什么影响?
    由于DRDS依赖于RDS,所以如果将RDS实例切换了网络类型后(无论是从经典网络切换VPC还是从VPC切换经典网络),DRDS与RDS之间的网络连通性会被破坏。为此,需要到DRDS控制台对DRDS实例的分库连接进行修复操作。
    233 0
    PolarDB-X 1.0-VPC 问题-如果RDS实例切换到VPC而DRDS没有切换,对DRDS会产生什么影响?
    |
    关系型数据库 分布式数据库 RDS
    PolarDB-X 1.0-VPC 问题-当经典网络 DRDS 切换VPC,DRDS 之下的经典网络 RDS 是否需要切换到 VPC?
    不需要。DRDS 切换到 VPC 后,不会影响 DRDS 之下的 RDS,因此 RDS 的网络类型不需要做切换。
    1450 0
    |
    SQL 分布式计算 Java
    使用 Instance Tunnel 获取 Maxcompute Instance 的执行结果
    本篇将介绍如何使用 Instance Tunnel 来获取 Maxcompute Instance 执行结果。
    5506 1
    |
    数据库
    SQLServer之PRIMARY KEY约束
    原文:SQLServer之PRIMARY KEY约束 PRIMARY KEY约束添加规则 1、在表中常有一列或多列的组合,其值能唯一标识表中的每一行,这样的一列或多列成为表的主键(PrimaryKey)。
    1056 0
    |
    Go 数据库 索引
    SQLServer之FOREIGN KEY约束
    原文:SQLServer之FOREIGN KEY约束 FOREIGN KEY约束添加规则 1、外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列。 2、如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中存在;否则,将返回违反外键约束的错误信息。
    1340 0
    |
    SQL 弹性计算 网络协议
    Implementing SQL Server AlwaysOn Availability Groups on ECS Instances
    The SQL Server AlwaysOn group features a high-availability and disaster recovery solution. However, users must take note of the differences in copies as well as the replication relationships.
    3148 0