参赛作品46CentOs虚拟机下opengauss的配置使用

Posted Gauss松鼠会

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了参赛作品46CentOs虚拟机下opengauss的配置使用相关的知识,希望对你有一定的参考价值。

作者:parker

环境说明

虚拟机平台 VMware

服务器端 CentOS 7.9

本机系统 Windows 10

部署版本 OpenGauss 1.1.0

安装详细步骤

虚拟机VMware

本机已配置,该部分省略

CentOS 7.9 安装

下载镜像源CentOS-7-x86_64-DVD-2009.iso

虚拟机中选中镜像进行安装

设置

内存设置为2GB 
处理器设置为2
网络默认即可
声卡和打印机不使用直接进行了移除

启动后进入系统安装,注意的点如下:

分区

选择系统-安装位置-手动分区进行分区如下:

网络和主机名

选择系统-网络和主机名进行设置如下:

记录ip和主机名,之后配置需要用到

ip 192.168.201.131

主机名 db1

软件选择

选择软件-软件选择设置如下:

用户设置

上述设置完成后点击开始安装,该期间根据提示完成用户设置即可

安装完成进行重启,登录系统完成安装

上网测试

修改操作系统版本(CentOS 7.6可省略)

通过
vi /etc/redhat-releas打开编辑文件,修改内容如下(请使用su root切换至root用户进行操作)

关闭防火墙

执行以下命令关闭防火墙
systemctl stop firewalld.service

systemctl disable firewalld.service

设置字符集及环境变量

关闭swap交换内存

yum环境配置

备份yum配置文件

下载可用源的repo文件

查看repo文件是否正确

yum安装相关包

yum install -y libaio-devel flex bison ncurses-devel glibc.devel patch lsb_release wget python3

设置python版本为3.x

修改完成后,确认yum是否使用,若不能使用,如本例中。修改/usr/bin/yum文件,修改#!/usr/bin/python#!/usr/bin/python2.7

数据库安装

创建存放数据库安装目录

下载数据库安装包

创建xml配置文件,用于数据库安装
openGauss文件夹下
vi clusterconfig.xml编辑以下内容

 
<?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- openGauss整体信息 --> <CLUSTER> <PARAM name="clusterName" value="dbCluster" /> <PARAM name="nodeNames" value="db1" /> <PARAM name="backIp1s" value="10.0.3.15"/> <PARAM name="gaussdbAppPath" value="/opt/gaussdb/app" /> <PARAM name="gaussdbLogPath" value="/var/log/gaussdb" /> <PARAM name="gaussdbToolPath" value="/opt/huawei/wisequery" /> <PARAM name="corePath" value="/opt/opengauss/corefile"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- node1上的节点部署信息 --> <DEVICE sn="1000001"> <PARAM name="name" value="db1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="10.0.3.15"/> <PARAM name="sshIp1" value="10.0.3.15"/>
    <span class="hljs-comment">&lt;!--dbnode--&gt;</span> 
    <span class="hljs-tag">&lt;<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;dataNum&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;1&quot;</span>/&gt;</span> 
    <span class="hljs-tag">&lt;<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;dataPortBase&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;26000&quot;</span>/&gt;</span> 
    <span class="hljs-tag">&lt;<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;dataNode1&quot;</span> <span class="hljs-attr">value</span>=<span class="hljs-string">&quot;/gaussdb/data/db1&quot;</span>/&gt;</span> 
    <span class="hljs-tag">&lt;/<span class="hljs-name">DEVICE</span>&gt;</span> 
<span class="hljs-tag">&lt;/<span class="hljs-name">DEVICELIST</span>&gt;</span> 

</ROOT>

其中ip设置为之前的192.168.201.131,主机名为db1,如下:

解压安装包

解压后查看并修改文件权限

执行初始化脚本
cd /opt/software/openGauss/script

python gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xml
返回Preinstallation succeeded内容时,初始化完成

初始化数据库

重启虚拟机后使用omm用户进行数据库初始化
gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--encoding=UTF8" --dn-guc="max_process_memory=2GB" --dn-guc="shared_buffers=128MB" --dn-guc="bulk_write_ring_size=128MB" --dn-guc="cstore_buffers=16MB"

其中对应的参数内存大小须根据虚拟机情况进行设置

安装完成后清理软件安装包

连接数据库

JDBC配置

从官方网站选取对应版本的jar包并解压,在eclipse上配置加载驱动类。

第一次连接后操作数据库需要修改omm用户密码

根据官方文档提供的demo程序修改后进行连接测试,连接成功如下:

demo程序:

 
package gaussjdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.sql.CallableStatement;

public class Gaussjdbc

<span class="hljs-comment">//创建数据库连接。</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> Connection <span class="hljs-title function_">GetConnection</span><span class="hljs-params">(String username, String passwd)</span> 
    <span class="hljs-type">String</span> <span class="hljs-variable">driver</span> <span class="hljs-operator">=</span> <span class="hljs-string">&quot;org.postgresql.Driver&quot;</span>;
    <span class="hljs-type">String</span> <span class="hljs-variable">sourceURL</span> <span class="hljs-operator">=</span> <span class="hljs-string">&quot;jdbc:postgresql://192.168.201.131:26000/postgres&quot;</span>;
    <span class="hljs-type">Connection</span> <span class="hljs-variable">conn</span> <span class="hljs-operator">=</span> <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> 
      <span class="hljs-comment">//加载数据库驱动。</span>
      Class.forName(driver).newInstance();
     <span class="hljs-keyword">catch</span> (Exception e) 
      e.printStackTrace();
      <span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;
    

    <span class="hljs-keyword">try</span> 
      <span class="hljs-comment">//创建数据库连接。</span>
      conn = DriverManager.getConnection(sourceURL, username, passwd);
      System.out.println(<span class="hljs-string">&quot;Connection succeed!&quot;</span>);
     <span class="hljs-keyword">catch</span> (Exception e) 
      e.printStackTrace();
      <span class="hljs-keyword">return</span> <span class="hljs-literal">null</span>;
    

    <span class="hljs-keyword">return</span> conn;
  ;

  <span class="hljs-comment">//执行普通SQL语句,创建customer_t1表。</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">CreateTable</span><span class="hljs-params">(Connection conn)</span> 
    <span class="hljs-type">Statement</span> <span class="hljs-variable">stmt</span> <span class="hljs-operator">=</span> <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> 
      stmt = conn.createStatement();

      <span class="hljs-comment">//执行普通SQL语句。</span>
      <span class="hljs-type">int</span> <span class="hljs-variable">rc</span> <span class="hljs-operator">=</span> stmt
          .executeUpdate(<span class="hljs-string">&quot;CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));&quot;</span>);

      stmt.close();
     <span class="hljs-keyword">catch</span> (SQLException e) 
      <span class="hljs-keyword">if</span> (stmt != <span class="hljs-literal">null</span>) 
        <span class="hljs-keyword">try</span> 
          stmt.close();
         <span class="hljs-keyword">catch</span> (SQLException e1) 
          e1.printStackTrace();
        
      
      e.printStackTrace();
    
  

  <span class="hljs-comment">//执行预处理语句,批量插入数据。</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">BatchInsertData</span><span class="hljs-params">(Connection conn)</span> 
    <span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pst</span> <span class="hljs-operator">=</span> <span class="hljs-literal">null</span>;

    <span class="hljs-keyword">try</span> 
      <span class="hljs-comment">//生成预处理语句。</span>
      pst = conn.prepareStatement(<span class="hljs-string">&quot;INSERT INTO customer_t1 VALUES (?,?)&quot;</span>);
      <span class="hljs-keyword">for</span> (<span class="hljs-type">int</span> <span class="hljs-variable">i</span> <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">3</span>; i++) 
        <span class="hljs-comment">//添加参数。</span>
        pst.setInt(<span class="hljs-number">1</span>, i);
        pst.setString(<span class="hljs-number">2</span>, <span class="hljs-string">&quot;data &quot;</span> + i);
        pst.addBatch();
      
      <span class="hljs-comment">//执行批处理。</span>
      pst.executeBatch();
      pst.close();
     <span class="hljs-keyword">catch</span> (SQLException e) 
      <span class="hljs-keyword">if</span> (pst != <span class="hljs-literal">null</span>) 
        <span class="hljs-keyword">try</span> 
          pst.close();
         <span class="hljs-keyword">catch</span> (SQLException e1) 
        e1.printStackTrace();
        
      
      e.printStackTrace();
    
  

  <span class="hljs-comment">//执行预编译语句,更新数据。</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">ExecPreparedSQL</span><span class="hljs-params">(Connection conn)</span> 
    <span class="hljs-type">PreparedStatement</span> <span class="hljs-variable">pstmt</span> <span class="hljs-operator">=</span> <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> 
      pstmt = conn
          .prepareStatement(<span class="hljs-string">&quot;UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1&quot;</span>);
      pstmt.setString(<span class="hljs-number">1</span>, <span class="hljs-string">&quot;new Data&quot;</span>);
      <span class="hljs-type">int</span> <span class="hljs-variable">rowcount</span> <span class="hljs-operator">=</span> pstmt.executeUpdate();
      pstmt.close();
     <span class="hljs-keyword">catch</span> (SQLException e) 
      <span class="hljs-keyword">if</span> (pstmt != <span class="hljs-literal">null</span>) 
        <span class="hljs-keyword">try</span> 
          pstmt.close();
         <span class="hljs-keyword">catch</span> (SQLException e1) 
          e1.printStackTrace();
        
      
      e.printStackTrace();
    
  


<span class="hljs-comment">//执行存储过程。</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">ExecCallableSQL</span><span class="hljs-params">(Connection conn)</span> 
    <span class="hljs-type">CallableStatement</span> <span class="hljs-variable">cstmt</span> <span class="hljs-operator">=</span> <span class="hljs-literal">null</span>;
    <span class="hljs-keyword">try</span> 
      
      cstmt=conn.prepareCall(<span class="hljs-string">&quot;? = CALL TESTPROC(?,?,?)&quot;</span>);
      cstmt.setInt(<span class="hljs-number">2</span>, <span class="hljs-number">50</span>); 
      cstmt.setInt(<span class="hljs-number">1</span>, <span class="hljs-number">20</span>);
      cstmt.setInt(<span class="hljs-number">3</span>, <span class="hljs-number">90</span>);
      cstmt.registerOutParameter(<span class="hljs-number">4</span>, Types.INTEGER);  <span class="hljs-comment">//注册out类型的参数,类型为整型。</span>
      cstmt.execute();
      <span class="hljs-type">int</span> <span class="hljs-variable">out</span> <span class="hljs-operator">=</span> cstmt.getInt(<span class="hljs-number">4</span>);  <span class="hljs-comment">//获取out参数</span>
      System.out.println(<span class="hljs-string">&quot;The CallableStatment TESTPROC returns:&quot;</span>+out);
      cstmt.close();
     <span class="hljs-keyword">catch</span> (SQLException e) 
      <span class="hljs-keyword">if</span> (cstmt != <span class="hljs-literal">null</span>) 
        <span class="hljs-keyword">try</span> 
          cstmt.close();
         <span class="hljs-keyword">catch</span> (SQLException e1) 
          e1.printStackTrace();
        
      
      e.printStackTrace();
    
  
  

  <span class="hljs-comment">/**
   * 主程序,逐步调用各静态方法。
   * <span class="hljs-doctag">@param</span> args
  */</span>
  <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> 
    <span class="hljs-comment">//创建数据库连接。</span>
    <span class="hljs-type">Connection</span> <span class="hljs-variable">conn</span> <span class="hljs-operator">=</span> GetConnection(<span class="hljs-string">&quot;parker&quot;</span>, <span class="hljs-string">&quot;parker@123&quot;</span>);

    <span class="hljs-comment">//创建表。</span>
    CreateTable(conn);

    <span class="hljs-comment">//批插数据。</span>
    BatchInsertData(conn);

    <span class="hljs-comment">//执行预编译语句,更新数据。</span>
    ExecPreparedSQL(conn);

    <span class="hljs-comment">//执行存储过程。</span>
    <span class="hljs-comment">//ExecCallableSQL(conn);//这部分在运行时有问题,直接注释掉了</span>

    <span class="hljs-comment">//关闭数据库连接。</span>
    <span class="hljs-keyword">try</span> 
      conn.close();
     <span class="hljs-keyword">catch</span> (SQLException e) 
      e.printStackTrace();
    

  

安装中遇到的问题与解决过程

初始化脚本失败报错

CentOS上配置JAVA

自带的java路径寻找:

配置CentOS环境变量:

而后期验证javac时发现CentOS其自带的java仅有运行环境,改用windows作为客户端。

也可以自行下载java环境配置进行解决配置:

数据库连接问题

地址错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-thl1OANz-1640135994204)(https://im g-blog.csdnimg.cn/a2022ab297504833a5722c40ef08b9de.PNG?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUGFya2VybGpj,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)]

修改后ip未放行错误

数据库连接问题

地址错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wqUhszmX-1640136084555)(https://im g-blog.csdnimg.cn/a2022ab297504833a5722c40ef08b9de.PNG?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUGFya2VybGpj,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)]

修改后ip未放行错误

放行ip命令(在官方文档客户端接入验证处可以查询)如下

gs_guc set -N all -I all -h "host all parker 192.168.201.1/32 sha256"

具体的接入ip若不清楚可以通过报错信息或本地的ipconfig进行查看

以上是关于参赛作品46CentOs虚拟机下opengauss的配置使用的主要内容,如果未能解决你的问题,请参考以下文章

参赛作品49openGauss单机部署

参赛作品97openGauss单机版安装步骤

参赛作品34opengauss数据库的词法和语法分析

参赛作品54openGauss数据库安装与使用

参赛作品71CentOS 7.9 安装 openGauss 2.1.0 之剥茧抽丝

参赛作品78参加openGauss课程21天学习有感