• 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 和主机名,之后配置需要用到

      1. ip ***.***.***.***
      2. 主机名 db1
    • 软件选择

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

    • 用户设置

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

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

    • 上网测试

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

      通过

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

    • 关闭防火墙

      执行以下命令关闭防火墙

      1. systemctl stop firewalld.service
      2. 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 编辑以下内容

      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <ROOT>
      3. <!-- openGauss整体信息 -->
      4. <CLUSTER>
      5. <PARAM name="clusterName" value="dbCluster" />
      6. <PARAM name="nodeNames" value="db1" />
      7. <PARAM name="backIp1s" value="10.0.3.15"/>
      8. <PARAM name="gaussdbAppPath" value="/opt/gaussdb/app" />
      9. <PARAM name="gaussdbLogPath" value="/var/log/gaussdb" />
      10. <PARAM name="gaussdbToolPath" value="/opt/huawei/wisequery" />
      11. <PARAM name="corePath" value="/opt/opengauss/corefile"/>
      12. <PARAM name="clusterType" value="single-inst"/>
      13. </CLUSTER>
      14. <!-- 每台服务器上的节点部署信息 -->
      15. <DEVICELIST>
      16. <!-- node1上的节点部署信息 -->
      17. <DEVICE sn="1000001">
      18. <PARAM name="name" value="db1"/>
      19. <PARAM name="azName" value="AZ1"/>
      20. <PARAM name="azPriority" value="1"/>
      21. <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
      22. <PARAM name="backIp1" value="10.0.3.15"/>
      23. <PARAM name="sshIp1" value="10.0.3.15"/>
      24. <!--dbnode-->
      25. <PARAM name="dataNum" value="1"/>
      26. <PARAM name="dataPortBase" value="26000"/>
      27. <PARAM name="dataNode1" value="/gaussdb/data/db1"/>
      28. </DEVICE>
      29. </DEVICELIST>
      30. </ROOT>

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

    • 解压安装包

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

    • 执行初始化脚本

      1. cd /opt/software/openGauss/script
      2. 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 {

      1. //创建数据库连接。
      2. public static Connection GetConnection(String username, String passwd) {
      3. String driver = "org.postgresql.Driver";
      4. String sourceURL = "jdbc:postgresql://***.***.***.***:26000/postgres";
      5. Connection conn = null;
      6. try {
      7. //加载数据库驱动。
      8. Class.forName(driver).newInstance();
      9. } catch (Exception e) {
      10. e.printStackTrace();
      11. return null;
      12. }
      13. try {
      14. //创建数据库连接。
      15. conn = DriverManager.getConnection(sourceURL, username, passwd);
      16. System.out.println("Connection succeed!");
      17. } catch (Exception e) {
      18. e.printStackTrace();
      19. return null;
      20. }
      21. return conn;
      22. };
      23. //执行普通SQL语句,创建customer_t1表。
      24. public static void CreateTable(Connection conn) {
      25. Statement stmt = null;
      26. try {
      27. stmt = conn.createStatement();
      28. //执行普通SQL语句。
      29. int rc = stmt
      30. .executeUpdate("CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));");
      31. stmt.close();
      32. } catch (SQLException e) {
      33. if (stmt != null) {
      34. try {
      35. stmt.close();
      36. } catch (SQLException e1) {
      37. e1.printStackTrace();
      38. }
      39. }
      40. e.printStackTrace();
      41. }
      42. }
      43. //执行预处理语句,批量插入数据。
      44. public static void BatchInsertData(Connection conn) {
      45. PreparedStatement pst = null;
      46. try {
      47. //生成预处理语句。
      48. pst = conn.prepareStatement("INSERT INTO customer_t1 VALUES (?,?)");
      49. for (int i = 0; i < 3; i++) {
      50. //添加参数。
      51. pst.setInt(1, i);
      52. pst.setString(2, "data " + i);
      53. pst.addBatch();
      54. }
      55. //执行批处理。
      56. pst.executeBatch();
      57. pst.close();
      58. } catch (SQLException e) {
      59. if (pst != null) {
      60. try {
      61. pst.close();
      62. } catch (SQLException e1) {
      63. e1.printStackTrace();
      64. }
      65. }
      66. e.printStackTrace();
      67. }
      68. }
      69. //执行预编译语句,更新数据。
      70. public static void ExecPreparedSQL(Connection conn) {
      71. PreparedStatement pstmt = null;
      72. try {
      73. pstmt = conn
      74. .prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1");
      75. pstmt.setString(1, "new Data");
      76. int rowcount = pstmt.executeUpdate();
      77. pstmt.close();
      78. } catch (SQLException e) {
      79. if (pstmt != null) {
      80. try {
      81. pstmt.close();
      82. } catch (SQLException e1) {
      83. e1.printStackTrace();
      84. }
      85. }
      86. e.printStackTrace();
      87. }
      88. }
    1. //执行存储过程。
    2. public static void ExecCallableSQL(Connection conn) {
    3. CallableStatement cstmt = null;
    4. try {
    5. cstmt=conn.prepareCall("{? = CALL TESTPROC(?,?,?)}");
    6. cstmt.setInt(2, 50);
    7. cstmt.setInt(1, 20);
    8. cstmt.setInt(3, 90);
    9. cstmt.registerOutParameter(4, Types.INTEGER); //注册out类型的参数,类型为整型。
    10. cstmt.execute();
    11. int out = cstmt.getInt(4); //获取out参数
    12. System.out.println("The CallableStatment TESTPROC returns:"+out);
    13. cstmt.close();
    14. } catch (SQLException e) {
    15. if (cstmt != null) {
    16. try {
    17. cstmt.close();
    18. } catch (SQLException e1) {
    19. e1.printStackTrace();
    20. }
    21. }
    22. e.printStackTrace();
    23. }
    24. }
    25. /**
    26. * 主程序,逐步调用各静态方法。
    27. * @param args
    28. */
    29. public static void main(String[] args) {
    30. //创建数据库连接。
    31. Connection conn = GetConnection("parker", "parker@123");
    32. //创建表。
    33. CreateTable(conn);
    34. //批插数据。
    35. BatchInsertData(conn);
    36. //执行预编译语句,更新数据。
    37. ExecPreparedSQL(conn);
    38. //执行存储过程。
    39. //ExecCallableSQL(conn);//这部分在运行时有问题,直接注释掉了
    40. //关闭数据库连接。
    41. try {
    42. conn.close();
    43. } catch (SQLException e) {
    44. e.printStackTrace();
    45. }
    46. }

    }

    1. ## 安装中遇到的问题与解决过程<a name="section856721735711"></a>
    2. - 初始化脚本失败报错
    3. <img src='./figures/a662d9a9a96b40d089a6d9c68788bf3d.png'>
    4. <img src='./figures/dbc89373c5734638a51add74523f640c.png'>
    5. - CentOS 上配置 JAVA
    6. 自带的 java 路径寻找:
    7. <img src='./figures/480ae4bbdd664652af43663f061aae84.png'>
    8. 配置 CentOS 环境变量:
    9. <img src='./figures/17fb09d479354307b7e2a8b27cbd2f7e.png'>
    10. 而后期验证 javac 时发现 CentOS 其自带的 java 仅有运行环境,改用 windows 作为客户端。
    11. - 也可以自行下载 java 环境配置进行解决配置:
    12. <img src='./figures/05476910e9e44c9fb0723d26b0f467f4.png'>
    13. - 数据库连接问题
    14. 修改后 ip 未放行错误
    15. <img src='./figures/591c2725601c492cbccf312e9b2a7a11.png'>
    16. 放行 ip 命令\(在官方文档客户端接入验证处可以查询\)如下

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

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

  • 相关阅读:
    《持续交付:发布可靠软件的系统方法》- 读书笔记(八)
    C++实例 调用Tesseract OCR的API
    企业数字化成功转型的关键,从这三方面出发
    c语言中函数的介绍(血书20000字!!!!)
    [NPUCTF2020]ReadlezPHP 反序列化简单反序列
    某小厂面试题
    基于安卓的电力设备智能巡检APP设计
    基于MATLAB的混沌数字图像加密技术研究与仿真实现
    (C++版)ROS2发布者节点终极版--面向过程设计款式
    如何实现毫米波波束成形和大规模MiMo?
  • 原文地址:https://blog.csdn.net/renxyz/article/details/136508906