虚拟机平台 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 编辑以下内容
- <?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"/>
-
- <!--dbnode-->
- <PARAM name="dataNum" value="1"/>
- <PARAM name="dataPortBase" value="26000"/>
- <PARAM name="dataNode1" value="/gaussdb/data/db1"/>
- </DEVICE>
- </DEVICELIST>
- </ROOT>
其中 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();
- }
-
- }
}
-
- ## 安装中遇到的问题与解决过程<a name="section856721735711"></a>
-
- - 初始化脚本失败报错
-
- <img src='./figures/a662d9a9a96b40d089a6d9c68788bf3d.png'>
-
- <img src='./figures/dbc89373c5734638a51add74523f640c.png'>
-
- - CentOS 上配置 JAVA
-
- 自带的 java 路径寻找:
-
- <img src='./figures/480ae4bbdd664652af43663f061aae84.png'>
-
- 配置 CentOS 环境变量:
-
- <img src='./figures/17fb09d479354307b7e2a8b27cbd2f7e.png'>
-
- 而后期验证 javac 时发现 CentOS 其自带的 java 仅有运行环境,改用 windows 作为客户端。
-
- - 也可以自行下载 java 环境配置进行解决配置:
-
- <img src='./figures/05476910e9e44c9fb0723d26b0f467f4.png'>
-
- - 数据库连接问题
-
- 修改后 ip 未放行错误
-
- <img src='./figures/591c2725601c492cbccf312e9b2a7a11.png'>
-
- 放行 ip 命令\(在官方文档客户端接入验证处可以查询\)如下
gs_guc set -N all -I all -h “host all parker .../32 sha256”
```
具体的接入 ip 若不清楚可以通过报错信息或本地的 ipconfig 进行查看