步骤一: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: ...***

九月 13, 2021 11:58:26 上午 org.postgresql.core.v3.ConnectionFactoryImpl openConnectionImpl

信息: [...:/...:**] Connection is established. ID: 75000bb7-1475-4579-94cb-f53a01bec9eb

九月 13, 2021 11:58:26 上午 org.postgresql.core.v3.ConnectionFactoryImpl openConnectionImpl

信息: Connect complete. ID: 75000bb7-1475-4579-94cb-f53a01bec9eb

Connection succeed!

id name


1 n1

2 n2

3 n3

国产开源数据库OpenGauss的安装运行的更多相关文章

  1. 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践

    ​导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高 ...

  2. 小试国产开源HTAP分布式NewSQL数据库TiDB-v5.3.0

    概述 定义 TiDB官网 https://pingcap.com/zh/ 最新版本为5.3.0 TiDB GitHub源码 https://github.com/pingcap/tidb TiDB是由 ...

  3. NoSQL数据库之国产开源产品:SequoiaDB 分析前言

    随着互联网技术的发展,面对海量数据的存储和分析,传统关系型数据库已经无法满足,由此衍生出一种与关系型数据库区别开的数据库NoSQL(Not Only SQL). 国外做的比较成熟的NoSQL有Mong ...

  4. Mycat分布式数据库架构解决方案--Linux安装运行Mycat

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Myc ...

  5. 2015年热门的国产开源软件TOP 50

    2015年热门的国产开源软件TOP 50 开源中国在 2015 年得到了快速的发展,单开源软件收藏量就接近 40000 款,其中不乏优质的国产开源项目.本文从软件的收藏.下载.访问等多角度挑选出了 2 ...

  6. MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较

    1.MySQL 5 作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO.MySQL是一个多线程.结构化查询语言(S ...

  7. MySQL全世界最流行的开源数据库软件

    誉天全国首推全球市场占有率第二的数据库——MySQL培训课程,阿里巴巴.新浪等知名企业正在使用MySQL数据库系统,而这方面的人才需求也是供不应求,誉天作为国内2014年首批ORACLE官方授权MyS ...

  8. Mac 下安装运行Rocket.chat

    最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...

  9. 数据库MySql的安装

    1.MySQL概述 MySQL最初是由“MySQL AB公司”开发的一套关系型数据库管理系统(RDBMS-Relation DataBase Management System).MySQL不仅是最流 ...

  10. Activity工作流(2)-入门安装运行第一个例子

    转: Activity工作流(2)-入门安装运行第一个例子 置顶 2017年05月24日 15:58:50 li_ch_ch 阅读数:24432   版权声明:本文为博主原创文章,未经博主允许不得转载 ...

随机推荐

  1. Unity3D之OnTriggerEnter和OnCollisionEnter

    OnCollisionEnter方法要求碰撞的发起方必须拥有刚体,而被碰撞方有没有刚体并不重要; OnTriggerEnter方法则对此没有要求,只需要碰撞双方有一个具有刚体即可触发,当有物体勾选is ...

  2. 【Azure Function】在Function执行中遇见Timeout错误

    问题描述 在Function执行中遇见Timeout错误: Microsoft.Azure.WebJobs.Host.FunctionTimeoutException /Timeout value o ...

  3. 【Azure 媒体服务】Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢?

    问题描述 Azure Media Service上传的视频资产,如何保证在Transfer编码后音频文件和视频文件不分成两个文件?保持在一个可以直接播放的MP4文件中呢? 问题解答 Azure Med ...

  4. Redis高级数据类型

    ## 1.Redis相关配置信息 服务器端设定 设置服务器以守护进程的方式运行 daemonize yes|no 绑定主机地址 (只能此ip访问) bind 127.0.0.1 设置服务器端口号 po ...

  5. 2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同。实现一个叫「餐盘」的类 DinnerPlates, Di

    2024-03-09:用go语言,我们把无限数量的栈排成一行,按从左到右的次序从 0 开始编号, 每个栈的的最大容量 capacity 都相同.实现一个叫「餐盘」的类 DinnerPlates, Di ...

  6. Android Studio源码导入与调试

    从事Android开发都需要涉及到Android源码的阅读,特别是系统应用或者Framework开发,读代码的时间远远比写代码的时间更多. 一. 生成iml与ipr 在Android Studio中导 ...

  7. Qt HTTP网络相关GET,POST(HTTP 模拟POST 表单(multipartform)最简单和正式的方法)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  8. 记录--h5调用手机摄像头踩坑

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 背景 一般业务也很少接触摄像头,有也是现成的工具库扫个二维码.难得用一次,记录下踩坑. 2.调用摄像头的方法 2.1. input ...

  9. 记录--手把手教你,用electron实现截图软件

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 因为我们日常开发项目的时候,需要和同事对接api和文档还有UI图,所以有时候要同时打开多个窗口,并在多个窗口中切换,来选择自己要的信 ...

  10. 记录--这样封装列表 hooks,一天可以开发 20 个页面

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 这样封装列表 hooks,一天可以开发 20 个页面 前言 在做移动端的需求时,我们经常会开发一些列表页,这些列表页大多数有着相似的功能: ...