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。

    目录
    相关文章
    |
    存储
    PCIe VPD (Vital Product Data) 介绍
    PCIe VPD (Vital Product Data) 介绍
    2590 0
    PCIe VPD (Vital Product Data) 介绍
    |
    6月前
    |
    负载均衡 关系型数据库 MySQL
    MySQL PXC集群多个节点同时大量并发update同一行
    如本文标题,MySQL PXC集群多个节点同时大量并发update同一行数据,会怎样? 为此,本人做了一个测试,来验证到底会怎样!
    62 0
    |
    8月前
    |
    Oracle 关系型数据库
    |
    存储 算法 Serverless
    GPDB中AOCO列存页的checksum
    GPDB中AOCO列存页的checksum
    91 0
    |
    存储 SQL OLAP
    57.【clickhouse】ClickHouse从入门到放弃-update和delete的使用
    【clickhouse】ClickHouse从入门到放弃-update和delete的使用
    57.【clickhouse】ClickHouse从入门到放弃-update和delete的使用
    |
    SQL 关系型数据库 MySQL
    阿里云DRDS--MySQL中间件总结分享
    mysql作为互联网公司都会用到的数据库,如果在使用过程中出现性能问题,会采用mysql的横向扩展,使用主从复制来提高读性能,要是解决写入问题,需要进行分库分表。本文不会去介绍mysql的高可用,本文主要介绍mysql的访问中间件(DAL)的一些实现方案。
    2350 14
    阿里云DRDS--MySQL中间件总结分享
    |
    SQL 分布式计算 Java
    使用 Instance Tunnel 获取 Maxcompute Instance 的执行结果
    本篇将介绍如何使用 Instance Tunnel 来获取 Maxcompute Instance 执行结果。
    5514 1
    |
    NoSQL 安全
    Using ApsaraDB to Build Scalable MongoDB Instances
    MongoDB is a star in the non-SQL (NoSQL) database world.
    2522 0
    |
    关系型数据库 PostgreSQL SQL
    |
    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.
    3162 0