[GAUSS-50219] : Failed to obtain;重启问题;远程连接问题;数据库宕机;附Opengauss安装过程

目录

报错[GAUSS-50219]

安装过程

1、安装包获取

2、环境准备

关闭防火墙

设置字符集、配置依赖库文件路径

使用yum安装系统依赖项

修改Python版本

创建XML配置文件

执行预安装脚本

执行安装

安装验证

补充重启问题:

补充远程连接问题:

修改配置文件

创建用户

补充数据库宕机问题:


报错[GAUSS-50219]

报错信息:[GAUSS-50219] : Failed to obtain 25 Feb 16:41:34 ntpdate[89405]: no server suitable for synchronization found. There are illegal characters.

原因:xml配置文件出错。(虽然官网说的是 获取目录/文件/路径失败,但又不知道哪儿出问题......下面是官网的解释,真的很粗略)

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- 整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />  
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="db1" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/gaussdb/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/gaussdb" />
        <!--数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/huawei/wisequery" />
        <!--数据库core文件目录-->
        <PARAM name="corePath" value="/opt/opengauss/corefile"/>
        <!-- 节点IP,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="192.168.1.136"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="db1">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="db1" />
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.1.136"/>
            <PARAM name="sshIp1" value="192.168.1.136"/>

        <!--DBnode-->
        <PARAM name="dataNum" value="1"/>
        <!--数据库端口号-->
        <PARAM name="dataPortBase" value="26000"/>
        <!--数据库主节点上的数据目录,及备机数据目录-->
        <PARAM name="dataNode1" value="/gaussdb/data/db1"/>
        <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

上面加粗部分就是3处名称和3处IP,这是一定要换的。我遇见报错是因为<DEVICE sn="db1">没有改,找了好久才发现这个名称也必须是主机名称,主机名称可以通过命令hostname获取。其余部分如路径、端口号等配置可自行调整。

安装过程

官网的教程:安装准备 企业版 | openGauss文档 | openGauss社区

环境:centos 7+openGauss6.0.0

硬件:

1、安装包获取

openGauss软件 | openGauss下载 | openGauss软件包 | openGauss社区

创建目录并将安装包放在该目录下,并解压,这里案例版本是6.0.1

[root@db1 ~]# mkdir -p /opt/software/openGauss

[root@db1 ~]# chmod 755 -R /opt/software

[root@db1 ~]# tar -zxvf openGauss-All-6.0.1-CentOS7-x86_64.tar.gz

解压完后会有OM安装包,还需要再解压OM安装包

tar -zxvf openGauss-OM-6.0.1-CentOS7-x86_64.tar.gz

修改安装包目录权限

chmod 755 -R /opt/software

OM会解压出工具脚本存放目录/script,后面需要进入该目录

cd /opt/software/openGauss/script

2、环境准备

关闭防火墙

停止防火墙

systemctl stop firewalld

关闭防火墙自启动

systemctl disable firewalld

查看防火墙状态

systemctl status

设置字符集、配置依赖库文件路径

可以通过Xftp直接改文件,也可以通过命令设置。这里不确定是不是可选,有兴趣的朋友可以试试直接跳过看可不可以,可以的话回来评论一下,谢谢。

[root@db1 ~]# cat >>/etc/profile<<EOF

>export LANG=en_US.UTF-8

>EOF

[root@db1 ~]# cat >>/etc/profile<<EOF

>export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH

>EOF

验证环境变量是否生效

[root@db1 ~]# echo $LD_LIBRARY_PATH

使用yum安装系统依赖项

备份原有yum配置文件,下载可用源repo文件,并安装所需的包

[root@db1 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

[root@db1 ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
[root@db1 ~]# yum install -y libaio-devel flex bison ncurses-devel glibc.devel patch lsb_release wget python3

修改Python版本

服务器需要用到Python-3.x命令,将默认2.7.x版本进行切换。备份Python文件

[root@db1 ~]# cd /usr/bin

[root@db1 bin]# mv python python.bak

建立python3软连接

[root@db1 bin]# ln -s python3 /usr/bin/python

验证Python版本

[root@db1 bin]# python -V

创建XML配置文件

在/opt/software/openGauss文件下创建配置文件cluster_config.xml(可以创建好了传过去),如下:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- 整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />  
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="db1" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/gaussdb/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/gaussdb" />
        <!--数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/huawei/wisequery" />
        <!--数据库core文件目录-->
        <PARAM name="corePath" value="/opt/opengauss/corefile"/>
        <!-- 节点IP,与nodeNames一一对应 -->
        <PARAM name="backIp1s" value="192.168.1.136"/>
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="db1">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="db1" />
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.1.136"/>
            <PARAM name="sshIp1" value="192.168.1.136"/>

        <!--DBnode-->
        <PARAM name="dataNum" value="1"/>
        <!--数据库端口号-->
        <PARAM name="dataPortBase" value="26000"/>
        <!--数据库主节点上的数据目录,及备机数据目录-->
        <PARAM name="dataNode1" value="/gaussdb/data/db1"/>
        <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

上面加粗部分就是3处名称和3处IP,这是一定要换的。

db1是主机名称,主机名称可以通过命令cat /proc/sys/kernel/hostname或者简化命令hostname获取,ip通过ip a命令获取。其余部分如路径、端口号等配置可自行调整。

使用以下命令,永久性的修改主机名称,重启后能保持修改后的值,将hostname的值修改为db1

hostnamectl set-hostname db1

执行预安装脚本

之前OM解压出工具脚本存放目录/script,直接cd script/ 进入该目录,并执行gs_preinstall命令。

python gs_install -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xml

执行中会出现yes/no,输yes,会对root用户建立互信需要输入root用户的密码。还会创建omm用户并建立互信和设置密码。

当返回Preinstallation succeeded(预安装成功)表明初始化完成

执行安装

更新script文件夹所有权至数据库组omm用户

chown -R omm:dbgrp /opt/software/openGauss/script/

切换为omm用户

su omm

执行gs_install命令,分为内存是否>=8GB两种情况

>=8GB

gs_install -X /opt/software/openGauss/clusterconfig.xml

<8GB

gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--encoding=UTF8"--dn-guc="max_connections=10"--dn-guc="max_process_memory=2GB"--dn-guc="shared_buffers=128MB"--dn-guc="bulk_write_ring_size=128MB"--dn-guc="cstore_buffers=16MB"

安装验证

参考官网安装验证

补充重启问题:

hostname可以修改主机名称,但是reboot重启虚拟机后主机名称又恢复了,导致重启数据库报错,所以重启数据库时记得检查一下hostname保持和配置文件一致

补充远程连接问题:

远程连接例如Navicat使用PostgreSQL远程连接Opengauss时,由于未配置主机信息和未创建初始化用户(非omm)导致无法连接数据库。

修改配置文件

附官网说明配置客户端接入认证 | openGauss文档 | openGauss社区

在数据库主节点上的数据目录(例如我之前配置的是/gaussdb/data/db1)找到2个文件:pg_hba.conf和postgresql.conf

pg_hba.conf最下面的配置需要改动,如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
host    all    omm    192.168.1.136/32    trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all    all    192.168.1.136/32    sha256
host    all    all    0.0.0.0/0         md5
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     omm                                trust
#host    replication     omm        127.0.0.1/32            trust
#host    replication     omm        ::1/128                 trust

监听所有主机所有用户,加密方式为md5:host    all    all    0.0.0.0/0         md5

postgresql.conf改动如下:

修改listen_addresses = '*' 和 local_bind_address = '0.0.0.0'

# - Connection Settings -

listen_addresses = '*'        # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)
local_bind_address = '0.0.0.0'
port = 26000                # (change requires restart)

之前pg_hba.conf加密方式和这里相互影响,修改password_encryption_type = 1

password_encryption_type = 1        #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only

修改完毕后重启数据库让配置生效

gs_om -t restart

创建用户

因为远程连接不允许初始用户omm连接,所以需要自己先在服务器上创建用户。附官网说明使用open Gauss | openGauss文档 | openGauss社区

服务器连接数据库

gsql -d postgres -p 8000

创建用户joe,密码规则:至少包含英文大小写、数字、特殊符号中的3类不同的字符组合。

这里按回车是切换行,新行openGauss-#的#前面是-表示语句未写完,直到检测到了分号“;”才结束并执行语句,千万别忘了分号“;”

而且中途不能输错因为无法回撤和删除,只能Ctrl+C结束语句到新的openGauss=#语句(#前面是=)重新输入。语句成功会返回信息。

openGauss=# CREATE USER joe WITH PASSWORD "xxxxxxxxx";

设置joe用户为系统管理员。

openGauss=# GRANT ALL PRIVILEGES TO joe;

使用新的用户去连接Opengauss的默认数据库postgres,连接成功

补充数据库宕机问题:

服务器因为跳闸断电导致重启,使用命令查看数据库详细状态,数据库直接宕机无法重启

//查询命令
gs_om -t status -h -主机名(我这里是db1)
//显示状态
-----------------------------------------------------------------------

cluster_state             : Unavailable
redistributing            : No

-----------------------------------------------------------------------

node                      : 1
node_name                 : db1
instance_id               : 6001
node_ip                   : 192.168.1.136
data_path                 : /gaussdb/data/db1
instance_port             : 26000
type                      : Datanode
instance_state            : Manually stopped
az_name                   : AZ1
instance_role             : Down

-----------------------------------------------------------------------

Gs Om | openGauss文档 | openGauss社区 表 1 状态说明

字段

字段含义

字段值

cluster_state

openGauss状态。显示openGauss是否运行正常。

  • Normal:表示openGauss可用,且数据有冗余备份。所有进程都在运行,主备关系正常。
  • Unavailable:表示openGauss不可用。
  • Degraded:表示openGauss可用,但数据没有冗余备份。

redistributing

数据重分布状态。

  • Yes:表示openGauss处于数据重分布状态。
  • No:表示openGauss未处于数据重分步状态。

balanced

平衡状态。显示是否有openGauss实例发生过主备切换而导致主机负载不均衡。

  • Yes:表示openGauss处于负载均衡状态。
  • No:表示openGauss未处于负载均衡状态。

node

主机名称。

表示该实例所在的主机名称。多AZ时会显示AZ编号。

node_ip

主机IP。

表示该实例所在的主机IP。

instance

实例ID。

表示该实例的ID。

state

实例状态。

  • P: 节点的初始角色是Primary,数据库安装后就不再变动,从系统静态文件读取。
  • S: 节点的初始角色是Standby,数据库安装后就不再变动,从系统静态文件读取。
  • C: 节点的初始角色是Cascade Standby,数据库安装后就不再变动,从系统静态文件读取。
  • Primary:表示实例为主实例。
  • Standby:表示实例为备实例。
  • Cascade Standby:表示实例为级联备实例。
  • Pending:表示该实例在仲裁阶段。
  • Unknown:表示实例状态未知。
  • Down:表示实例处于宕机状态。

由于Opengauss本质上是PostgreSQL,所以可以搜素PostgreSQL宕机解决方法,在数据库主节点上的数据目录及备机数据目录/gaussdb/data/db1中找到并删除 postmaster.pid 文件(建议剪切到其它地方或者备份)。

原理:当我们启动PostgresSQL时,会在PostgreSQL中的数据文件夹生成postmaster.pid 文件,该文件主要是记录启动时对应的进程号等相关信息,如果该文件已经存在,在启动时,会导致进程号无法对应,最终启动失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值