zl程序教程

您现在的位置是:首页 >  系统

当前栏目

国产数据库OpenGauss--在CentOS7.x系统中安装单节点集群、验证及简单数据管理

2023-09-11 14:16:24 时间

OpenGauss介绍

openGauss是一款支持SQL2003标准语法,支持主备部署的高可用关系型数据库。

  • 产品: OLTP、企业级特性、自研比例超80%
  • 使用场景: 国产化领域,普遍适用于各行业的交易系统
  • 社区: 开放代码、开源社区、共治共享
  • 知识产权: 木兰宽松许可证,无重大知识产权风险
  • 风险: 代码完全国人管控,彻底解决断供风险
    在这里插入图片描述

OpenGauss 单节点集群安装

推荐采用的操作系统是:openEuler 20.03LTS
如果是Centos系统,则只支持CentOS 7.6

安装环境

  • CPU: 2 * Intel® Xeon® CPU E5-2680 v4 @ 2.40GHz
  • 内存:256G 内存
  • 操作系统:CentOS7.9

软件环境准备

参见:准备软硬件安装环境

设置主机名并配置/etc/hosts文件

hostnamectl set-hostname 新主机名
systemctl restart systemd-hostnamed

关闭防火墙

systemctl disable firewalld.service
systemctl stop firewalld.service

设置字符集、时区和时间

vim /etc/profile
export LANG=zh_CN.UTF-8

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

关闭SELinux

vi /etc/selinux/config
SELINUX=enforcing修改为SELINUX=disabled


sed -i 's/enforcing/disabled/g' /etc/selinux/config

注意:SELINUXTYPE配置不需要修改

设置网卡的mtu

将各数据库节点的网卡MTU值设置为相同大小。对于x86,MTU值推荐1500;对于ARM,MTU值推荐8192。

  • 查看网卡的配置:cat /etc/sysconfig/network-scripts/ifcfg-网卡编号
  • 查看网卡的mtu值 ip addr show 网卡编号
  • 临时修改:ifconfig 网卡编号 mtu 值
  • 永久修改:在/etc/sysconfig/network-scripts/ifcfg-网卡编号配置文件中添加``,然后重启网卡service network restart
    在这里插入图片描述

关闭RemoveIPC

在各数据库节点上,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤
当一个user 完全退出os之后,remove掉所有的IPC objects。该特性由/etc/systemd/logind.conf参数文件中RemoveIPC选项来控制。
可以增加RemoveIPC=no避免删除。

  • 修改以下2个配置文件
    vim /etc/systemd/logind.conf
    vim /usr/lib/systemd/system/systemd-logind.service
    修改“RemoveIPC”值为“no”。
    RemoveIPC=no
  • 重新加载配置
    systemctl daemon-reload
    systemctl restart systemd-logind
  • 检查修改是否生效
    loginctl show-session | grep RemoveIPC
    systemctl show systemd-logind | grep RemoveIPC

设置root用户远程登录

vim /etc/ssh/sshd_config

  • 将​#PermitRootLogin no修改为PermitRootLogin yes
  • 注释掉“Banner”所在的行
  • 重启 systemctl restart sshd.service
sed -i '/Banner/s/^/#/' /etc/ssh/sshd_config
sed -i '/PermitRootLogin/s/^/#/' /etc/ssh/sshd_config
echo "Banner none" >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

关闭swap交换内存【可选】

swapoff -a

sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

设置系统版本【可选】

如果Centos的版本不是7.6,如是7.9,则需要将系统版本修改为7.6
echo "CentOS Linux release 7.6.1810 (Core)">/etc/centos-release


修改script/gspylib/os/gsplatform.py文件中SUPPORT_RHEL7X_VERSION_LIST位置,增加7.7-7.9版本的支持,["7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "7.7", "7.8", "7.9", "10"]

其它参数设置

cat << EOF >>/etc/sysctl.conf
net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_synack_retries = 5
net.ipv4.ip_local_port_range = 26000-65535
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1 
vm.overcommit_ratio = 90
vm.extfrag_threshold = 500
net.sctp.path_max_retrans = 10
net.sctp.max_init_retransmits = 10
EOF

cat << EOF >>/etc/systemd/system.conf
DefaultLimitNOFILE=1000000
DefaultLimitNPROC=unlimited
EOF

#文件系统参数,stack指线程堆栈大小
echo "* soft stack 3072" >> /etc/security/limits.conf
echo "* hard stack 3072" >> /etc/security/limits.conf
echo "* soft nofile 1000000" >> /etc/security/limits.conf
echo "* hard nofile 1000000" >> /etc/security/limits.conf
#系统支持的最大进程数设置,centos不需要
#echo "* soft nproc unlimited" >> /etc/security/limits.d/90-nproc.conf

#关闭transparent_hugepage
cat << EOF >>/etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
    echo never >/sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
    echo never >/sys/kernel/mm/transparent_hugepage/defrag
fi
EOF

chmod +x /etc/rc.d/rc.local
/usr/bin/sh /etc/rc.d/rc.local

创建用户组及用户

groupadd dbgrp && useradd -g dbgrp omm

重启系统

shutdown -r now

安装步骤

上传并解压文件

上传openGauss-2.1.0-CentOS-64bit-all.tar.gz到/tmp/gauss目录

tar -zxvf openGauss-2.1.0-CentOS-64bit-all.tar.gz
tar -zxvf openGauss-2.1.0-CentOS-64bit-om.tar.gz
tar -jxvf openGauss-2.1.0-CentOS-64bit.tar.bz2

数据库配置文件准备

创建/tmp/gauss/cluster_config.xml,
内容如下:

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

            <!--dbnode-->
            <PARAM name="dataNum" value="1"/>
            <!--数据库端口号-->
            <PARAM name="dataPortBase" value="16001"/>
            <!--数据库主节点上的数据目录-->
            <PARAM name="dataNode1" value="/data1/opengauss/data/dn"/>
            <!--用于指定当前数据库中同步模式的节点数目。取值范围为0~数据库备机节点数。-->
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

初始化安装环境及检查

-L指Only perform preinstallation on local nodes

/tmp/gauss/script/gs_preinstall -U omm -G dbgrp -L -X /tmp/gauss/cluster_config.xml
/tmp/gauss/script/gs_checkos -i A --detail

可以根据gs_checkos 检查的结果,针对性的针对系统参数进行调整。

注意:

  • 确保python版本是正确的,script/gspylib/common/CheckPythonVersion.py
  • 检查hostname与/etc/hostname是否一致,否则会导致预安装检查失败
  • 若为共用环境需加入–sep-env-file=ENVFILE参数分离环境变量,避免与其他用户相互影响,文件可以是空文件
  • 可使用脚本script/gs_sshexkey创建多个服务器间的用户相信
  • 针对操作系统参数的调整请参见初始化安装环境–操作系统参数

安装单节点数据库

chmod 777 /tmp/gauss
su - omm
gs_install -X /tmp/gauss/cluster_config.xml --gsinit-parameter="--locale=zh_CN.UTF-8"

注意:

  • 在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。
    • 数据库密码最少包含8个字符
    • 至少包含大写字母(A-Z),小写字母(a-z),数字,非字母数字字符(限定为~!@#$%^&*()-_=+|[{}];:,<.>/?)四类字符中的三类字符
  • 安装成功后,请删除root用户的互信(rm –rf ~/.ssh)
  • 错误排查:可以在日志目录下查看预安装及安装过程的日志
    在这里插入图片描述

数据库软件卸载

su - omm
/tmp/gauss/script/gs_uninstall --delete-data -L

## 删除安装的文件及数据目录
rm -rf /opt/huawei
rm -rf /data1/opengauss/

OpenGauss 数据库操作

使用omm用户操作
详见: 简单数据管理

初始化数据库及SQL操作

gsql -d postgres -p 16001
--修改omm密码
ALTER ROLE omm PASSWORD 'omm@1234';
--ALTER ROLE omm IDENTIFIED BY 'omm@1234' REPLACE 'omm@2022';
--create database test with encoding 'UTF8' template=template0;
--创建角色与数据库
CREATE ROLE test LOGIN PASSWORD 'test@123';
CREATE DATABASE test OWNER test ENCODING 'UTF8' template=template0;

-- 创建用户
create user tpcc identified by 'test@123' profile default; 
--修改角色和赋权限
alter user tpcc sysadmin; 
grant all privilege to tpcc;
create database tpccdb encoding 'UTF8' template=template0 ;

--切换到test数据库
\c test
--创建表
create table TEST (Id INTEGER,Name VARCHAR(50));
--插入及更新数据
insert into test values(1,'张三');
insert into test (id,name)values(1,'王五');
insert into test (id,name)values(2,'zhangsan');
update test set name='中国人' where id=1;
--查询数据
select * from test;
--分析表
analyse test;
--查看表占用空间
select pg_relation_size('test');
select pg_size_pretty(pg_total_relation_size('test'));

连接数据库

gsql -d test -p 16001  -U omm -W omm@1234 -r
gsql -d test -p 16001  -U test -W test@123 -r

注意:
需要指定-r参数,指定Output format 使用libedit,否则光标键前移会达不到预期的效果,即不能输入的内容再进行编辑

数据库启停

  • 查看状态 gs_om -t status gs_om -t status --detail
  • 启动 gs_om -t start
  • 停止 gs_om -t stop
-----------------------------------------------------------------------
cluster_name    : OpenGaussTest
cluster_state   : Normal
redistributing  : No
-----------------------------------------------------------------------

数据库参数设置

设置最大连接数

gs_guc set -N all -I all -c "max_connections = 800"

设置远程连接

详见gsql客户端连接

默认配置是不能远程访问,只能在本机访问
修改DN的配置文件pg_hba.conf
配置文件位于:当前主机上的数据库节点的数据存储目录如/opt/huawei/install/data/dn

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               sha256

或通过命令设置

gs_guc set -N all -I all -h "host all all 0.0.0.0/0 sha256"

如何通过dbeaver访问

  • 下载对应操作系统的jdbc驱动包,下载地址
  • 新增jdbc驱动OpenGauss,配置见下图,jdbc驱动包使用下载的那个postgresql.jar
  • 使用新增的驱动,创建数据库连接
    在这里插入图片描述

遇到的问题

FATAL: could not create listen socket for

解决方案:修改DN的配置文件postgresql.conf
默认配置的有问题,默认情况下:listen_addresses = 'localhost, 172.25.x.x'
配置文件位于:当前主机上的数据库节点的数据存储目录如/opt/huawei/install/data/dn

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 = '172.25.xx.xx'
port = 16001                            # (change requires restart)

omm用户找不到python3

解决方案:在omm安装Python 3.6.X以上的版本 或 配置环境变量

netifaces/netifaces.so cannot open shared

解决方案:缺少python的netifaces包,pip install netifaces