暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何处理瀚高数据库与PG的冲突

瀚高PG实验室 2025-06-23
190
当服务器上同时部署PostgreSQL数据库与瀚高数据库时,可能会出现以下几种常见问题:

1. 使用psql登录HGDB时出现如下报错

    [root@localhost ~]# psql  
    psql: could not connect to server: No such file or directory
            Is the server running locally and accepting
            connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?  

    (左右滑动查看完整内容)

    以上情况,发现psql默认访问的socket文件在/var/run/postgresql/下,可能有如下原因:

    1. 使用了错误的psql工具
    2. 使用了错误的 libpq.so

    对于HGDB安全版4.5和企业版6,psql工具默认会访问位于/tmp/下的socket文件。

    2. pg_ctl start 时提示cannot be run as root无法启动

      [root@localhost ~]# pg_ctl start
      pg_ctl: cannot be run as root
      Please log in (using, e.g., "su"as the (unprivileged) user that will
      own the server process.

      (左右滑动查看完整内容)

      该问题通常是由于PGDATA和PATH路径配置不正确,调用了其他pg的可执行文件

      3. 出现其他和数据库版本或libpq版本等相关的报错

        psqlsymbol lookup errorpsqlundefined symbolPQkernelVersion

        (左右滑动查看完整内容)

        通常和libpq文件有关,配置LD_LIBRARY_PATH可解决
        问题原因
        瀚高数据库引进了国际上最先进的开源数据库PostgreSQL内核技术,在此PostgreSQL社区版之上做了一系列的研发和优化。当服务器上同时部署PostgreSQL数据库与瀚高数据库时,可能存在数据库命令冲突、误操作等情况。
        解决方案

        当psql无法正常进入数据库时,请按照如下步骤排查:

        1. 确认当前服务器中HGDB进程正在运行

          [root@localhost ~]# ps -ef |grep postg
          root       1207      1  0 06:10 ?        00:00:00 /opt/highgo/hgdb-see-4.5.8/bin/postgres           <-----可以看到存在HGDB主进程,是从HGDB安装路径中执行,且主进程正常派生出多个HGDB后台进程
          root       1372   1207  0 06:10 ?        00:00:00 postgres: logger   
          root       1382   1207  0 06:10 ?        00:00:00 postgres: checkpointer   
          root       1383   1207  0 06:10 ?        00:00:00 postgres: background writer   
          root       1384   1207  0 06:10 ?        00:00:00 postgres: walwriter   
          root       1385   1207  0 06:10 ?        00:00:00 postgres: autovacuum launcher   
          root       1386   1207  0 06:10 ?        00:00:00 postgres: archiver   last was 0000000100000000000000BE
          root       1387   1207  0 06:10 ?        00:00:00 postgres: stats collector   
          root       1388   1207  0 06:10 ?        00:00:00 postgres: logical replication launcher  

          (左右滑动查看完整内容)

          假如无HGDB进程,则检查下面两步骤后,尝试pg_ctl启动HGDB

          2. 检查数据库相关命令是否为HGDB自带工具

          使用which命令,确保命令行中调起的psql或其他命令为HGDB自带工具

            [root@localhost ~]# which psql 
            /opt/highgo/hgdb-see-4.5.8/bin/psql     #路径在HGDB安装目录下

            (左右滑动查看完整内容)

            3. 检查环境变量配置

            使用ENV命令,确认当前shell环境变量指向HGDB的相关路径

              [root@localhost ~]# env |grep -E 'PG|LD|HG|PATH'
              LD_LIBRARY_PATH=/opt/highgo/hgdb-see-4.5.8/lib    #LD_LIBRARY_PATH在正常情况下无需配置,但是当psql无法进入数据库或无法启动时,可以尝试配置该参数指向HGDB安装目录下的lib目录
              PGPORT=5866
              PGDATABASE=highgo
              PATH=/opt/highgo/hgdb-see-4.5.8/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin       #HGDB的可执行文件路径应该在PATH最前方,可以使用which命令再次确认
              HGDB_HOME=/opt/highgo/hgdb-see-4.5.8                         
              PGDATA=/opt/highgo/hgdb-see-4.5.8/data        #该路径指向HGDB的数据文件目录
              HG_BASE=/opt/highgo

              (左右滑动查看完整内容)

              正常情况下,配置好PATH、LD_LIBRARY_PATH、PGDATA这三个变量,即可使用psql正常连接到HGDB的psql命令行下,并能够通过pg_ctl控制数据库服务的启停。

              示例:

                export PATH=/opt/highgo/hgdb-see-4.5.8/bin:$PATH
                export LD_LIBRARY_PATH=/opt/highgo/hgdb-see-4.5.8/lib
                export PGDATA=/data/highgo/data

                (左右滑动查看完整内容)

                请根据实际情况的安装路径配置如上参数,问题通常即可解决。 若要使其永久生效,可以在经过评估后,将其添加到~/.bashrc
                文件中,

                版权声明:本文由瀚高及PG志愿者翻整理,转载请注明出处,本页面内容均源自PostgreSQL Weekly英文官网,翻译目的在于传递更多信息,并不意味着瀚高赞同其观点或证实其内容的真实性。如果其他媒体、网站或其他任何形式的法律实体和个人使用,必须经过著作权人合法书面授权并自负全部法律责任。不得擅自使用瀚高名义进行转载,或盗用瀚高名义发布信息。否则瀚高将保留追究法律责任的权利

                文章转载自瀚高PG实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论