前言
前两天写了一篇openGauss3.1关于mysql的相关特性,但由于openGauss官网提供下载的版本还是9月30号第一次发布的版本,很多特性都还没合入,所以不少爱好者不能轻易体验到。
虽然openGauss已经提供了“一键式编译脚本”,但是还是得做一些前提准备,对于一些不熟悉在linux编译程序的人来说,还是有些门槛。
于是我整理了2个脚本,只要提前准备好一个能联网的centos7.9_x86_64,即可实现真正的一键式编译并自动安装及启动数据库,顺便创建好了一个B库。
脚本
- 新建一个/opt/onekey-build-og.sh文件,存入以下内容
#!/bin/bash
# 环境 centos 7.9 4C 8G (配置越高编译越快,4G内存编译不了,磁盘大概需要14GB)
# 安装一些依赖 (libaio-devel如果不卸载重装,可能会找不到io_context_t)
yum remove libaio-devel libaio -y
yum install -y git gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libaio libaio-devel flex bison ncurese-devel glibc-devel patch rehat-lsb-core readline-devel perl gcc gcc-c++
# 新建一个用户
useradd omm310
# 创建目录
mkdir /opt/omm310
chown omm310 /opt/omm310 -R
# 切换用户执行编译及安装
chown omm310 install.sh
chmod 777 install.sh
su - omm310 -c "cd /opt && bash install.sh"
- 新建一个/opt/install.sh文件,存入以下内容
#!/bin/bash
# 创建数据目录
cd /opt/omm310
mkdir data
# 下载编译好的三方库并解压(这里下载的是Centos7.6_x86_64的版本,在7.6和7.9都能用)
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
tar -xvf openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
# 克隆数据库源码仓
git clone https://gitee.com/opengauss/openGauss-server
# 配置环境变量(这里最核心的一点就是把gcc的默认路径改了,操作系统默认的版本太低)
echo "export CODE_BASE=/opt/omm310/openGauss-server # Path of the openGauss-server file " >> ~/.bash_profile
echo "export BINARYLIBS=/opt/omm310/openGauss-third_party_binarylibs_Centos7.6_x86_64 # Path of the binarylibs file " >> ~/.bash_profile
echo "export GAUSSHOME=\$CODE_BASE/dest/ " >> ~/.bash_profile
echo "export GCC_PATH=\$BINARYLIBS/buildtools/gcc7.3/ " >> ~/.bash_profile
echo "export CC=\$GCC_PATH/gcc/bin/gcc " >> ~/.bash_profile
echo "export CXX=\$GCC_PATH/gcc/bin/g++ " >> ~/.bash_profile
echo "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 " >> ~/.bash_profile
echo "export PATH=\$GAUSSHOME/bin:\$GCC_PATH/gcc/bin:\$PATH " >> ~/.bash_profile
echo "export PGDATA=/opt/omm310/data" >> ~/.bash_profile
echo "export PGPORT=26000" >> ~/.bash_profile
echo "export PGDATABASE=postgres" >> ~/.bash_profile
# 加载环境变量
source ~/.bash_profile
# 进入源码目录
cd $CODE_BASE
# 编译server (这里就是openGauss提供的一键式编译脚本)
sh build.sh -m release -3rd $BINARYLIBS
# 文件夹改名 (原文档说会生成dest目录,但实际上是生成到了mppdb_temp_install,所以改个名)
mv mppdb_temp_install dest
# 克隆插件仓,并复制到server源码目录内(必须单独编译,因为如果先放到server源码内,server都会编译不成功)
git clone https://gitee.com/opengauss/Plugin
cp Plugin/contrib/* $CODE_BASE/contrib/ -r
# 编译dolphin插件
cd contrib/dolphin
make install
# 复制插件到编译好的server目录
cp *.so $GAUSSHOME/lib/postgresql/
cp *.control $GAUSSHOME/share/postgresql/extension/
cp *.sql $GAUSSHOME/share/postgresql/extension/
# 初始化数据库
gs_initdb --nodename=primary --pwpasswd=Enmo@123
# 配置一些数据库参数
echo "port=$PGPORT" >> $PGDATA/postgresql.conf
echo "listen_addresses = '0.0.0.0'" >> $PGDATA/postgresql.conf
echo "password_encryption_type = 0" >> $PGDATA/postgresql.conf
echo "log_directory = 'pg_log'" >> $PGDATA/postgresql.conf
echo "remote_read_mode=non_authentication" >> $PGDATA/postgresql.conf
echo "host all all 0.0.0.0/0 md5" >> $PGDATA/pg_hba.conf
# 启动数据库
gs_ctl start
# 连接数据库并创建一个B库
gsql -c "create database og_dolphin dbcompatibility='B'";
# 开启一些mysql特性
gsql -c "alter database og_dolphin set enable_set_variable_b_format = on;";
gsql -c "alter database og_dolphin set dolphin.lower_case_table_names = 0;";
gsql -c "alter database og_dolphin set dolphin.B_COMPATIBILITY_MODE = on;";
gsql -c "alter system set enable_dolphin_proto= on;";
gsql -c "alter system set dolphin_server_port=3307;";
gs_ctl restart
- 对onekey-build-og.sh 授权可执行
chmod 777 onekey-build-og.sh
- 然后执行这个sh文件(4C 8G 100M宽带 大约30分钟)
./onekey-build-og.sh
连接数据库
su - omm310
gsql -r -d og_dolphin
测试
- 表名大小写敏感及反引号
create table Test_123 (`a` int, `B` int ,"Ab" int);
\d+ "Test_123"
select * from Test_123;--不会报错
select * from test_123;--会报错
- mysql客户端连接
如果机器上没有安装mysql客户端,则先安装一下
yum -y install http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
yum search mysql
yum install -y mysql-community-client.x86_64
创建一个新的数据库用户
su - omm310
gsql -c "create user test_user password 'openGauss123';"
用mysql客户端连接openGauss,不过目前在mysql命令行客户端上无法返回执行结果,使用其他工具测试正常,比如mogeaver
mysql -P 3307 -u test_user -popenGauss123 -h 127.0.0.1 -D og_dolphin
环境清理命令
如果编译出错,或者源码有更新,想重新编译,可以执行下面的命令清理环境,会把之前的源码和数据库程序、数据都删掉
su - omm
gs_ctl stop
exit
userdel omm310
rm -rf /opt/omm310
rm -rf /home/omm310