【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接

2年前 (2022) 程序员胖胖胖虎阿
288 0 0

1、Hype-V虚拟机安装openEuler

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

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

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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
如果你的openEuler版本或平台不同,做相应的更改即可。至此yum应该已经可以正常使用了。

  1. 利用windows powershell连接hype-v,并关闭防火墙,键入如下命令
yum install -y net-tools
yum install -y vim

然后查看一下ip,ifconfig
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
我们可以打开Windows powershell,操作如下
命令ssh root@(ifconfig网卡的地址)输入一下密码就行了,这里也可以配置密钥进行免密连接,具体不再说了,这里也可以用xshell之类的工具进行连接,不连接都行,怎么方便怎么来
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
接下来我们关闭虚拟机防火墙,为了后续端口的开放方便,但是在服务器上不建议这么做

systemctl stop firewalld.service
systemctl disable firewalld.service

如下
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
这里也可以开启openGauss的图形化页面,具体操作如下,这里没什么作用,但是对于不熟悉命令行的小伙伴应该更友好

yum install ukui 

yum groupinstall fonts -y

systemctl set-default graphical.target

reboot

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
3. 接下来我们准备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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
4. 修改一下python的版本,
首先看一下python的版本
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
请将Python默认版本指向Python 3.x,具体操作如下:

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

接下来再看一下python的版本,如下
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
5. 设置字符集及环境变量
依次输入如下命令

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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
接着如下

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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
可以来验证一下结果是否正确

echo $LD_LIBRARY_PATH

若如下,则结果无问题
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
6. 对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
  1. 接下来我们调整系统参数
[root@db1 ~]# vi /etc/profile.d/performance.sh

如图,按i进入编辑模式,用#注释掉sysctl -w vm.min_free_kbytes=112640 &> /dev/null,按Esc后:wq保存退出。
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
8. 接下来下载源到/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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
再输入

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

若出现以下结果,则正确
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
然后安装依赖

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/如下
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
安装依赖

 
 
 
 
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

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
保存退出

开始编译第三方软件

 
 
 
 
sh build_all.sh

若报错:You should download gcc-8.2.0.tar.gz or gcc-8.2.0.zip and put it <span class="hljs-keyword">in</span> /root/openGauss-third_party/build/../buildtools/gcc/如下解决

<span class="hljs-built_in">cd</span> /root/openGauss-third_party/buildtools/
mv gcc-releases-gcc-8.2.0.tar.gz gcc-8.2.0.tar.gz
<span class="hljs-built_in">cd</span> /root/openGauss-third_party/build/
再重新执行命令

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

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

编译好后如图所示【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
接下来我们设置环境变量

 
 
 
 
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'

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
选择Release版本进行配置

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

开始编译

 
 
 
 
make -j

【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接

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

最后一步make install
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
软件安装路径为:$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环境变量

右击“此电脑”选择“属性”,点击“高级系统设置”。
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
点击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录。
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
点击“环境变量”,新建系统变量“JAVA_HOME”,输入JDK安装目录
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
变量值填入jdk安装目录
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
编辑系统变量“path”。
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
新建系统变量“CLASSPATH”变量,输入“.”即可。
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
然后在打开windows powershell输入java --version,如果输出如下,则安装成功
【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接

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");
    }
}

相关文章

暂无评论

暂无评论...