暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接

1、Hype-V虚拟机安装openEuler

虚拟机平台有很多,像vmwareHype-VVirtualBox等等,考虑到与wsl2的兼容,这里选用Hype-V来安装x86架构的openEuler

  • 开启hype-v虚拟机

    打开控制面板,选择卸载程序
    image.png
    选择启用或关闭Windows功能
    image.png
    勾选hype-v安装功能完成后重启电脑
    image.png

  • 下载x86架构openEuler镜像
    打开openEuler官网,我们这里打算使用openEuler-20.03-LTS长期支持版
    依次打开openEuler-20.03-LTS-ISO-x86-64,选择openEuler-20.03-LTS-x86_64-dvd.iso)进行下载
    image.png
    打开Hyper-V,这里配置镜像流程不再累赘
    image.png
    配置完成后,就可以进入安装系统的页面了这里选择Install openEuler就好
    image.png
    这里进入到我们非常熟悉的类似与centOS的安装页面,按照步骤安装就行
    image.png
    这里我们打算直接用root用户登录,设置一下root密码就行,不需要创建用户了,这里等待安装好就行,安装完成后会提示你重启,这里先关键,拔掉镜像(DVD驱动设置为无,不让会进入安装页面)后启动
    image.png
    image.png
    OK这里启动成功,输入一下root账号和密码,便可以成功进入openEuler页面了,这里没有图像画页面只有命令行(精简的openEuler系统应该大部分人都喜欢吧,实在不行可以安装图像画页面但是不建议)image.png

2、openEuler虚拟系统的配置(支持图形化)

  1. 首先添加一下软件源,官方提供的openEuler镜像(20.03版本)是没有自带软件源的,这里yum -install是没有任何东西的

step1:cd /etc/yum.repos.d/
step2:sudo vi openEuler_x86_64.repo
step3:在最下方添加如下代码

[base] name=base baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/ enabled=1 gpgcheck=0

step4:退出vim,逐行键入如下命令

yum repolist all sudo yum-config-manager --enable base

image.png

如果你的openEuler版本或平台不同,做相应的更改即可。至此yum应该已经可以正常使用了。

  1. 利用windows powershell连接hype-v,并关闭防火墙

键入

yum install -y net-tools yum install -y vim

然后查看一下ip,ifconfig
image.png
我们可以打开Windows powershell,操作如下

命令ssh root@(ifconfig网卡的地址)输入一下密码就行了,这里也可以配置密钥进行免密连接,具体不再说了,这里也可以用xshell之类的工具进行连接,不连接都行,怎么方便怎么来
image.png
接下来我们关闭虚拟机防火墙,为了后续端口的开放方便,但是在服务器上不建议这么做

systemctl stop firewalld.service systemctl disable firewalld.service

如下
image.png
这里也可以开启openGauss的图形化页面,具体操作如下,这里没什么作用,但是对于不熟悉命令行的小伙伴应该更友好

yum install ukui yum groupinstall fonts -y systemctl set-default graphical.target reboot

image.png

  1. 接下来我们准备openGauss的安装依赖,键入如下命令
yum install libaio-devel ncurses-devel pam-devel libffi-devel libtool readline-devel zlib-devel python3-devel autoconf flex gcc gcc-c++ patch byacc bison -y

image.png

  1. 修改一下python的版本,

首先看一下python的版本
image.png
请将Python默认版本指向Python 3.x,具体操作如下:

rm -rf /usr/bin/python ln -s /usr/bin/python3.7 /usr/bin/python

接下来再看一下python的版本,如下
image.png

  1. 设置字符集及环境变量
    依次输入如下命令

    cat >>/etc/profile<<EOF export LANG=en_US.UTF‐8 EOF -------------------------------------------命令分割线 cat >>/etc/profile<<EOF export packagePath=/opt/software/openGauss EOF -------------------------------------------命令分割线 source /etc/profile

image.png
接着如下

cat >>/etc/profile<<EOF export LD_LIBRARY_PATH=$packagePath/script/gspylib/clib:$LD_LIBRARY_PATH EOF ----------------------------------------命令分割线 source /etc/profile

image.png
可以来验证一下结果是否正确

echo $LD_LIBRARY_PATH

若如下,则结果无问题
image.png

  1. 对swap分区的设置

    linux系统会用内存做很 多的buffer和cache,所以经常会看到内存用完了,其实这里面可能只有很少的一部分是程序用到的。当内存不足的时候,系统有两种选择,一是减少缓存的量,另一种是把部分程序使用的内存换到swap中。如果是openGauss使用的内存被转移到swap中了,会对性能有很大的影响,所以应该尽量保持 openGauss使用的部分在内存中不被转移出去。

    • 一般mysql可以使用memlock启动mysql是mysqld保持在内存中,不过使用这个选项需要以 root运行服务器,在openGuass上还没有用过。

    • 还可以使用关闭swap,可以使用swapoff或者umount分区,不过当内存不够大的时候(比如只有1G)系统不太稳定,可能 会导致openGauss内存不足出错。

    • 也可以设置系统变量vm.swappiness,修改 /etc/sysctl.conf 添加 vm.swappiness = 0,并执行 sysctl -p 或 sysctl -w vm.swappiness=0。这个变量的范围是0至100,默认值60,当内存不足时,此变量的值小则系统偏向于减少缓存,反之则转移程序内存到 swap。但即使将它设为0了,系统仍然有可能使用swap。

    一般来说,数据库和能够自带缓存的程序,都不希望系统把内存页置换出去。最简单的“阻止”swap的策略是修改系统参数,参考:

    sysctl -w vm.swappiness=0

    echo 1>/proc/sys/vm/drop_caches

    第一条语句是建议系统不要使用swap,

    第二条语句是让系统清理cache,以便释放更多内存。但第一条并不能够绝对阻止swap(因为只是建议)。

    这里我们采用最粗暴简单的方法,关闭swap交换内存

    [root@db1 ~]# swapoff -a
  2. 接下来我们调整系统参数

[root@db1 ~]# vi /etc/profile.d/performance.sh

如图,按i进入编辑模式,用#注释掉sysctl -w vm.min_free_kbytes=112640 &> /dev/null,按Esc:wq保存退出。
image.png

  1. 接下来下载源到/etc/yum.repos.d/openEuler_x86_64.repo
    输入命令
curl -o /etc/yum.repos.d/openEuler_x86_64.repo https://mirrors.huaweicloud.com/repository/conf/openeuler_x86_64.repo

image.png
再输入

cat /etc/yum.repos.d/openEuler_x86_64.repo

若出现以下结果,则正确

image.png
然后安装依赖

yum install libaio* -y yum install libnsl* -y

3、openEuler虚拟机安装openGauss

这里使用opengauss:1.0.1版本进行配置安装,下载地址如下,可以下载完成传到openEuler,也可以直接通过wget下载

https://gitee.com/opengauss/openGauss-server/repository/archive/v1.0.1

https://gitee.com/opengauss/openGauss-server/repository/archive/v1.0.1

还需要下载gcc-8.2.0,低版本opengauss不支持gcc-7*

http://mirror.koddos.net/gcc/releases/gcc-8.2.0/gcc-8.2.0.tar.gz

下载完成后,全部放入/root/目录下,即cd /root/如下
image.png
安装依赖

yum install zlib-devel python3-devel autoconf flex gcc gcc-c++ patch byacc bison -y

gcc拷贝到/root/openGauss-third_party/buildtools/gcc/

cp gcc-releases-gcc-8.2.0.tar.gz /root/openGauss-third_party/buildtools/gcc/

当前openGauss官方支持ARM架构的openEuler,这里支持x86架构的openEuler需要修改get_PlatForm_str.sh文件。

cd /root/openGauss-third_party/build/ vi get_PlatForm_str.sh

添加这样一行

elif [ "$os_name"x = "openEuler"x -a "$cpu_arc"x = "x86_64"x ]; then os_str=openeuler_x86_64

image.png
保存退出

开始编译第三方软件

sh build_all.sh 若报错:You should download gcc-8.2.0.tar.gz or gcc-8.2.0.zip and put it in /root/openGauss-third_party/build/../buildtools/gcc/如下解决 cd /root/openGauss-third_party/buildtools/ mv gcc-releases-gcc-8.2.0.tar.gz gcc-8.2.0.tar.gz cd /root/openGauss-third_party/build/ 再重新执行命令

用户执行以上命令之后,可以自动生成数据库编译所需的开源第三方软件,如果想单独的生成某个开源三方软件,可以进入对应的目录,执行build.sh脚本,如/root/openGauss-third_party/dependency/。最终编译构建出的结果会存放在openGauss-third_party同级的binarylibs目录。这些文件会在后面编译openGauss-server时用到。

PS:这一步需要好几长时间,我已经哭晕在厕所

编译好后如图所示image.png
接下来我们设置环境变量

cd /root/ vi bashrc

在最底下加上下面这些,千万别错,一失足成千古恨

export CODE_BASE=/root/openGauss-server # Path of the openGauss-server file export BINARYLIBS=$CODE_BASE/../binarylibs # Path of the binarylibs file export GAUSSHOME=/opt/opengauss/ export GCC_PATH=$BINARYLIBS/buildtools/openeuler_x86_64/gcc8.2 export CC=$GCC_PATH/gcc/bin/gcc export CXX=$GCC_PATH/gcc/bin/g++ export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH

最后再更新一下环境变量

source bashrc

设置Makefile

当前openGauss官方支持ARM架构的openEuler,这里支持x86架构的openEuler需要修改Makefile文件。

cd openGauss-server vi ./src/gausskernel/Makefile

修改内容如下图所示,将绿色部分插入如下内容

else ifeq( $(PLAT_FORM_STR), openeuler_x86_64) cp '$(LIBCURL_LIB PATH)/libcurl.so.4.6.0' '$(DESTDIR)$(libdir)/libcurl.so.4.6.0'

image.png
选择Release版本进行配置

./configure --gcc-version=8.2.0 CC=g++ CFLAGS="-O2 -g3" --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-thread-safety --enable-thread-safety

开始编译

make -j

image.png

看到上述截图中的结果表明编译成功。

最后一步make install
image.png
软件安装路径为:$GAUSSHOME

二进制放置路径为:$GAUSSHOME/bin

这样便在x86的openEuler虚拟机中可以使用openGauss了

启动openGauss服务直接使用

gs_om -t start

连接数据库使用

sudo gsql

连接进入数据库,可以修改数据库的端口号,用户和密码

4、JDBC的使用编写与连接

  1. 下载JDK。

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

这里安装JDK-8的开源版本尚可

  • 配置jdk环境变量

右击“此电脑”选择“属性”,点击“高级系统设置”。
image.png
点击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录。
image.png
点击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录
image.png
变量值填入jdk安装目录
image.png
编辑系统变量“path”。
image.png
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
新建系统变量“CLASSPATH”变量,输入“.”即可。
image.png
然后在打开windows powershell输入java --version,如果输出如下,则安装成功
image.png

2.jdbc连接的编写

这里使用idea工具插入数据库和连接数据库不再累赘,看jdbc的主要代码

import java.sql.*; public class GaussDBMySQLDemo { static final String JDBC_DRIVER = "org.postgresql.Driver"; static final String DB_URL = "jdbc:postgresql://你的虚拟机IP地址:你的数据库占用端口号/要连接的数据库"; // 数据库的用户名与密码,需要根据自己的设置 static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); // 打开链接 System.out.println("connecting..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); //实例化对象 stmt = conn.createStatement(); // 执行查询 String sql; sql = "SELECT id, name, url FROM websites"; ResultSet rs = stmt.executeQuery(sql); // 创建表 sql = "CREATE TABLE COMPANY1 " + "(ID INT PRIMARY KEY NOT NULL," + " NAME TEXT NOT NULL, " + " AGE INT NOT NULL, " + " ADDRESS CHAR(50), " + " SALARY REAL)"; rs = stmt.executeQuery(sql); 关闭脚本文件 stmt.close(); // 结束连接 c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName()+": "+ e.getMessage() ); System.exit(0); } System.out.println("Table created successfully"); } }
最后修改时间:2021-07-04 21:52:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论