CentOs虚拟机下openGauss的配置使用

CentOs 虚拟机下 opengauss 的配置使用

环境说明

虚拟机平台 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 ***.***.***.***
    主机名 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 编辑以下内容

    
    
    
        
            
            
            
            
            
            
            
            
        
        
        
            
            
                
                
                
                
                
                
    
            
            
            
            
            
        
    
    

    其中 ip 设置为之前的 ...,主机名为 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 {

    //创建数据库连接。
      public static Connection GetConnection(String username, String passwd) {
        String driver = "org.postgresql.Driver";
        String sourceURL = "jdbc:postgresql://***.***.***.***:26000/postgres";
        Connection conn = null;
        try {
          //加载数据库驱动。
          Class.forName(driver).newInstance();
        } catch (Exception e) {
          e.printStackTrace();
          return null;
        }
    
        try {
          //创建数据库连接。
          conn = DriverManager.getConnection(sourceURL, username, passwd);
          System.out.println("Connection succeed!");
        } catch (Exception e) {
          e.printStackTrace();
          return null;
        }
    
        return conn;
      };
    
      //执行普通SQL语句,创建customer_t1表。
      public static void CreateTable(Connection conn) {
        Statement stmt = null;
        try {
          stmt = conn.createStatement();
    
          //执行普通SQL语句。
          int rc = stmt
              .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
    
          stmt.close();
        } catch (SQLException e) {
          if (stmt != null) {
            try {
              stmt.close();
            } catch (SQLException e1) {
              e1.printStackTrace();
            }
          }
          e.printStackTrace();
        }
      }
    
      //执行预处理语句,批量插入数据。
      public static void BatchInsertData(Connection conn) {
        PreparedStatement pst = null;
    
        try {
          //生成预处理语句。
          pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)");
          for (int i = 0; i < 3; i++) {
            //添加参数。
            pst.setInt(1, i);
            pst.setString(2, "data " + i);
            pst.addBatch();
          }
          //执行批处理。
          pst.executeBatch();
          pst.close();
        } catch (SQLException e) {
          if (pst != null) {
            try {
              pst.close();
            } catch (SQLException e1) {
            e1.printStackTrace();
            }
          }
          e.printStackTrace();
        }
      }
    
      //执行预编译语句,更新数据。
      public static void ExecPreparedSQL(Connection conn) {
        PreparedStatement pstmt = null;
        try {
          pstmt = conn
              .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1");
          pstmt.setString(1, "new Data");
          int rowcount = pstmt.executeUpdate();
          pstmt.close();
        } catch (SQLException e) {
          if (pstmt != null) {
            try {
              pstmt.close();
            } catch (SQLException e1) {
              e1.printStackTrace();
            }
          }
          e.printStackTrace();
        }
      }
    
  //执行存储过程。
    public static void ExecCallableSQL(Connection conn) {
      CallableStatement cstmt = null;
      try {

        cstmt=conn.prepareCall("{? = CALL TESTPROC(?,?,?)}");
        cstmt.setInt(2, 50);
        cstmt.setInt(1, 20);
        cstmt.setInt(3, 90);
        cstmt.registerOutParameter(4, Types.INTEGER);  //注册out类型的参数,类型为整型。
        cstmt.execute();
        int out = cstmt.getInt(4);  //获取out参数
        System.out.println("The CallableStatment TESTPROC returns:"+out);
        cstmt.close();
      } catch (SQLException e) {
        if (cstmt != null) {
          try {
            cstmt.close();
          } catch (SQLException e1) {
            e1.printStackTrace();
          }
        }
        e.printStackTrace();
      }
    }


    /**
     * 主程序,逐步调用各静态方法。
     * @param args
    */
    public static void main(String[] args) {
      //创建数据库连接。
      Connection conn = GetConnection("parker", "parker@123");

      //创建表。
      CreateTable(conn);

      //批插数据。
      BatchInsertData(conn);

      //执行预编译语句,更新数据。
      ExecPreparedSQL(conn);

      //执行存储过程。
      //ExecCallableSQL(conn);//这部分在运行时有问题,直接注释掉了

      //关闭数据库连接。
      try {
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }

    }

}


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

- 初始化脚本失败报错

  

  

- CentOS 上配置 JAVA

  自带的 java 路径寻找:

  

  配置 CentOS 环境变量:

  

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

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

  

- 数据库连接问题

  修改后 ip 未放行错误

  

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

gs_guc set -N all -I all -h “host all parker .../32 sha256”
```

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

你可能感兴趣的:(centos,linux,运维,openGauss)