参赛作品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"><!--dbnode--></span>
<span class="hljs-tag"><<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dataNum"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"1"</span>/></span>
<span class="hljs-tag"><<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dataPortBase"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"26000"</span>/></span>
<span class="hljs-tag"><<span class="hljs-name">PARAM</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dataNode1"</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"/gaussdb/data/db1"</span>/></span>
<span class="hljs-tag"></<span class="hljs-name">DEVICE</span>></span>
<span class="hljs-tag"></<span class="hljs-name">DEVICELIST</span>></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">"org.postgresql.Driver"</span>;
<span class="hljs-type">String</span> <span class="hljs-variable">sourceURL</span> <span class="hljs-operator">=</span> <span class="hljs-string">"jdbc:postgresql://192.168.201.131:26000/postgres"</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">"Connection succeed!"</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">"CREATE TABLE customer_t1(c_customer_sk INTEGER, c_customer_name VARCHAR(32));"</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">"INSERT INTO customer_t1 VALUES (?,?)"</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 < <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">"data "</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">"UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"</span>);
pstmt.setString(<span class="hljs-number">1</span>, <span class="hljs-string">"new Data"</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">"? = CALL TESTPROC(?,?,?)"</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">"The CallableStatment TESTPROC returns:"</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">"parker"</span>, <span class="hljs-string">"parker@123"</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的配置使用的主要内容,如果未能解决你的问题,请参考以下文章