# 25-NovDB **Repository Path**: openeuler2020/team-1457331983 ## Basic Information - **Project Name**: 25-NovDB - **Description**: 来自昆明理工的咸菜 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-12-28 - **Last Updated**: 2021-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 25-NovDB #### 一. 项目背景介绍 ##### 1.1 openGuass 背景 数据库技术领域,数据库所使用的典型数据模型主要有层次模型、网状数据模型和关系数据库模型。但是由于移动互联网的兴起,数据规模爆炸式增长,单机数据库越来越难以满足用户需求。解决这种问题最直接的方法就是增加机器的数量,将数据库部署在多台机器上,分布式数据库就诞生了。然而分布式数据库存在节点之间通信耗时多、数据安全性和保密性低并且分布式的数据划分、负载均衡、分布式事务处理中和分布式执行技术缺乏创新。 近年来随着AI技术的成熟和发展,AI与数据库技术结合的程度更加紧密了,因此在2019年5月,华为公司发布了全球首款AI原生(AI-Native)数据库——GaussDB,实现了数据库两大革命性突破: (1)该数据库首次将人工智能技术融入分布式数据库的全生命周期中,实现了自运维、自管理、自调优、故障自诊断和自愈。 (2)该数据库通过异构计算创新框架充分发挥x86、ARM、GPU、NPU多种算力优势。 ##### 1.2 gs_om 工具 GaussDB 200提供了gs_om工具帮助对集群进行维护,包括启动集群、停止集群、重启集群、查询集群状态、切换主备实例、管理CN、修改IP、生成静态配置文件、格式化列存文件、升级时间评估、安装,扩容,增加CN、节点替换和温备相关时间评估、管理虚拟IP、SSL证书替换、输出相对表空间路径、启停kerberos认证、ec工具、管理javaUDF文件、删除PostGIS文件、执行日常巡检并上报告警、集群拓扑结构比较、慢节点检测和隔离、显示帮助信息和显示版本号信息等功能。 #### 二. gs_om 功能介绍 通过使用gs_om工具进行节点信息的显示的时候,集群中的节点信息会展示在一行上(即多个节点信息不会分行显示,对使用用户很不友好)。所以基于这些问题,通过对gs_om工具进行优化后,实现了一下功能: (1)通过gs_om查看节点信息的命令(如:gs_om -t status --detail),可以实现将节点的信息分行显示。 (2)为集群中节点信息增加了多个属性(如:id、diskusage),方便用户直观的看到该集群节点的数量和查看集群下各个节点的硬件使用情况。 (3)通过gs_om命令(如:gs_om -t status --detail),可以选择在查看节点信息的同时将信息以文件的形式存储到本地中。 (4)通过gs_om命令(如:gs_om -t status --detail),再(3)功能执行完毕后,可以选择是否需要输出更加详细的节点信息,以方便用户查看。 #### 三. 软件架构 ![集群架构图](https://images.gitee.com/uploads/images/2021/0324/101029_f10ef6a8_1726416.png "image.png") 基本的架构图取决于搭建的集群所用到的服务器个数,这里的架构图采用的是一主两备的数据库集群。主服务器和备服务器会各自对应一个Storage,用于服务器的本地存储资源,持久化存储数据等。 openGauss主(备)的作用则是负责存储业务数据、执行数据查询任务以及向客户端驱动返回执行结果,建议将主、备openGauss都分散部署在不同的物理节点中。 OM是一个运维管理模块,当然里面也会包含gs_om这个数据库服务端工具,主要就是用于对openGauss实例进行管理。客户端驱动的作用是负责接收来自应用的访问请求,并向应用返回执行结果。 客户端驱动负责建立到openGauss实例的链接,把应用的SQL命令传输给openGauss实例,接收openGauss实例命令执行结果。 ![gs_om执行流程图](https://images.gitee.com/uploads/images/2021/0324/101107_40bf1bbf_1726416.png "image (1).png") 在CentOS7下激活集群,集群为一主二备,然后用创建的初始用户omm登录openGauss数据库,由于omm具有root权限,所以可以对gs_om进行修改,修改完毕以后利用脚本工具build.sh进行编译和打包,然后切换到测试用户testUser下对gs_om进行测试,目的是为了保证数据的安全性,如果测试结果与预期结果一致,则表示成功;反之,则再次切换到omm用户下进行代码修改,直至测试成功。 #### 四.安装教程 首先先搭建hadoop集群,推荐一主二备的模式,然后再主机安装openGauss,修改clusterInfo.xml配置文件中的集群名、ip等。 可参考本人csdn博客具体的搭建: 1). https://blog.csdn.net/qq_41619524/article/details/110230996?spm=1001.2014.3001.5501 2). https://blog.csdn.net/qq_41619524/article/details/109722264?spm=1001.2014.3001.5501 #### 五. 使用说明与代码工作即运行结果 ##### 5.1 使用说明 1. 通过输入gs_om -t status ---detail来实现节点信息的换行显示。 扩展功能(这里只提供运行结果,不提供代码): 1. 通过输入gs_om -t status ---detail来展示更加详细的节点信息,如硬件信息,内存使用状态等。 2. 在功能1的基础上,会提示是否需要将节点信息打印(根据提示将文件并输入到指定的文件夹)(如:txt、word等文件类型的文件),通过输入yes或者no来进行指令的确定,然后在指定的用户文件下可以查看到这个文件,文件里面存储的就是节点的信息。 3. 在功能2的基础上,会提示是否需要将各个服务器的硬件信息现实出来,也是通过输入yes或者no来实现功能。 ##### 5.2 代码工作(代码拉取于openGuass的分值openGuass-OM) (1)在项目的script/gspylib/common下设置了测试用例,systemTest.py。用于测试如何将单个节点的系统硬件信息显示出来并且比较哪个能显示更加详细的信息。测试可以通过在该文件夹下,在命令窗口中输入./测试文件名.py (2)在项目script/gspylib/common/DbClusterInfo.py中的queryClsInfo()方法进行修改,添加换行符和属性id,实现集群节点信息的换行显示。 (3)在项目script/gspylib/common下设置了一个configTest.py文件,进行测试获取各个节点的信息(首先要进行连接),你可能测试的时候需要设置一个config文件(用于填写你自己的所搭建的集群名和密码、IP地址等),如果进行了ssh的话,则不需要设置一个config文件,直接修改configTest.py中的主函数的即可,如果输出认证成功这表明连接没有问题,接下来就可以通过(1)中的函数来获取集群总各个节点的信息。 (4)将各个测试文件中的相关代码封装为方法存入到script/gspylib/common/DbClusterInfo.py中进行测试。 ##### 5.3 运行结果 1. 基本功能--集群信息换行显示: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/113922_b73a1635_1726416.png "1.进入omm用户,开启集群.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/113936_8274599a_1726416.png "2.展示集群信息.png") 2. 扩展功能: (1)将节点信息打印成文本的形式,方便用户离线查看: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/113958_362cdbbe_1726416.png "3.1扩展功能:询问用户是否将节点信息打印.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114011_bb4ec12a_1726416.png "3.2打印结果展示.png") (2)将各个集群节点的硬件信息大概的展示出来 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114102_868bac74_1726416.png "4.扩展功能:输出更加详细的集群信息.png") (3)将集群节点的硬件信息打印出来 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114131_85f182c8_1726416.png "5.1将节点的硬件信息打印出来.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114140_b39cabdf_1726416.png "5.2结果展示.png") 3. 基本的测试结果 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114209_5b413a63_1726416.png "测试1.单个节点的基本硬件信息输出.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0411/114219_951f5575_1726416.png "测试2.测试集群中所有硬件信息能否正常展示.png") #### 六. 参与贡献 1. Fork 本仓库 2. 新建 Feat_gs_om 分支 3. 提交代码 4. 新建 Pull Request 5. 对gs_om工具进行了优化 #### 七. 后期工作 1. 将gs_om -t status --detail 中的多个功能单独拆分出来,如将显示节点信息与输入为文件等拆分为多个,即通过不同的命令来执行不同的功能。 2. 将gs_om 工具下的其他功能进行进一步的优化。 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)