openGuassDB介绍及安装实践

33次阅读

共计 10063 个字符,预计需要花费 26 分钟才能阅读完成。

一、openGuass 介绍

openGaussDB(openGauss)是华为云深度交融在数据库畛域多年的教训,联合企业级场景需要,推出的新一代企业级分布式数据库,反对集中式与分布式两种部署状态。在撑持传统业务的根底上,继续构建竞争力个性,为企业面向 5G 时代的挑战,提供了有限可能。(来自华为云官网)。openGauss 于 2019 年 9 月 19 日正式开源,于 2020 年 6 月 30 日正式凋谢源代码,并成立 openGuass 社区。官方网站地址 https://opengauss.org。

openGuass 底层框架源自 PostgreSQL,内建 PostgreSQL 版本为 9.2.4 版本。版本定义在
include/postgresql/server/pg_config.h

/* PostgreSQL version as a string */
#define PG_VERSION "9.2.4"

兼容 Oracle 数据类型和函数
如 varchar2(n) 数据类型
定义在 include/ecpgtype.h

enum ECPGttype {ECPGt_varchar2}

add_months()
定义在 include/postgresql/server/utils/timestamp.h

extern Datum add_months(PG_FUNCTION_ARGS);
1

等。

openGauss 也是一款分布式数据库,外部实现采纳 pgxc 架构。

二、版本及个性介绍

openGauss-1.0.0 为 openGuass 的第一个版本。

版本介绍
数据类型,表,长期表,视图,索引,序列,存储过程,函数,触发器等 SQL 性能;
数据类型,表,长期表,视图,索引,序列,存储过程,函数,触发器等 SQL 性能;
认证,权限治理,网络通信平安,数据库审计等平安个性;
主备双机,物理备份,逻辑备份,极致 RTO 高可用性能;
大并发链接,分区,plan hint,NUMA 化优化高性能能力。

个性介绍
规范 SQL 反对
反对规范的 SQL92/SQL99/SQL2003/SQL2011 标准,反对 GBK 和 UTF- 8 字符集,反对 SQL 规范函数与剖析函数,反对存储过程。
数据库存储管理性能
反对表空间,能够把不同表布局到不同的存储地位。
提供主备双机
事务反对 ACID 个性、单节点故障复原、双机数据同步,双机故障切换等。
利用程序接口
反对规范 JDBC 4.0 的个性、ODBC 3.5 个性。
管理工具
提供装置部署工具、实例启停工具、备份复原工具。
平安治理
反对 SSL 平安网络连接、用户权限治理、明码治理、平安审计等性能,保障数据库在管理层、应用层、零碎层和网络层的安全性。

三、根本架构

openGuass 反对 SQL 2003 语法规范,反对主备部署的高可用关系型数据库。适宜如下场景:

  • 多种存储模式反对合乎业务场景
  • NUMA 化数据结构反对高性能
  • 主备模式,CRC 校验反对高可用

利用场景:
交易型利用
大并发、大数据量、以联机事务处理为主的交易型利用,如电商、金融、O2O、电信 CRM/ 计费等,利用可按需抉择不同的主备部署模式。
物联网数据
在工业监控和近程管制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设施多,采样率高,数据存储为追加模型,操作和剖析并重的场景。

四、装置指南

openGauss 反对单机装置和主备环境装置,此处示例仅仅演示单机装置。
单机环境介绍:
CPU:AMD-2700x
内存:32G
CPU 核数:8 核

4.1 软件依赖环境

#yum install -y libaio-devel\
flex \
bison \
ncurses-devel \
glibc-devel \
patch \
lsb_release

4.2 敞开防火墙和 SELinux

#systemctl stop firewalld
#systemctl disable firewalld
#setenforce 0
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

4.3 禁用 SWAP 内存

#swapoff -av
swapoff /dev/mapper/rhel-swap

4.4 设置网卡 MTU 值
举荐 8192,不小于 1500

[root@opengauss ~]# ifconfig ens33 mtu 8192
[root@opengauss ~]# ifconfig ens33 | grep mtu
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 8192

4.5 理解用户和用户组
为了平安管控,倡议装置用户为自定义用户组,软件包已自带 gs_preinstall 脚本查看,相应用户及用户组会主动创立并创立装置目录

4.6 配置数据库名称及各项目录
openGauss 以 xml 文件读取数据库名称及相应目录

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
  <!-- 整体信息 -->
  <CLUSTER>
  <!-- 数据库名称 -->
    <PARAM name="clusterName" value="opengauss" />  
  <!-- 数据库节点名称(hostname) -->
    <PARAM name="nodeNames" value="opengauss" />
  <!-- 节点 IP,与 nodeNames 一一对应 -->
    <PARAM name="backIp1s" value="10.10.20.173"/>
  <!-- 数据库装置目录 -->
    <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"/>
  <!-- openGauss 类型,此处示例为单机类型,“single-inst”示意单机一主多备部署状态 -->
    <PARAM name="clusterType" value="single-inst"/>
  </CLUSTER>
  <!-- 每台服务器上的节点部署信息 -->
  <DEVICELIST>
      <!-- node1 上的节点部署信息 -->
      <DEVICE sn="1000001">
          <!-- node1 的 hostname -->
          <PARAM name="name" value="opengauss"/>
          <!-- node1 所在的 AZ 及 AZ 优先级 -->
          <PARAM name="azName" value="AZ1"/>
          <PARAM name="azPriority" value="1"/>
          <!-- node1 的 IP,如果服务器只有一个网卡可用,将 backIP1 和 sshIP1 配置成同一个 IP -->
          <PARAM name="backIp1" value="10.10.20.173"/>
          <PARAM name="sshIp1" value="10.10.20.173"/>
          <!--DBnode-->
          <PARAM name="dataNum" value="1"/>
          <!--DBnode 端口号 -->
          <PARAM name="dataPortBase" value="26000"/>
          <!--DBnode 主节点上数据目录,及备机数据目录 -->
          <PARAM name="dataNode1" value="/opt/huawei/install/data/db1"/>
          <!--DBnode 节点上设定同步模式的节点数 -->
          <!--><PARAM name="dataNode1_syncNum" value="0"/><-->    
      </DEVICE>
  </DEVICELIST>
</ROOT>

4.7 筹备装置用户及环境

[root@opengauss openGauss]# cd /opt/software/openGauss/
[root@opengauss openGauss]# chmod 755 -R /opt/software/
[root@opengauss openGauss]# tar -zxf openGauss-1.0.0-CentOS-64bit.tar.gz 
[root@opengauss openGauss]#groupadd dbgrp 
[root@opengauss openGauss]#useradd -G dbgrp omm
export OPENGAUSSHOME=/opt/software/openGauss
export LD_LIBRARY_PATH=${OPENGAUSSHOME}/script/gspylib

4.8 执行查看脚本

[root@opengauss script]# ./gs_preinstall -U omm -G dbgrp -L -X ../clusterconfig.xml 
Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Setting pssh path
Successfully set core path.
Preparing SSH service.
Successfully prepared SSH service.
Checking OS software.
Successfully check os software.
Checking OS version.
Successfully checked OS version.
Creating cluster's path.
Successfully created cluster's path.
Setting SCTP service.
Successfully set SCTP service.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Warning: Installation environment contains some warning messages.
Please get more details by "/opt/software/openGauss/script/gs_checkos -i A -h opengauss --detail".
Set and check OS parameter completed.
Preparing CRON service.
Successfully prepared CRON service.
Setting user environmental variables.
Successfully set user environmental variables.
Setting the dynamic link library.
Successfully set the dynamic link library.
Setting Core file
Successfully set core path.
Setting pssh path
Successfully set pssh path.
Set ARM Optimization.
No need to set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.

4.9 创立主机互信,此处仅建设本机互信即可

[root@opengauss openGauss]#ssh-keygen -t rsa 
[root@opengauss openGauss]#ssh-copy-id root@opengauss

4.10 内核参数配置
内核参数因为是测试环境,跳过配置

4.11 筹备装置

[root@opengauss ~]# su - omm
Last login: Thu Jul  2 01:29:14 CST 2020 on pts/0
[omm@opengauss ~]$ gs_install -X /opt/software/openGauss/clusterconfig.xml 

[root@opengauss script]# su - omm
Last login: Thu Jul  2 01:51:38 CST 2020 on pts/0
[omm@opengauss ~]$ gs_install -X /opt/software/openGauss/clusterconfig.xml 
Parsing the configuration file.
Check preinstall on every node.
Successfully checked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare Install Cluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
The authenticity of host 'opengauss (10.10.20.173)' can't be established.
ECDSA key fingerprint is SHA256:UcIvwt+YzSb4iW7p+TmTNmaOiDT2QDyq5NuQcT2VDKU.
ECDSA key fingerprint is MD5:74:e5:9c:da:88:be:9a:39:b6:7f:f2:6b:3a:48:4f:ad.
Are you sure you want to continue connecting (yes/no)? yes
omm@opengauss's password: 
omm@opengauss's password: 
begin to create CA cert files
The sslcert will be generated in /opt/huawei/install/app/share/sslcert/om
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
omm@opengauss's password: 
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
Successfully started cluster.
Successfully installed application.
end deploy..
[omm@opengauss ~]$

4.12 查看过程

[omm@opengauss ~]$ ps -ef | grep gauss | egrep -v "grep"
omm       35084      1  2 01:52 pts/0    00:00:02 /opt/huawei/install/app/bin/gaussdb -D /opt/huawei/install/data/db1

4.13 登录数据库
openGauss 默认端口和 PostgreSQL 一样为 5432,配置文件中已更改端口为 26000,这也是 openGauss 在配置文件中默认的端口。

[omm@opengauss ~]$ gsql -d postgres -p 26000
gsql ((openGauss 1.0.0 build 0bd0ce80) compiled at 2020-06-30 18:19:27 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

postgres=# ALTER ROLE omm IDENTIFIED BY 'Sungsasung123' REPLACE 'Bigdata@123';
ALTER ROLE
-- 查看版本
postgres=# SELECT version();
                                                                       version                                                                        
------------------------------------------------------------------------------------------------------------------------------------------------------
 (openGauss 1.0.0 build 0bd0ce80) compiled at 2020-06-30 18:19:27 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 8.2.0, 64-bit
(1 row)

postgres=# show server_version;
 server_version 
----------------
 9.2.4

4.14 启动和进行

[omm@opengauss openGauss]$ gs_om -t stop
Stopping cluster.
=========================================
Successfully stopped cluster.
=========================================
End stop cluster.
[omm@opengauss openGauss]$ gs_om -t start
Starting cluster.
=========================================
=========================================
Successfully started.

4.15 查看数据库状态

[omm@opengauss ~]$ gs_om -t status --detail
[Cluster State]

cluster_state   : Normal
redistributing  : No
current_az      : AZ_ALL

[Datanode State]

node         node_ip         instance                             state
--------------------------------------------------------------------------------------
1  opengauss 10.10.20.173    6001 /opt/huawei/install/data/db1 P Primary Normal


[omm@opengauss ~]$ gs_om -t status --all
-----------------------------------------------------------------------

cluster_state             : Normal
redistributing            : No

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

node                      : 1
node_name                 : opengauss

node                      : 1
instance_id               : 6001
node_ip                   : 10.10.20.173
data_path                 : /opt/huawei/install/data/db1
type                      : Datanode
instance_state            : Primary
static_connections        : 0
HA_state                  : Normal
reason                    : Normal
sender_sent_location      : 0/0
sender_write_location     : 0/0
sender_flush_location     : 0/0
sender_replay_location    : 0/0
receiver_received_location: 0/0
receiver_write_location   : 0/0
receiver_flush_location   : 0/0
receiver_replay_location  : 0/0
sync_state                : Async

4.16 查看数据库性能

[omm@opengauss ~]$ gs_checkperf
Cluster statistics information:
    Host CPU busy time ratio                     :    .50        %
    MPPDB CPU time % in busy time                :    61.06      %
    Shared Buffer Hit ratio                      :    96.73      %
    In-memory sort ratio                         :    0
    Physical Reads                               :    448
    Physical Writes                              :    92
    DB size                                      :    28         MB
    Total Physical writes                        :    92
    Active SQL count                             :    3
    Session count                                :    4

4.17 装置目录架构介绍

[omm@opengauss opt]$ tree -d -L 3 huawei/
huawei/
├── corefile   #core 文件寄存目录,相似于 pg 中的 core 文件,用于数据库 crash 追踪
├── install
│   ├── app -> /opt/huawei/install/app_0bd0ce80   #数据库装置门路,为 app_0bd0ce80 的软连贯
│   ├── app_0bd0ce80
│   │   ├── bin #数据库命令执行门路
│   │   ├── etc #数据库配置门路(如 kerberos 门路和云上 obs 映射区域配置)│   │   ├── include #数据库头文件
│   │   ├── lib #动态链接库
│   │   └── share #共享目录库(包含 pg 扩大和 ssl 根证书文件)
│   ├── data #数据目录
│   │   └── db1 #数据库文件目录
│   └── om #运维治理目录
│       ├── lib #执行脚本应用库
│       └── script #工具脚本门路
└── tmp

五、后记

openGauss 装置 x86_64 仅反对 CentOS 7.6 版本以下操作系统,本次测试装置的操作系统版本为 RedHat 7.8,因而在执行 gs_preinstall 脚本时无奈检测通过。那是不是就不能够在 RedHat 操作系统和 7.6 以上的版本无奈装置呢?不是,能够通过批改零碎版本的形式 /etc/redhat-release 骗过查看。然而下一步又会出错,因为它会去查看安数据库装包,数据库安装包是以 openGauss-1.0.0-CentOS-64bit.tar.bz2 命名的,所以无奈查看通过,该问题能够通过 mv 命令将 CentOS 更改为 RedHat 即可通过。再次执行会去找 openGauss-1.0.0-CentOS-64bit.sha256 校验文件。因为数据库文件曾经做了批改,此处以同样形式批改 openGauss-1.0.0-CentOS-64bit.sha256 为 openGauss-1.0.0-RedHat-64bit.sha256 文件即可。

正文完
 0