首页 > 数据库 >国产开源数据库OpenGauss的安装运行

国产开源数据库OpenGauss的安装运行

时间:2024-04-08 14:57:15浏览次数:21  
标签:java String 数据库 Successfully 开源 SSH file OpenGauss trust

步骤一:OpenGauss 的安装
环境
OS:openEuler 20.03 64bit with ARM

架构:arm64

部署:单机

安装过程
1、环境配置
安装依赖包:

yum install libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel
2、创建 xml 配置文件
创建 cluster_config.xml 配置文件并进行配置

    <!--dbnode-->
    	<PARAM name="dataNum" value="1"/>
    <!--DBnode端口号-->
    	<PARAM name="dataPortBase" value="26000"/>
    <!--DBnode主节点上数据目录,及备机数据目录-->
    	<PARAM name="dataNode1" value="node1"/>
    <!--DBnode节点上设定同步模式的节点数-->
    	<PARAM name="dataNode1_syncNum" value="0"/>
    </DEVICE>
</DEVICELIST>
注意节点 hostname 应与/etc/hostname 中保持一致

3、初始化安装环境
1.以 root 用户登录待安装 openGauss 的任意主机,并按规划创建存放安装包的目录。

mkdir -p /opt/software/openGauss
chmod 755 -R /opt/software
2.下载安装包并将配置文件“cluster_config.xml”都上传至上一步所创建的目录中。

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.1/arm/openGauss-2.0.1-openEuler-64bit-all.tar.gz
3.解压安装包。

tar -zxvf openGauss-2.0.1-openEuler-64bit-all.tar.gz
tar jxvf openGauss-2.0.1-openEuler-64bit.tar.bz2
tar -zxvf openGauss-2.0.1-openEuler-64bit-om.tar.gz
tar -zxvf upgrade_sql.tar.gz
4.进入到工具脚本存放目录下。

cd /opt/software/openGauss/script
5.如果是 openEuler 的操作系统为确保适配 python 版本,执行如下命令打开 gspylib/common/CheckPythonVersion.py 文件,将 if not pythonVersion = = (3, 6):修改为 if not pythonVersion > = (3, 6):,键入“ESC”键进入指令模式,执行:wq保存并退出修改。(我在实际操作中进入后发现无需修改)

vi gspylib/common/CheckPythonVersion.py
6.如果是 openEuler 的操作系统,执行如下命令打开 performance.sh 文件,用#注释 sysctl -w vm.min_free_kbytes=112640 &> /dev/null,键入“ESC”键进入指令模式,执行:wq保存并退出修改。

vi /etc/profile.d/performance.sh
7.为确保 openssl 版本正确,执行预安装前请加载安装包中 lib 库。执行命令如下,其中{packagePath}为用户安装包放置的路径,本示例中为/opt/software/openGauss。

export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH
8.为确保成功安装,检查 hostname 与 /etc/hostname 是否一致。预安装过程中,会对 hostname 进行检查。

9.使用 gs_preinstall 准备好安装环境。若为共用环境需加入--sep-env-file=ENVFILE 参数分离环境变量,避免与其他用户相互影响,ENVFILE 为用户自行指定的环境变量分离文件的路径。

采用交互模式执行前置,并在执行过程中自动创建操作系统 root 用户互信和 omm 用户互信:

./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
在执行中会要求输入 omm 用户的密码。

运行结果应类似:

plat1:/opt/software/openGauss/script # ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Are you sure you want to create trust for root (yes/no)? yes
Please enter password for root.
Password:
Creating SSH trust for the root permission user.
Checking network information.
All nodes in the network are Normal.
Successfully checked network information.
Creating SSH trust.
Creating the local key file.
Successfully created the local key files.
Appending local ID to authorized_keys.
Successfully appended local ID to authorized_keys.
Updating the known_hosts file.
Successfully updated the known_hosts file.
Appending authorized_key on the remote node.
Successfully appended authorized_key on all remote node.
Checking common authentication file content.
Successfully checked common authentication content.
Distributing SSH trust file to all node.
Successfully distributed SSH trust file to all node.
Verifying SSH trust on all hosts.
Successfully verified SSH trust on all hosts.
Successfully created SSH trust.
Successfully created SSH trust for the root permission user.
Setting pssh path
Successfully set core path.
Distributing package.
Begin to distribute package to tool path.
Successfully distribute package to tool path.
Begin to distribute package to package path.
Successfully distribute package to package path.
Successfully distributed package.
Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes
Please enter password for cluster user.
Password:
Please enter password for cluster user again.
Password:
Successfully created [omm] user on all nodes.
Preparing SSH service.
Successfully prepared SSH service.
Installing the tools in the cluster.
Successfully installed the tools in the cluster.
Checking hostname mapping.
Successfully checked hostname mapping.
Creating SSH trust for [omm] user.
Checking network information.
All nodes in the network are Normal.
Successfully checked network information.
Creating SSH trust.
Creating the local key file.
Successfully created the local key files.
Appending local ID to authorized_keys.
Successfully appended local ID to authorized_keys.
Updating the known_hosts file.
Successfully updated the known_hosts file.
Appending authorized_key on the remote node.
Successfully appended authorized_key on all remote node.
Checking common authentication file content.
Successfully checked common authentication content.
Distributing SSH trust file to all node.
Successfully distributed SSH trust file to all node.
Verifying SSH trust on all hosts.
Successfully verified SSH trust on all hosts.
Successfully created SSH trust.
Successfully created SSH trust for [omm] user.
Checking OS software.
Successfully check os software.
Checking OS version.
Successfully checked OS version.
Creating cluster's path.
Successfully created cluster's path.
Setting SCTP service.
Successfully set SCTP service.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Preparing CRON service.
Successfully prepared CRON service.
Setting user environmental variables.
Successfully set user environmental variables.
Setting the dynamic link library.
Successfully set the dynamic link library.
Setting Core file
Successfully set core path.
Setting pssh path
Successfully set pssh path.
Set ARM Optimization.
No need to set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.
4、执行安装
内存小于安装要求的 32G 应该做一些配置修改:

vim /etc/sysctl.conf

kernel.shmall = 1125899906842624
kernel.shmmax = 1351079888211149

vim /opt/huawei/install/data/db1/postgresql.conf

cstore_buffers=16MB
bulk_write_ring_size=128MB
shared_buffers=128MB
max_process_memory=2GB
max_connections=10
切换到 omm 用户下执行安装:

su - omm
gs_install -X /opt/software/openGauss/cluster_config.xml
步骤二 数据库的简单链接与使用
1、创建新用户,新数据库并赋予权限
使用 gsql 用 omm 管理账号登陆,创建新用户 jack,创建新数据库 testjack,赋予权限,执行

CREATE USER jack PASSWORD 'Gaussdba@Mpp';
CREATE DATABASE testjack OWNER jack;
GRANT SELECT ON pg_catalog.pg_roles to jack;
GRANT SELECT ON pg_catalog.pg_user_status to jack;
GRANT ALL PRIVILEGES on TABLESPACE pg_default,pg_global TO jack;
然后退出,使用 jack 用户登录 gsql

gsql -U jack -d testjack -p "Gaussdba@Mpp"
创建 SCHEMA

CREATE SCHEMA jack AUTHORIZATION jack;
退出 gsql,赋予 jack 权限,这里 client_address 是客户端的地址

gs_guc set -N all -I all -h "host all jack client_address/32 sha256
或者也可以修改 pg_hba.conf,添加

host all jack client_address/32 sha256
2、允许客户端访问数据库
执行,这里的 client_address 是要客户端的地址, listen_addresses 是参数名。

gs_guc set -I all -c "listen_addresses='client_address'"
或在使用 omm 账号在 gsql 中

ALTER SYSTEM SET listen_addresses TO "client_address";
之后重启数据库

3、关闭防火墙,打开端口
4、使用 Data Studio 访问数据库
可在 opengauss 官网下载 DATA STUDIO 应用

填入对应参数,注意这里应去掉启用 SSL 的选项,因为 SSL 还需要配置证书或密钥。

连接后的界面

5、使用 JDBC 访问数据库
我这里使用 windows 系统作为客户端连接数据库。

在 opengauss 网站下载对应的 JDBC 包,并解压。

创建 Gauss.java 文件

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.CallableStatement;
import java.sql.Types;
import java.util.Collections;
import java.util.Properties;

public class Gauss {

public static void main(String[] args) {
    Connection connection;
    ResultSet resultSet;
    String url = "jdbc:postgresql://address:port/testjack"; //address 地址 port 端口 testjack 数据库名
    String user = "××××"; // 数据库用户名
    String password = "××××"; // 对应密码
    String sql;
    if(args.length > 0)
    {
        sql = args[0];
    }
    else
    {
        System.out.println("输入一条sql语句");
        return;
    }

    if ((connection = getConnect(user, password, url)) != null) {
        System.out.println(connection.toString());
    }

    if ((resultSet = execSql(connection, sql)) != null)
    {


    }
}

// 以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。
public static Connection getConnect(String username, String passwd, String url) {
    // 驱动类。
    String driver = "org.postgresql.Driver";
    // 数据库连接描述符。
    String sourceURL = url;
    Connection conn = null;

    try {
        // 加载驱动。
        Class.forName(driver);
    } 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;
};

// 以下代码将使用Properties对象作为参数建立连接
public static Connection getConnectUseProp(String username, String passwd, String url) {
    // 驱动类。
    String driver = "org.postgresql.Driver";
    // 数据库连接描述符。
    String sourceURL = url + "?";
    Connection conn = null;
    Properties info = new Properties();

    try {
        // 加载驱动。
        Class.forName(driver);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

    try {
        info.setProperty("user", username);
        info.setProperty("password", passwd);
        // 创建连接。
        conn = DriverManager.getConnection(sourceURL, info);
        System.out.println("Connection succeed!");
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

    return conn;
};

public static ResultSet execSql(Connection conn, String sql) {
    Statement stmt = null;
    ResultSet rs = null;
    SQLWarning sqlw = null;
    try {
        stmt = conn.createStatement();
        // 执行普通SQL语句。
        stmt.execute(sql);
        if((sqlw = stmt.getWarnings()) != null)
            System.out.println(sqlw.toString());
        if((rs = stmt.getResultSet()) != null)
            printResultSet(rs);

        stmt.close();
    } catch (SQLException e) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        e.printStackTrace();
    }
    return rs;
}


private static void printResultSet(ResultSet rs)
{
    String line = "";
    try {
        ResultSetMetaData rsmd = rs.getMetaData();
        for(int i = 1; i <= rsmd.getColumnCount(); i ++)
        {
            String label = rsmd.getColumnLabel(i).toString();
            System.out.print(label + "\t");
            line += String.join("", Collections.nCopies(label.length(), "-")) + "\t";
        }
        System.out.println("\n" + line);

        while(rs.next())
        {
            for(int i = 1; i <= rsmd.getColumnCount(); i ++)
            {
                System.out.print(rs.getObject(i).toString() + "\t");
            }
            System.out.println("");

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

编译

javac .\Gauss.java -encoding "utf-8"
运行,我这里将 postgresql.jar 放在同一目录下,创建一个表 nt 作为测试

java -cp ".;postgresql.jar" Gauss "CREATE TABLE nt(id INTEGER, name VARCHAR(20))"
java -cp ".;postgresql.jar" Gauss "INSERT into nt(id, name) VALUES (1,'n1'),(2,'n2'),(3,'n3');"
java -cp ".;postgresql.jar" Gauss "SELECT * FROM nt;"
最后一句输出结果为,可以看到成功进行了连接和操作。

九月 13, 2021 11:58:25 上午 org.postgresql.core.v3.ConnectionFactoryImpl openConnectionImpl
信息: [75000bb7-1475-4579-94cb-f53a01bec9eb] Try to connect. IP: ...

标签:java,String,数据库,Successfully,开源,SSH,file,OpenGauss,trust
From: https://www.cnblogs.com/helloopenGauss/p/18121142

相关文章

  • Datagrip连接Kingbase数据库
    一、添加驱动路径: 二、检查Linux服务器上是否关闭防火墙并开启kingbase服务2.1检查是否开启防火墙systemctlstatusfirewalld关闭防火墙systemctlstopfirewalld 2.2开启kingbase服务 三、配置Datagrip3.1将kingbase8-8.6.0.jar添加到datagrip......
  • ADNI数据库的使用与脑影像数据下载
    首先找到ADNI的官网,在官网上也有一些关于数据的简介可以帮助你对ADNI数据库多一些了解,以及更加方便地找到你所需要的数据。点击官网连接进入网站,先点击数据与样本,然后在下方找到登陆注册,进入黑色界面之后找到右上角账号登陆即可,注意若是此步骤无法点击登录是因为没有接受cooki......
  • ADNI数据库T1MRI数据处理——基于freesurfer与matlab(1)
    在从ADNI上下载得到T1MRI数据之后,我们需要对数据进行处理才能进一步使用。在信息获取过程中受到各种因素的干扰,导致数据内容不一致,因此我们选择使用freesurfer对数据进行一键式处理。freesurfer必须要装载于linux系统上,安装成功的标志如图所示。对数据进行reconall命令进行3......
  • 开源模型应用落地-qwen1.5-7b-chat与sglang实现推理加速的正确姿势(一)
    一、前言   SGLangisastructuredgenerationlanguagedesignedforlargelanguagemodels(LLMs).ItmakesyourinteractionwithLLMsfasterandmorecontrollablebyco-designingthefrontendlanguageandtheruntimesystem。简单来说就是,SGLang简化了LLM......
  • 开源大模型本地私有化部署
    1、安装ollamaollma下载https://ollama.com/download/windowslinux安装curl-fsSLhttps://ollama.com/install.sh|sh运行ollamarungemma:2bollamarungemma:7b使用端口114342、下载open-webui代码https://github.com/open-webui/open-webui.git生成目录open-webuidoc......
  • Orcale数据库导入导出备份
    orcale数据库的导入导出及备份全库导入导出导出exp用户名/密码file=想要导出之后文件名 full=y用户名必须拥有dba权限,可以不指定文件名导入imp用户名/密码full=yfile=导出之后的文件名.dmp如果不指定文件名则自动识别默认名按用户导入导出导出exp用户名/......
  • SQL 跨服务器跨数据库操作数据
    execsp_configure'showadvancedoptions',1reconfigureexecsp_configure'AdHocDistributedQueries',1reconfigurehttps://www.cnblogs.com/tohen/p/4228030.html(解决SQLServer阻止了对组件'AdHocDistributedQueries'的STATEMENT&......
  • 开源许可协议简述
     一、开源许可协议简述开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议。它的中文名:开源许可协议;外文名:opensourcelicense。二、开源许可协议之间的区别与联系通过上图,可以很清晰的了解到6......
  • 人大金仓Kingbase-数据库安装
    一、官网下载两个文件1.授权文件下载本地后解压出dat文件,准备上传到Linux服务器。 2.下载数据库安装文件 下载到本地后,准备上传到Linux服务器。二、Linux安装人大金仓数据库1.创建可读写的用户此处省略步骤,不熟悉的话可以网查一下adduser。2.创建安装目录(我这......
  • 开源基金会
    1985年——自由软件基金会成立自由软件基金会(FreeSoftwareFoundation,简称FSF)由RMS于1985年创立,这是一个非营利组织,其主要工作是运行GNU计划,使命是促进计算机用户的自由。基金会的员工编写并维护着一些GNU软件包。1999年——Apache软件基金会成立Ap......