当前位置:   article > 正文

SpringBoot + openGauss开发入门

SpringBoot + openGauss开发入门

本文介绍如何快速安装 openGauss

单机版 openGauss 快速环境安装

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

创建安装程序目标目录

  1. mkdir /home/omm/opengauss3
  2. chown -R omm:dbgroup /home/omm/opengauss3

下载 opengauss3.0.0

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

解压文件

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

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

  1. [root@enmoedu1 opengauss3]# cat cluster_config.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <ROOT>
  4. <!-- openGauss整体信息 -->
  5. <CLUSTER>
  6. <!-- 数据库名称 -->
  7. <PARAM name="clusterName" value="dbCluster" />
  8. <!-- 数据库节点名称(hostname) -->
  9. <PARAM name="nodeNames" value="hostname" />
  10. <!-- 数据库安装目录-->
  11. <PARAM name="gaussdbAppPath" value="/home/omm/opengauss3/install/app" />
  12. <!-- 日志目录-->
  13. <PARAM name="gaussdbLogPath" value="/var/log/omm" />
  14. <!-- 临时文件目录-->
  15. <PARAM name="tmpMppdbPath" value="/home/omm/opengauss3/tmp" />
  16. <!-- 数据库工具目录-->
  17. <PARAM name="gaussdbToolPath" value="/home/omm/opengauss3/install/om" />
  18. <!-- 数据库core文件目录-->
  19. <PARAM name="corePath" value="/home/omm/opengauss3/corefile" />
  20. <!-- 节点IP,与数据库节点名称列表一一对应 -->
  21. <PARAM name="backIp1s" value="[root@enmoedu1 opengauss3]# cat cluster_config.xml
  22. <?xml version="1.0" encoding="UTF-8"?>
  23. <ROOT>
  24. <!-- openGauss整体信息 -->
  25. <CLUSTER>
  26. <!-- 数据库名称 -->
  27. <PARAM name="clusterName" value="dbCluster" />
  28. <!-- 数据库节点名称(hostname) -->
  29. <PARAM name="nodeNames" value="hostname" />
  30. <!-- 数据库安装目录-->
  31. <PARAM name="gaussdbAppPath" value="/home/omm/opengauss3/install/app" />
  32. <!-- 日志目录-->
  33. <PARAM name="gaussdbLogPath" value="/var/log/omm" />
  34. <!-- 临时文件目录-->
  35. <PARAM name="tmpMppdbPath" value="/home/omm/opengauss3/tmp" />
  36. <!-- 数据库工具目录-->
  37. <PARAM name="gaussdbToolPath" value="/home/omm/opengauss3/install/om" />
  38. <!-- 数据库core文件目录-->
  39. <PARAM name="corePath" value="/home/omm/opengauss3/corefile" />
  40. <!-- 节点IP,与数据库节点名称列表一一对应 -->
  41. <PARAM name="backIp1s" value="IP"/>
  42. </CLUSTER>
  43. <!-- 每台服务器上的节点部署信息 -->
  44. <DEVICELIST>
  45. <!-- 节点1上的部署信息 -->
  46. <DEVICE sn="hostname">
  47. <!-- 节点1的主机名称 -->
  48. <PARAM name="name" value="hostname"/>
  49. <!-- 节点1所在的AZ及AZ优先级 -->
  50. <PARAM name="azName" value="AZ1"/>
  51. <PARAM name="azPriority" value="1"/>
  52. <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
  53. <PARAM name="backIp1" value="IP"/>
  54. <PARAM name="sshIp1" value="IP"/>
  55. <!--dbnode-->
  56. <PARAM name="dataNum" value="1"/>
  57. <PARAM name="dataPortBase" value="15400"/>
  58. <PARAM name="dataNode1" value="/home/omm/opengauss3/install/data/dn"/>
  59. <PARAM name="dataNode1_syncNum" value="0"/>
  60. </DEVICE>
  61. </DEVICELIST>
  62. </ROOT>"/>
  63. </CLUSTER>
  64. <!-- 每台服务器上的节点部署信息 -->
  65. <DEVICELIST>
  66. <!-- 节点1上的部署信息 -->
  67. <DEVICE sn="hostname">
  68. <!-- 节点1的主机名称 -->
  69. <PARAM name="name" value="hostname"/>
  70. <!-- 节点1所在的AZ及AZ优先级 -->
  71. <PARAM name="azName" value="AZ1"/>
  72. <PARAM name="azPriority" value="1"/>
  73. <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
  74. <PARAM name="backIp1" value="IP"/>
  75. <PARAM name="sshIp1" value="IP"/>
  76. <!--dbnode-->
  77. <PARAM name="dataNum" value="1"/>
  78. <PARAM name="dataPortBase" value="15400"/>
  79. <PARAM name="dataNode1" value="/home/omm/opengauss3/install/data/dn"/>
  80. <PARAM name="dataNode1_syncNum" value="0"/>
  81. </DEVICE>
  82. </DEVICELIST>
  83. </ROOT>

前置系统软件包

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

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

  1. [root@hdp1 ~]# cd /opengauss3/
  2. [root@hdp1 opengauss3]# ./script/gs_preinstall -U omm -G dbgroup -X ./cluster_config.xml
  3. Parsing the configuration file.
  4. Successfully parsed the configuration file.
  5. Installing the tools on the local node.
  6. Successfully installed the tools on the local node.
  7. Setting host ip env
  8. Successfully set host ip env.
  9. Are you sure you want to create the user[omm] (yes/no)? no
  10. Preparing SSH service.
  11. Successfully prepared SSH service.
  12. Checking OS software.
  13. Successfully check os software.
  14. Checking OS version.
  15. Successfully checked OS version.
  16. Creating cluster's path.
  17. Successfully created cluster's path.
  18. Set and check OS parameter.
  19. Setting OS parameters.
  20. Successfully set OS parameters.
  21. Warning: Installation environment contains some warning messages.
  22. Please get more details by "/opengauss3/script/gs_checkos -i A -h hdp1 --detail".
  23. Set and check OS parameter completed.
  24. Preparing CRON service.
  25. Successfully prepared CRON service.
  26. Setting user environmental variables.
  27. Successfully set user environmental variables.
  28. Setting the dynamic link library.
  29. Successfully set the dynamic link library.
  30. Setting Core file
  31. Successfully set core path.
  32. Setting pssh path
  33. Successfully set pssh path.
  34. Setting Cgroup.
  35. Successfully set Cgroup.
  36. Set ARM Optimization.
  37. No need to set ARM Optimization.
  38. Fixing server package owner.
  39. Setting finish flag.
  40. Successfully set finish flag.
  41. Preinstallation succeeded.

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

  1. chown -R omm:dbgroup /opengauss3
  2. 切换到 omm,在/opengauss3目录下运行安装目录
  3. [root@hdp1 opengauss3]# su omm
  4. [omm@hdp1 opengauss3]$ ./script/gs_install -X ./cluster_config.xml
  5. Parsing the configuration file.
  6. Check preinstall on every node.
  7. Successfully checked preinstall on every node.
  8. Creating the backup directory.
  9. Successfully created the backup directory.
  10. begin deploy..
  11. Installing the cluster.
  12. begin prepare Install Cluster..
  13. Checking the installation environment on all nodes.
  14. begin install Cluster..
  15. Installing applications on all nodes.
  16. Successfully installed APP.
  17. begin init Instance..
  18. encrypt cipher and rand files for database.
  19. Please enter password for database:
  20. Please repeat for database:
  21. begin to create CA cert files
  22. The sslcert will be generated in /home/omm/opengauss3/install/app/share/sslcert/om
  23. NO cm_server instance, no need to create CA for CM.
  24. Cluster installation is completed.
  25. Configuring.
  26. Deleting instances from all nodes.
  27. Successfully deleted instances from all nodes.
  28. Checking node configuration on all nodes.
  29. Initializing instances on all nodes.
  30. Updating instance configuration on all nodes.
  31. Check consistence of memCheck and coresCheck on database nodes.
  32. Configuring pg_hba on all nodes.
  33. Configuration is completed.
  34. Successfully started cluster.
  35. Successfully installed application.
  36. end deploy..

验证服务进程是否激 活

  1. [root@hdp1 ~]# ps -eaf | grep omm
  2. root 14898 32160 0 15:55 pts/1 00:00:00 su omm
  3. omm 14899 14898 0 15:55 pts/1 00:00:00 bash
  4. omm 19411 1 9 16:08 ? 00:00:02 /home/omm/opengauss3/install/app/bin/gaussdb -D
  5. /home/omm/opengauss3/install/data/dn
  6. 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 下面所有的东西都去掉。

  1. # User specific aliases and functions
  2. export GPHOME=/home/omm/opengauss3/install/om
  3. export PATH=$GPHOME/script/gspylib/pssh/bin:$GPHOME/script:$PATH
  4. export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
  5. export PYTHONPATH=$GPHOME/lib
  6. export GAUSSHOME=/home/omm/opengauss3/install/app
  7. export PATH=$GAUSSHOME/bin:$PATH
  8. export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
  9. export S3_CLIENT_CRT_FILE=$GAUSSHOME/lib/client.crt
  10. export GAUSS_VERSION=3.0.0
  11. export PGHOST=/home/omm/opengauss3/tmp
  12. export GAUSSLOG=/var/log/omm/omm
  13. umask 077
  14. export GAUSS_ENV=2
  15. export GS_CLUSTER_NAME=dbCluster

springBoot 应用集成 OpenGauss

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

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

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

  1. create table userentity(
  2. id int ,
  3. username varchar(50),
  4. password varchar(50),
  5. user_sex varchar(10),
  6. nick_name varchar(50)
  7. );
  8. create table user1(
  9. id int ,
  10. name varchar(50),
  11. 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 报错

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

而 opengauss 内部执行报错

  1. [omm@enmoedu1 ~]$ gsql -U henley -h ***.***.***.*** -p 15400
  2. Password for user henley:
  3. 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 报错

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

openGauss 报错

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

解决方法及步骤

以 postgres 的身份登录 root

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

切换到指定的数据库

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

执行授权

  1. mytest=# GRANT ALL PRIVILEGES ON userentity TO henley;
  2. GRANT

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

  1. <!-- 加载jdbc连接数据库 -->
  2. <!--<dependency>-->
  3. <!--<groupId>org.opengauss</groupId>-->
  4. <!--<artifactId>opengauss-jdbc</artifactId>-->
  5. <!--</dependency>-->
  6. <!--<dependency>-->
  7. <!--<groupId>org.bouncycastle</groupId>-->
  8. <!--<artifactId>bcprov-jdk15on</artifactId>-->
  9. <!--<version>1.70</version>-->
  10. <!--</dependency>-->

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

  1. wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/
  2. 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==

  1. #spring.datasource.url=jdbc:postgresql://XXXX:5432/mytest
  2. #spring.datasource.url=jdbc:postgresql://XXXX:15400/mytest
  3. spring.datasource.url=jdbc:opengauss://XXXX:15400/mytest
  4. spring.datasource.username=henley
  5. spring.datasource.password=XXXX
  6. spring.datasource.driver-class-name=org.opengauss.Driver
  7. #spring.datasource.driver-class-name=org.postgresql.Driver
  8. ### mybatis config ###
  9. mybatis.config-locations=classpath:mybatis/mybatis-config.xml
  10. mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
  11. mybatis.type-aliases-package=com.main.model

最后总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/210091
推荐阅读
相关标签
  

闽ICP备14008679号