目录
报错[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 状态说明
由于Opengauss本质上是PostgreSQL,所以可以搜素PostgreSQL宕机解决方法,在数据库主节点上的数据目录及备机数据目录/gaussdb/data/db1中找到并删除 postmaster.pid 文件(建议剪切到其它地方或者备份)。
原理:当我们启动PostgresSQL时,会在PostgreSQL中的数据文件夹生成postmaster.pid 文件,该文件主要是记录启动时对应的进程号等相关信息,如果该文件已经存在,在启动时,会导致进程号无法对应,最终启动失败。