首页 > 其他分享 >【我和openGauss的故事】openEuler20.03上编译安装opengauss-5.0.0

【我和openGauss的故事】openEuler20.03上编译安装opengauss-5.0.0

时间:2023-08-08 20:00:51浏览次数:46  
标签:5.0 openEuler20.03 server -- debug home openGauss opengauss

【我和openGauss的故事】openEuler20.03上编译安装opengauss-5.0.0

ziyoo0830 [openGauss](javascript:void(0);) 2023-08-03 16:49 发表于四川

为了更好地学习openGauss数据库知识,有时候需要去调试源代码来深入了解一些东西。以下记录了在openEuler20.03上编译最新的openGauss-server源代码的过程,记录了手工编译过程遇到的一些问题,同时尝试使用vscode去调试了下源代码,文中也提供了几个vscode的调试样例。

vscode调试参考:https://www.modb.pro/db/1683159982970331136,https://www.modb.pro/db/658344。

以下采用的是手工编译的方法来安装。

下载第三方libs

mkdir -p /home/debug/opengauss/binarylibs/
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz
# 以上提供的是已经编译好的包,无需再次编译, 用--with-3rdpartydir不要用--with-3rdparty_sourcedir
tar -xf openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz -C /home/debug/opengauss/binarylibs/

下载opengauss-server代码

下载5.0.0的源代码

cd /home/debug/opengauss/
git clone https://gitee.com/opengauss/openGauss-server.git openGauss-server -b 5.0.0

configure

cd openGauss-server
 # 编译debug版本
./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --with-3rdpartydir=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib
 
 # 以上是sh build.sh脚本中使用的configure命令参数记录。
 ./configure --gcc-version=7.3.0 --prefix=/home/debug/opengauss/opengauss-server/openGauss-server/mppdb_temp_install --3rd=/home/debug/opengauss/binarylibs/ --enable-thread-safety --with-readline --without-zlib CFLAGS=-O0  --enable-mot --enable-debug --enable-cassert CC=g++

make

make 

make[2]: Leaving directory '/home/debug/opengauss/opengauss-server/openGauss-server/src/test/regress'
make[1]: Leaving directory '/home/debug/opengauss/opengauss-server/openGauss-server/src'
make -C config all
make[1]: Entering directory '/home/debug/opengauss/opengauss-server/openGauss-server/config'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/debug/opengauss/opengauss-server/openGauss-server/config'

make install

make install

make[1]: Leaving directory '/home/debug/opengauss/opengauss-server/openGauss-server/contrib/dblink'
openGauss installation complete.

配置环境变量

# more .bashrc

export CODE_BASE=/home/debug/opengauss-server
export BINARYLIBS=/home/debug/binarylibs
export GAUSSHOME=/home/debug/ogsql
export GCC_PATH=$BINARYLIBS/buildtools/gcc7.3
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
export PGDATA=/home/debug/ogdata
export PATH=$GAUSSHOME/bin:$PATH
export S3_CLIENT_CRT_FILE=$GAUSSHOME/lib/client.crt
export PGHOST=$PGDATA/

初始化数据库

mkdir -p /home/debug/ogdata
gs_initdb -D /home/debug/ogdata --nodename=pghost1 

Success. You can now start the database server of single node using:

    gaussdb -D /home/debug/ogdata --single_node
or
    gs_ctl start -D /home/debug/ogdata -Z single_node -l logfile

启动数据库

gs_ctl start -D /home/debug/ogdata -Z single_node -l /home/debug/ogdata/log/opengauss.log

登录数据库

gsql -d postgres -p 5432 -r

问题记录

expected primary-expression

…/…/…/src/include/storage/cfs/cfs_converter.h:15:55: error: expected primary-expression before ‘/’ token constexpr int CFS_EXTENT_COUNT_PER_FILE = RELSEG_SIZE / CFS_EXTENT_SIZE; ^ In file included from cfs_tools.cpp:9:0: …/…/…/src/include/storage/cfs/cfs_converter.h:15:55: error: expected primary-expression before ‘/’ token constexpr int CFS_EXTENT_COUNT_PER_FILE = RELSEG_SIZE / CFS_EXTENT_SIZE; ^ make[3]: *** [Makefile:49: libpagecompression.so] Error 1 make[3]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src/lib/page_compression’ make[2]: *** [Makefile:31: all-page_compression-recurse] Error 2 make[2]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src/lib’ make[1]: *** [Makefile:68: all-lib-recurse] Error 2 make[1]: Leaving directory ‘/home/debug/opengauss/opengauss-server/openGauss-server/src’ make: *** [GNUmakefile:12: all-src-recurse] Error 2

# configure 脚本中该值无法计算 ,可以直接写按默认值计算出的值。 # RELSEG_SIZE=`expr '(' 1024 / ${blocksize} ')' '*' ${segsize} '*' 1024` # RELSEG_SIZE=`expr '(' 1024 / 8 ')' '*' 1 '*' 1024` RELSEG_SIZE=131072

vscode 调试代码

gaussdb的服务进程入口为src/gausskernel/process/main/main.cpp下的main函数,在此函数的第一行代码打上断点。

详细配置调试方法可参考网上方法。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "gaussdb --help",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/debug/opengauss/opengauss-server/dest/bin/gaussdb",
            "args": [
                "--help"
            ],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "gaussdb -D /home/debug/ogdata",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/debug/opengauss/opengauss-server/dest/bin/gaussdb",
            "args": [
                "--D",
                "/home/debug/ogdata"
            ],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

总结

从以上编译过程可以看到,openGauss的编译还是比较简单的。 也可以编译出tar包,部署到线上测试环境,使用gdb工具进行调试。

标签:5.0,openEuler20.03,server,--,debug,home,openGauss,opengauss
From: https://blog.51cto.com/u_16191492/7011818

相关文章

  • openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA
    openGauss学习笔记-34openGauss高级数据管理-SCHEMASCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的SCHEMA下而不引起冲突。每个数据库包含一个或多个SCHEMA。数据库中的每个......
  • openGauss学习笔记-33 openGauss 高级数据管理-视图
    openGauss学习笔记-33openGauss高级数据管理-视图视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到......
  • Photoshop 2023 for mac(ps 2023 ai beta)v25.0beta中文版
    Photoshop 2023mac更新了,智能AI在ps 2023beta版上线了。ps2023更新内容有内置AI绘图、有实时渐变、生成填充等功能,还支持神经滤镜,帮你打造更加强大的创作。ps2023mac中文版系统要求•需要macOS11或更高版本•Intel或AppleSilicon•8GBRAM(推荐16GB)•4GB可用硬......
  • Coreference Resolution 对于OntoNotes 5.0数据集的预处理操作
    1.下载数据集1.1下载Conll-2012相关数据集和脚本1.2下载OntoNotes......
  • ps 2023 v25.0 AI功能 Intel/m1/M2电脑均可!
    Photoshop2023是由Adobe开发的一款图像编辑软件,它被广泛用于图像处理、图形设计和数字艺术创作等领域。它拥有丰富的功能和工具,可以对图像进行裁剪、调整大小、修饰、修复、添加滤镜和特效等操作,同时也支持图层、蒙版、文字处理、色彩校正、绘画等高级功能。ps最新版本:https://......
  • 【我和openGauss的故事】 openGauss 5.0.0 事务相关语法
    【我和openGauss的故事】openGauss5.0.0事务相关语法秋秋openGauss2023-08-0316:49发表于四川众所周知,openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行,是PostgreSQL9.2.4版本的硬分叉,经历HUAWEI多年的孵化,并已历经了两个LTS版本。现在的openGau......
  • 【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试
    【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试DarkAthenaopenGauss2023-08-0418:01发表于四川背景先说下数据库里说的函数重载是什么。比如我们知道数据库可能会有同名的函数,但是函数的参数声明不一样selectto_char(sysdate,'yyyymmdd')fromdual;se......
  • 【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss
    【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGaussDemonCharm[openGauss](javascript:void(0);)2023-08-0418:01发表于四川前言本博客介绍了使用Ora2Pg迁移oracle数据到openGauss1、下载及安装Ora2Pg1.1、下载说明:PerlDBD:http://search.CPAN.org#只需在搜索......
  • 【我和openGauss的故事】为集群实现VIP
    【我和openGauss的故事】为集群增加VIPlqkittenopenGauss2023-08-0418:01发表于四川openGauss发布以来,原生支持一主多备,RTO<10S,高可用性能大大增强。自openGauss3.0开始,更新了集群管理套件CM,易用性也得到了提高。但对于客户端来说,数据库端的切换,需要手工完成。openGauss增加VI......
  • MTK 2.9.2 迁移Oracle 11g 至 openGauss 5.0.0操作指南
    MTK2.9.2迁移Oracle11g至openGauss5.0.0操作指南尚雷openGauss2023-08-0418:01发表于四川前言:最近在进行一些去O的验证测试,之前测试过MTK迁移Oracle到MogDB,正好测试下Oracle到openGauss的迁移,于是做了如下测试,并整理记录成文,还望对此熟悉的朋友多多指正。一、简介MTK全......