SpringBoot + openGauss开发入门

本文介绍如何快速安装 openGauss

单机版 openGauss 快速环境安装

groupadd dbgroup
useradd -g dbgroup omm # 可后面安装时创建
passwd omm  #设置密码为Gauss_1234

创建安装程序目标目录

mkdir  /home/omm/opengauss3
chown -R omm:dbgroup /home/omm/opengauss3

下载 opengauss3.0.0

mkdir  /opengauss3
cd   /opengauss3
wget  https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-64bit-all.tar.gz

解压文件

tar -zvxf openGauss-3.0.0-CentOS-64bit-all.tar.gz
tar zxvf   openGauss-3.0.0-CentOS-64bit-cm.tar.gz
tar zxvf   openGauss-3.0.0-CentOS-64bit-om.tar.gz

设置 opengauss 集群配置文件,这里设单点安装

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

前置系统软件包

yum install -y epel-release
yum install -y bzip2 # 安装bzip2用于后面的解压openGauss安装包
sed  -i 's/源IP/目标IP/g'  cluster_config.xml
sed  -i 's/hdp1/你的主机名/g'  cluster_config.xml

初始化系统安装配置参数,以必须管理员 root 的权限运行,进入 opengauss3 运行初始化程序

[root@hdp1 ~]# cd /opengauss3/
[root@hdp1 opengauss3]# ./script/gs_preinstall   -U omm -G dbgroup -X  ./cluster_config.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 host ip env
Successfully set host ip env.
Are you sure you want to create the user[omm] (yes/no)? no
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.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Warning: Installation environment contains some warning messages.
Please get more details by "/opengauss3/script/gs_checkos -i A -h hdp1 --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.
Setting Cgroup.
Successfully set Cgroup.
Set ARM Optimization.
No need to set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.

下面要以 omm 的用户正式运行安装程序,首先必须把权限赋给 omm

chown -R omm:dbgroup   /opengauss3切换到 omm,在/opengauss3目录下运行安装目录
[root@hdp1 opengauss3]# su  omm
[omm@hdp1 opengauss3]$   ./script/gs_install -X  ./cluster_config.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:
begin to create CA cert files
The sslcert will be generated in /home/omm/opengauss3/install/app/share/sslcert/om
NO cm_server instance, no need to create CA for CM.
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..

验证服务进程是否激 活

[root@hdp1 ~]# ps -eaf | grep omm
root     14898 32160  0 15:55 pts/1    00:00:00 su omm
omm      14899 14898  0 15:55 pts/1    00:00:00 bash
omm      19411     1  9 16:08 ?        00:00:02 /home/omm/opengauss3/install/app/bin/gaussdb -D
/home/omm/opengauss3/install/data/dn
root     19784   360  0 16:09 pts/2    00:00:00 grep --color=auto omm

命令行登录

gsql -d postgres -p 15400

安装 openGauss 注意事项

之前安装 mogdb,影响了 opengauss3 的环境,/home/omm/.bashrc 里面记录了安装后的变量,如果要卸载 opengauss,必须要把.bashrc 下面所有的东西都去掉。

# User specific aliases and functions
export GPHOME=/home/omm/opengauss3/install/om
export PATH=$GPHOME/script/gspylib/pssh/bin:$GPHOME/script:$PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export GAUSSHOME=/home/omm/opengauss3/install/app
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export S3_CLIENT_CRT_FILE=$GAUSSHOME/lib/client.crt
export GAUSS_VERSION=3.0.0
export PGHOST=/home/omm/opengauss3/tmp
export GAUSSLOG=/var/log/omm/omm
umask 077
export GAUSS_ENV=2
export GS_CLUSTER_NAME=dbCluster

springBoot 应用集成 OpenGauss

SOA 是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA 可以看作是 B/S 模型、XML(标准通用标记语言的子集)/Web Service 技术之后的自然延伸,面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是 SOA 的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

简而言之SOA 可以消除信息孤岛并实现共享业务重用,我们通过 SOA 可以打造下图的复杂系统,其中蓝色用户服务 ,我们可以通过springboot + OpenGauss 技术实现。

我们使用 OpenGauss 作为具体数据存储,使用开发工具创建一个数据库 mysqltest,并在 mysqltest 数据库中创建一张表 userennity 和 user1,创建语句如下:

create table   userentity(id int ,username  varchar(50),password  varchar(50),user_sex  varchar(10),nick_name  varchar(50)
);create table  user1(id int ,name  varchar(50),password  varchar(50));

DEMO 代码
+—-src
| +—-main
| | +—-java
| | | -—com
| | | -—main
| | | +—-controler 具体业务逻辑
| | | +—-mapper 定义实现 DAO 的 CRUD 实体操作
| | | +—-model 实体类
| | | -—service 实现服务类

注意 UserControler 是首先调用的 service,继而去调用实体操作。

而 UserEntityControler 是通过 mapper 的封装去调用 DAO 的 CRUD 的操作

无论是 UserControler 还是 UserEntityControler 都需要底层数据库对应用支持友好。
确定 opengauss 的用户、密码、端口及相关 IP

启动服务

服务正在运行中

查看用户实体 1

查看用户实体 2

springboot 集成 openGauss 的 FAQ

用户名/密码不对

spring 报错

### The error may involve com.main.mapper.UserMapper.getAll
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException:
Failed to obtain JDBC Connection; nested exception is org.postgresql.util.PSQLException:
不明的原因导致驱动程序造成失败,请回报这个例外。] with root cause
java.lang.NullPointerException: null

而 opengauss 内部执行报错

[omm@enmoedu1 ~]$ gsql -U  henley -h  ***.***.***.*** -p  15400
Password for user henley:
gsql: FATAL:  Invalid username/password,login denied.

根本原因分析
openGauss 默认是 sha256,而登录则设成只允许 md5 登录,所以一直识用户名和密码错误

解决方法及步骤
vi /home/omm/opengauss3/install/data/dn/postgresql.conf
修改设置
encryption_type = 1

vi /home/omm/opengauss3/install/data/dn/pg_hba.conf

增加设置
host all henley .../0 md5

用户没有对表的操作权限

spring 报错

org.postgresql.util.PSQLException: ERROR: permission denied for relation userentity详细:N/A

openGauss 报错

mytest=> SELECT                   id, userName, passWord, user_sex, nick_name           FROM userentity;
ERROR:  permission denied for relation userentity
DETAIL:  N/A

解决方法及步骤

以 postgres 的身份登录 root

[omm@enmoedu1 ~]$ gsql -d postgres -p 15400
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

切换到指定的数据库

openGauss=# \c mytest;
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "mytest" as user "omm".

执行授权

mytest=# GRANT ALL PRIVILEGES ON  userentity  TO henley;
GRANT

授权后能够正常,但是发现一个问题,现在我们是通过 Postgresql 的 jdbc 驱动去访问 OpenGauss 的,OpenGauss 没有自己的原生 jdbc 驱动吗?答案是有的,而且还支持 maven 方式,见下。

        <!-- 加载jdbc连接数据库 --><!--<dependency>--><!--<groupId>org.opengauss</groupId>--><!--<artifactId>opengauss-jdbc</artifactId>--><!--</dependency>--><!--<dependency>--><!--<groupId>org.bouncycastle</groupId>--><!--<artifactId>bcprov-jdk15on</artifactId>--><!--<version>1.70</version>--><!--</dependency>-->

但是笔者的运气很差,通过 maven 一直无法下载 openGauss 的 core 包,只能通过手动的方式下载。

wget  https://opengauss.obs.cn-south-1.myhuaweicloud.com/
3.0.0/x86/openGauss-3.0.0-JDBC.tar.gz

再在 idea 把 jar 包引入进来,引入步骤 Project Structure —> Project Settings —> Libraries —> Add(alt +insert) —> apply

application.properties 稍微修改一下
==spring.datasource.url=jdbc:opengauss://...:15400/mytest==
==spring.datasource.driver-class-name=org.opengauss.Driver==

#spring.datasource.url=jdbc:postgresql://XXXX:5432/mytest
#spring.datasource.url=jdbc:postgresql://XXXX:15400/mytest
spring.datasource.url=jdbc:opengauss://XXXX:15400/mytest
spring.datasource.username=henley
spring.datasource.password=XXXX
spring.datasource.driver-class-name=org.opengauss.Driver
#spring.datasource.driver-class-name=org.postgresql.Driver
### mybatis config ###
mybatis.config-locations=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.type-aliases-package=com.main.model

最后总结

openGauss 对业界知名的 spring 支持还算友好,直接用传统的 postgresql 驱动就可以接入使用,也有自己的 opengauss 驱动。如果使用顺利,还可以支持分布式配置、服务路由、负载均衡、熔断限流、链路监控这些功能,事实上在微服务的技术框架上也是支持的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

航芯1-Wire安全认证新品上市,防抄板和耗材认证高性价比之选

随着用户产品附加值提升带来的对防抄板的需求&#xff0c;以及电池、医疗耗材、电子配件、IOT领域中对设备认证的需求&#xff0c;上海航芯经过多年的技术积累和对市场的理解&#xff0c;推出了高性价比的ACL16_Axx系列。 1-Wire单总线&#xff1a;小尺寸实现高效传输 ACL16_…

JAVA WEB开发 错误:无效发行版解决办法

1.首先查询本安装的jdk版本 在cmd中输入如下指令 2.打开file——progect structure 2.将这两处保持一致即可

一图看懂:什么是“新质生产力”?

◆2023年9月&#xff0c;首次提出“新质生产力”。 ◆2024年1月&#xff0c;强调“加快发展新质生产力&#xff0c;扎实推进高质量发展”。 ◆2024年3月&#xff0c;《政府工作报告》中提出&#xff0c;要大力推进现代化产业体系建设&#xff0c;加快发展新质生产力。充分发挥…

SpringBoot【问题 05】PostgreSQL数据库启用SSL后使用默认配置进行数据库连接(Navicat工具与Java程序)

官网SSL说明&#xff1a;https://www.postgresql.org/docs/9.1/libpq-ssl.html 1.配置 1.1 文件 使用SSL需要的4个文件&#xff0c;名称要一致&#xff1a; 客户端密钥&#xff1a;postgresql.keyJava客户端密钥&#xff1a;postgresql.pk8客户端证书&#xff1a;postgresq…

iphone解锁的一些方案

如果iPhone被锁定&#xff0c;有以下几种解锁方案可以参考&#xff1a; 使用恢复模式解锁&#xff1a;如果忘记了密码或者屏幕密码输错次数太多导致iPhone被锁定&#xff0c;可以尝试使用恢复模式来解锁。请注意&#xff0c;这将擦除设备上的数据&#xff0c;因此只有在没有其…

shell常用工具和命令

1.printf Format 描述 %s: 一个字符串 %d&#xff0c; %i :一个小数 %f :一个浮点数 %.ns: 输出字符串&#xff0c; n 是输出几个字符 %m.nf :输出浮点数&#xff0c; m 是输出整数位数&#xff0c; n 是输出的小数位数 %x :不带正负号的十六进制&#xff0c;使用 a 至 f 表示…

打开任务管理器的快捷键

打开任务管理器的快捷键通常是Ctrl Shift Esc。只需同时按下这三个键&#xff0c;任务管理器就会立即弹出&#xff0c;显示当前正在运行的进程和性能数据。 此外&#xff0c;还有以下方法可以打开任务管理器&#xff1a; 使用组合键“CtrlAltDelete”&#xff0c;在xp系统中…

Java实战:Redis高可用之主从复制:原理、实战与优化

在高并发、大数据量的场景下&#xff0c;Redis 作为一款高性能的 key-value 存储系统&#xff0c;被广泛应用于缓存、消息队列、分布式锁等领域。为了保证 Redis 的高可用性&#xff0c;我们需要对 Redis 进行主从复制&#xff0c;实现数据的多副本存储。本文将详细介绍 Redis …

阿里云2核4G服务器支持人数并发测试,2核4G主机测评

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

Vue教学15:组件间的通信:provide/inject与event bus的巧妙应用

大家好&#xff0c;欢迎回到我们的Vue教学系列博客&#xff01;在前十四篇博客中&#xff0c;我们学习了Vue.js的基础知识、安装Node.js与npm、使用Vue Devtools进行调试、Vue实例与生命周期钩子、数据绑定&#xff08;单向与双向&#xff09;、计算属性与侦听器、条件渲染和列…

进制之间的转换

文章目录 编译过程进制转换1、进制的概念1.1 二进制1.2 八进制1.3 十六进制 进制在程序中的表现方式十进制转二进制将十进制转换成二进制&#xff08;除2反序取余法&#xff09;二进制转十进制&#xff08;权值法&#xff09; 八进制转十进制将十进制转换成八进制(除8反序取余法…

医药行业五大难题深度剖析:CRM解决方案助力突围

医疗行业关系着民生、经济乃至战备&#xff0c;是国民经济的重要组成部分。虽然近20年来我国医疗行业年均增长率维持在15%之上&#xff0c;但行业发展仍存在诸多问题。引进CRM管理系统可能是一个行之有效的解决方法。文中将为您整理医疗行业目前的五大挑战&#xff0c;以及CRM如…

Android Termux系统安装openssh实现公网使用SFTP远程访问

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

Processing基本形状内容和实例

一、Processing的基本形状内容和实例 1.Processing有一组专门绘制基本图形得图案。像线条这样的基本图形可以被连接起来创建更为复杂得形状&#xff0c;例如一片叶子或者一张脸。 2.为了绘制一条直线&#xff0c;我们需要四个参数&#xff0c;两个用于确定初始位置&#xff0c;…

判断连续数据同意特征的方法:插旗法

bool isMonotonic(int* nums, int numsSize) {int flag 2;for (int i 1; i < numsSize; i) {if (nums[i-1] > nums[i]) {if (flag 0)return false;flag 1;}else if (nums[i-1] < nums[i]) {if (flag 1)return false;flag 0;}}return true; }此代码较为简单&…

Sora:AI视频生成的新机遇与挑战

随着科技的飞速进步&#xff0c;人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术已经深入渗透到社会的各个领域。其中&#xff0c;Sora这类基于AI的视频生成工具因其高度逼真的生成能力而备受瞩目。然而&#xff0c;正如一枚硬币有两面&#xff0…

排队方式——栈

Description n个人手拿5元&#xff0c;n个人手拿10元&#xff0c;他们去排队买东西&#xff0c;东西价值5元&#xff0c;老板没有零钱&#xff08;老板必须用收取的5元钞票给支付10元的顾客找零钱&#xff09;&#xff0c;现给出一种排列方式&#xff0c;判断是否合理&#xf…

nVisual+AI实现综合布线智能化运维管理

传统的综合布线系统依据TIA-606规范在配线架、跳线、面板上都粘贴了标签&#xff0c;标签作为一个综合布线项目中元器件的唯一标识&#xff0c;对综合布线日常运维管理过程中查询连接关系、定位设备位置至关重要&#xff0c;但标签所能记录的信息毕竟有限&#xff0c;因此可视化…

docker的简单使用

在一些进行使用靶场或者工具的时候&#xff0c;我们可以用docker在线拉取&#xff0c;就可以省去手动搭建靶场的过程 一、docker的配置 因为docker是默认从docker的官网进行拉取&#xff0c;所以拉取经常速度很慢或者失败&#xff0c;我们先要进行一下配置&#xff0c;让他优…

让照片说话唱歌的软件,盘点这3款!

在数字时代&#xff0c;我们总是渴望找到新的方式来表达自我、分享生活。近年来&#xff0c;随着人工智能和图像处理技术的飞速发展&#xff0c;一种新型的软件应运而生&#xff0c;它们能够让照片“说话”甚至“唱歌”&#xff0c;给我们的生活带来了无限乐趣和创意空间。那么…