猿创征文 | 国产数据库之OpenGauss数据库详解安装和使用

1、OpenGauss简介

openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。

openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。openGauss网站 (https://opengauss.org/zh/ ) 提供了有关openGauss软件的最新信息。

  • openGauss是一个数据库管理系统。

    数据库是结构化的数据集合。它可以是任何数据,购物清单、图片库或公司网络中的大量信息。要添加、访问和处理存储在计算机数据库中的海量数据,您需要一个数据库管理系统(DBMS)。数据库管理系统可以对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。由于计算机非常擅长处理大量数据,因此数据库管理系统可以作为独立程序使用,也可以作为其他应用程序的一部分在计算中发挥着核心作用。

  • openGauss数据库是关系型的。

    关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。行和列被称为表,一组表组成了数据库。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

    openGauss的SQL部分代表 “结构化查询语言”。SQL是最常用的用于访问和处理数据库的标准计算机语言。根据您的编程环境,您可以直接输入SQL、将SQL语句嵌入到以另一种语言编写的代码中,或者使用包含SQL语法的特定语言 API。

    SQL由ANSI/ISO SQL标准定义。SQL标准自1986年以来一直在发展,并且存在多个版本。本手册中,“SQL92”是指1992年发布的标准,“SQL99”是指1999年发布的标准,“SQL2003”是指2003年发布的标准。“SQL2011”是指该标准的当前版本。openGauss支持标准的SQL92/SQL99/SQL2003/SQL2011规范。

  • openGauss软件是开源的。

    开源意味着任何人都可以使用和修改软件。任何人都可以下载openGauss软件并使用它,而无需支付任何费用。如果您愿意,您可以研究源代码并对其进行更改以满足您的需要。openGauss软件使用木兰宽松许可证V2(http://license.coscl.org.cn/MulanPSL2/)来定义软件的使用范围。

2、OpenGauss系统架构

openGauss是单机系统,在这样的系统架构中,业务数据存储在单个物理节点上,数据访问任务被推送到服务节点执行,通过服务器的高并发,实现对数据处理的快速响应。同时通过日志复制可以把数据复制到备机,提供数据的高可靠和读扩展。

OpenGauss逻辑架构图:
在这里插入图片描述架构说明

名称 描述
OM 运维管理模块(Operation Manager)。提供数据库日常运维、配置管理的管理接口、工具。
CM 数据库管理模块(Cluster Manager)。管理和监控数据库系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。
客户端驱动 客户端驱动(Client Driver)。负责接收来自应用的访问请求,并向应用返回执行结果。客户端驱动负责与openGauss实例通信,发送应用的SQL命令,接收openGauss实例的执行结果。
openGauss(主备) openGauss主备(Datanode)。负责存储业务数据、执行数据查询任务以及向客户端返回执行结果。
openGauss实例包含主、备两种类型,支持一主多备。建议将主、备openGauss实例分散部署在不同的物理节点中。
Storage 服务器的本地存储资源,持久化存储数据。

3、OpenGauss特点

  • 高性能

    通过列存储、向量化执行引擎、融合引擎等关键技术,实现百亿数据量查询秒级响应。

  • 高可用

    同城跨AZ(Available Zone)容灾,数据不丢失,分钟级恢复。

  • 高安全性

    支持访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。

  • 高可靠
    闪回和回收站

    通常在表数据被错误的UPDATE、DELETE、TRUNCATE和DROP时数据难以恢复,即便恢复也仅能通过PITR(Point-in-time recovery,基于时间点恢复)的方式恢复到错误操作前的时刻。这种修复方式会导致整个数据库不可用,并且一些用户不希望“撤销”的表操作也同样会被“撤销”。openGauss对TIMECAPSULE以及RECYCLEBIN的支持,使用户可以通过指定时间戳进行闪回查询,或者指定时间戳对表进行闪回,获取到错误DELETE、UPDATE前的历史数据。通过从RECYCLEBIN中闪回TRUNCATE、以及DROP的表对象,用户可以将表数据恢复到错误操作前,大大提高了用户数据的可靠性。

  • 可维护性好

    支持WDR诊断、慢SQL诊断、Session诊断等多种维护手段,准确快速定位问题。具备AI4DB能力,能够通过AI算法实现数据库自调优、自监控、自诊断等。

4、OpenGauss基本概念

openGauss是一款关系型数据库管理系统(RDBMS)。关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。

openGauss的数据库节点负责存储数据,其存储介质也是磁盘。逻辑视角下,可以看到数据库节点上对象包含表空间、数据库、数据文件、表、数据块。

对象之间的关系:
在这里插入图片描述

  • 数据库(Database)

    数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。

    数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。

  • 数据块(Block)

    数据块是数据库管理的基本单位,默认大小为8KB。

  • 行(Row)

    一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

  • 列(Cloumn)

    每一列被当作是一个字段。每个字段中的值代表一种类型的数据。例如,一个表可能有3个字段,姓名、城市和国家。这个表就会有3列,一列代表姓名,一列代表城市,一列代表国家。表中的每一行包含3个字段的内容,姓名字段包含姓名,城市字段包含城市,国家字段包含国家。

  • 表(Table)

    表是由行与列组合成的,是数据库中用来存储数据的对象,是整个数据库系统的基础。

    每张表只能属于一个数据库,也只能对应到一个表空间。每张表对应的数据文件必须在同一个表空间中。

  • 数据文件(Datafile Segment)

    通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。

  • 表空间(Tablespace)

    在openGauss中,表空间是一个目录,在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。

    表空间可以存在多个,创建好之后,创建数据库对象时可以指定该对象所属的表空间。

  • 模式(Schema)

    数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引及数据库链接。

  • 事务(Transaction)

    数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

    同时,事务也是恢复和并发控制的基本单位,必须具备ACID特性,即:

    • 原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
    • 一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
    • 隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    • 持久性(Durability):持久性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

5、OpenGauss应用场景

  • 交易型应用

    大并发、大数据量、以联机事务处理为主的交易型应用,如电商、金融、O2O、电信CRM/计费等,应用可按需选择不同的主备部署模式。

  • 物联网数据

    在工业监控和远程控制、智慧城市的延展、智能家居、车联网等物联网场景下,传感监控设备多,采样率高,数据存储为追加模型,操作和分析并重的场景。

6、OpenGauss的安装

6.1、获取安装包

1、下载安装包。
登录openGauss开源社区,选择对应平台的最新安装包下载。对于个人开发者或非企业级环境,下载极简安装包(不安装OM等组件)即可。
单击“下载”。

2、检查安装包。

解压安装包,检查安装目录及文件是否齐全。在安装包所在目录执行以下命令:

mkdir openGauss
tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 –C openGauss
ls -lb openGauss/

执行ls命令,显示类似如下信息:

total 90296
drwx------ 3 root root     4096 Mar 31 21:18 bin
drwx------ 3 root root     4096 Mar 31 21:18 etc
drwx------ 3 root root     4096 Mar 31 21:18 include
drwx------ 4 root root     4096 Mar 31 21:18 jre
drwx------ 5 root root     4096 Mar 31 21:18 lib
drwx------ 5 root root     4096 Mar 31 21:18 share
drwx------ 2 root root     4096 Mar 31 21:18 simpleInstall
-rw------- 1 root root       32 Mar 31 21:18 version.cfg

6.2、软硬件安装环境

本章节描述安装前需要进行的环境准备。建议部署openGauss的各服务器具有等价的软硬件配置。

1、硬件环境要求

硬件环境要求列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。

项目 配置描述
内存 功能调试建议32GB以上。
性能测试和商业部署时,单实例部署建议128GB以上。
复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。
CPU 功能调试最小1×8 核 2.0GHz。
性能测试和商业部署时,建议1×16核 2.0GHz。
CPU超线程和非超线程两种模式都支持。

说明:
个人开发者最低配置2核4G, 推荐配置4核8G。
目前,openGauss仅支持ARM服务器和基于X86_64通用PC服务器的CPU。
硬盘 用于安装openGauss的硬盘需最少满足如下要求:
至少1GB用于安装openGauss的应用程序。
每个主机需大约300MB用于元数据存储。
预留70%以上的磁盘剩余空间用于数据存储。
建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。

openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。
网络要求 300兆以上以太网。
建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。

2、软件环境要求

软件类型 配置描述
Linux操作系统 ARM:
openEuler 20.3LTS(推荐采用此操作系统)
麒麟V10
Asianux 7.5
X86:
openEuler 20.3LTS
CentOS 7.6
Asianux 7.6

说明:
当前安装包只能在英文操作系统上安装使用。
Linux文件系统 剩余inode个数 > 15亿(推荐)
工具 bzip2

3、软件依赖要求

openGauss的软件依赖要求所下所示。

建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。

所需软件 建议版本
libaio-devel 建议版本:0.3.109-13
flex 要求版本:2.5.31 以上
bison 建议版本:2.7-4
ncurses-devel 建议版本:5.9-13.20130511
glibc-devel 建议版本:2.17-111
patch 建议版本:2.7.1-10
redhat-lsb-core 建议版本:4.1
readline-devel 建议版本:7.0-13
libnsl(openEuler+x86环境中) 建议版本 :2.28-36

6.3、单节点安装

1、创建用户组dbgroup。

groupadd dbgroup

2、创建用户组dbgroup下的普通用户omm,并设置密码为Gauss_234 。

useradd -g dbgroup omm
passwd Gauss_234

3、使用omm用户登录到openGauss包安装的主机,解压openGauss压缩包到安装目录(假定安装目录为/opt/software/openGauss,请用实际值替换)。

tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/openGauss

4、假定解压包的路径为/opt/software/openGauss,进入解压后目录下的simpleInstall。

cd /opt/software/openGauss/simpleInstall

5、执行install.sh脚本安装openGauss。

sh install.sh  -w xxxx 

上述命令中,-w是指初始化数据库密码(gs_initdb指定),安全需要必须设置。

6、安装执行完成后,使用ps和gs_ctl查看进程是否正常。

ps ux | grep gaussdb
gs_ctl query -D /opt/software/openGauss/data/single_node

执行ps命令,显示类似如下信息:

omm      24209 11.9  1.0 1852000 355816 pts/0  Sl   01:54   0:33 /opt/software/openGauss/bin/gaussdb -D /opt/software/openGauss/single_node
omm      20377  0.0  0.0 119880  1216 pts/0    S+   15:37   0:00 grep --color=auto gaussdb

执行gs_ctl命令,显示类似如下信息:

gs_ctl query ,datadir is /opt/software/openGauss/data/single_node
HA state:
    local_role                     : Normal
    static_connections             : 0
    db_state                       : Normal
    detail_information             : Normal
    
Senders info:
    No information
        
 Receiver info:
No information 

6.4、一主一备节点安装

1、创建用户组dbgroup。

groupadd dbgroup

2、创建用户组dbgroup下的普通用户omm,并设置密码为Gauss_234 。

useradd -g dbgroup omm
passwd Gauss_234

3、使用omm登录到包安装的主机,解压openGauss压缩包到安装目录(假定安装目录为/opt/software/openGauss,请用实际值替换)。

tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/openGauss

4、假定解压包的路径为/opt/software/openGauss,进入解压后目录下的simpleInstall。

cd /opt/software/openGauss/simpleInstall

5、执行install.sh脚本安装openGauss。

sh install.sh  -w xxxx  --multinode

上述命令中,-w是指初始化数据库密码(gs_initdb指定),安全需要必须设置。

6、安装执行完成后,使用ps和gs_ctl查看进程是否正常。

ps ux | grep gaussdb
gs_ctl query -D /opt/software/openGauss/data/master

执行ps命令,显示类似如下信息:

omm  4879 11.8 1.1 2082452 373832 pts/0  Sl   14:26   8:29 /opt/software/openGauss/bin/gaussdb -D /opt/software/openGauss/data/master -M primary        
omm  5083  1.1  0.9 1819988 327200 pts/0  Sl   14:26   0:49 /opt/software/openGauss/bin/gaussdb -D /opt/software/openGauss/data/slave -M standby    
omm  20377  0.0  0.0 119880  1216 pts/0    S+   15:37   0:00 grep --color=auto gaussdb

执行gs_ctl命令,显示类似如下信息:

gs_ctl query ,datadir is /opt/software/openGauss/data/master
HA state:
    local_role                     : Primary
    static_connections             : 1
    db_state                       : Normal
    detail_information             : Normal
    
Senders info:
    sender_pid                     : 5165
    local_role                     : Primary
    peer_role                      : Standby
    peer_state                     : Normal
    state                          : Streaming
    sender_sent_location           : 0/4005148
    sender_write_location          : 0/4005148
    sender_flush_location          : 0/4005148
    sender_replay_location         : 0/4005148
    receiver_received_location     : 0/4005148
    receiver_write_location        : 0/4005148
    receiver_flush_location        : 0/4005148
    receiver_replay_location       : 0/4005148
    sync_percent                   : 100%
    sync_state                     : Sync
    sync_priority                  : 1
    sync_most_available            : Off
    channel                        : 10.244.44.52:27001-->10.244.44.52:35912
        
 Receiver info:
No information 

猜你喜欢

转载自blog.csdn.net/flq18210105507/article/details/127222570