From 0dde828cf75b549e6d33e45c161a1d187040afa5 Mon Sep 17 00:00:00 2001 From: zhaobingyu <1783692558@qq.com> Date: Thu, 16 Feb 2023 20:57:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85openGauss=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=A3=81=E5=8C=96=E5=BC=80=E5=8F=91=E8=80=85=E5=85=A5=E9=97=A8?= =?UTF-8?q?=E6=8C=87=E5=8D=97=E4=BA=8C=E6=96=87=E6=A1=A3--=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0Dsstest=E7=BC=96=E8=AF=91=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\346\214\207\345\215\227(\344\272\214).md" | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git "a/content/zh/post/cchen676/openGauss_\350\265\204\346\272\220\346\261\240\345\214\226\345\274\200\345\217\221\350\200\205\345\205\245\351\227\250\346\214\207\345\215\227(\344\272\214).md" "b/content/zh/post/cchen676/openGauss_\350\265\204\346\272\220\346\261\240\345\214\226\345\274\200\345\217\221\350\200\205\345\205\245\351\227\250\346\214\207\345\215\227(\344\272\214).md" index 66dc4967..de63b09f 100644 --- "a/content/zh/post/cchen676/openGauss_\350\265\204\346\272\220\346\261\240\345\214\226\345\274\200\345\217\221\350\200\205\345\205\245\351\227\250\346\214\207\345\215\227(\344\272\214).md" +++ "b/content/zh/post/cchen676/openGauss_\350\265\204\346\272\220\346\261\240\345\214\226\345\274\200\345\217\221\350\200\205\345\205\245\351\227\250\346\214\207\345\215\227(\344\272\214).md" @@ -28,7 +28,7 @@ openGauss资源池化是openGauss推出的一种新型的集群架构.通过DMS 2. 对磁阵有一定的了解 3. 对传统的openGauss编译方式十分熟悉 -### 二、开发自验证编译安装指南 +### 三、开发自验证编译安装指南 1. 资源池化架构参考: ![图1](/content/zh/post/cchen676/title/dms1.JPG "图1") @@ -37,18 +37,27 @@ openGauss资源池化是openGauss推出的一种新型的集群架构.通过DMS 4. 这里介绍一种可以用于开发者自己学习或开发的编译环境搭建方式, 不需要cm和om, 不需要磁阵, 仅需要一台普通的物理机就可以搭建出资源池化的环境. 5. 需要注意的是, 因为没用到cm, 这种方式搭建的环境不能用于调试主备倒换或failover场景, 只能用于验证集群正常运行时的场景 -### 三、独立编译安装指南 - -注意: 以下请勿用于生产环境 +### 四、独立编译安装指南 +**注意:** + - 以下请勿用于生产环境 + - 必须是debug版本,不能用release版本 + - 三方库版本可能不是最新,此时需要手动更新DMS组件。方法为 a.下载最新版本CBB代码,编译安装替换三方库中的CBB; b.下载最新版本的DMS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DMS至指定版本; c.编译安装替换三方库中的DMS组件 + - 不管三方库版本是否为最新版本,都需要对DSS组件进行3中的操作 + - 当编译完DSS、DMS、CBB之后,会自动更新到三方库,只需要按正常流程编译数据库就行了 1. 环境预备: 仅需要一台单独的物理机, 剩余磁盘空间最好足够大, 建议大于2T, 不低于1T - 2. 环境预备: 假设已经自行使用编译方式编译出了openGauss带资源池化代码的debug版本的安装包, 可以通过确认生成的bin目录下是否有dssserver, dsscmd, lib目录下是否有libdms.so, libdssapi.so , libdssaio.so, 来判断 - - 注意: 必须是debug版本,不能用release版本 - - 三方库版本可能不是最新,此时需要手动更新DMS/DSS组件。方法为 a.下载最新版本CBB代码,编译安装替换三方库中的CBB; b.下载最新版本的DMS/DSS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DMS/DSS至指定版本; c.编译安装替换三方库中的DMS/DSS组件 + 2. 环境预备: 假设已经自行使用编译方式编译出了openGauss带资源池化代码的debug版本的安装包, 可以通过确认生成的bin目录下是否有dssserver, dsscmd, lib目录下是否有libdms.so, libdssapi.so , libdssaio.so, 来判断,同时要保证已经编译出的安装包使用的是Dsstest方式的DSS组件 + 3. 环境准备: 因为本博客介绍的安装方式为非cm安装,需要对DSS组件使用Dsstest方式进行编译,因此在编译数据库之前,需要下载DSS对应代码并自行采用dsstest方式对DSS进行编译,编译代码如下所示,编译脚本文件路径为/xxx/.../DSS/build/linux/opengauss/build.sh,具体如何编译可以查看对应README文件 + - 下载最新版本的DMS代码,下载链接为 https://gitee.com/opengauss/DSS + - 据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DSS至指定版本 + - -3rd后面跟三方库对应的绝对路径 +```shell +sh build.sh -3rd /xxx/.../binarylibs -t cmake -m DebugDsstest +``` 下面是以2个节点为例 - 3. 配置好环境变量/home/cctest/envfile, 参考示例, 其中DSS_HOME是dn实例1的dssserver运行时需要的目录, 需要手动新建 + 4. 配置好环境变量/home/cctest/envfile, 参考示例, 其中DSS_HOME是dn实例1的dssserver运行时需要的目录, 需要手动新建 ```shell export GAUSSHOME=/home/test/openGauss-server/dest/ @@ -56,8 +65,8 @@ export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export PATH=$GAUSSHOME/bin:$PATH export DSS_HOME=/home/test/dss/dss0/dssdba ``` - 4. 需要注意的是一台服务器上建多个dn(数据库)节点, ip是相同的, 服务使用的端口号不同 - 5. 新建dsssever需要的目录: + 5. 需要注意的是一台服务器上建多个dn(数据库)节点, ip是相同的, 服务使用的端口号不同 + 6. 新建dsssever需要的目录: ```shell cd /home/test mkdir -p dss/dss0/dssdba/cfg @@ -66,12 +75,12 @@ export DSS_HOME=/home/test/dss/dss0/dssdba mkdir -p dss/dss1/dssdba/log mkdir -p dss/dev ``` - 6. 用dd命令创建一个模拟的块设备文件(执行时间依赖于磁盘的性能), 下面的命令是建2T的命令 + 7. 用dd命令创建一个模拟的块设备文件(执行时间依赖于磁盘的性能), 下面的命令是建2T的命令 - 请不要直接拷贝, 请务必根据自己需要的大小自己调整下bs和count的值, 否则磁盘会爆 ```shell dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=1024000 >/dev/null 2>&1 ``` - 7. 创建2个dn节点需要的dss实例1和dss实例0的配置: + 8. 创建2个dn节点需要的dss实例1和dss实例0的配置: 实例1配置: ```shell @@ -121,7 +130,7 @@ export DSS_HOME=/home/test/dss/dss0/dssdba data:/home/test/dss/dev/dss-dba ``` - 8. 建dssserver需要的卷, 起dssserver + 9. 建dssserver需要的卷, 起dssserver ```shell ##这里是步骤3中配好的环境变量 @@ -138,7 +147,7 @@ export DSS_HOME=/home/test/dss/dss0/dssdba ``` - 注意: dss不支持启动后修改卷组配置,如涉及修改请重新执行上述步骤 - 9. 手动执行多节点的initdb + 10. 手动执行多节点的initdb ```shell mkdir -p /home/test/data @@ -175,13 +184,13 @@ ss_log_max_file_size = 1GB sed '91 ahost all all 0.0.0.0/0 sha256' -i /home/test/data/node2/postgresql.conf ``` - 10. 依次启动节点1和节点2 + 11. 依次启动节点1和节点2 ```shell gs_ctrl start -D /home/test/data/node1 gs_ctrl start -D /home/test/data/node2 ``` - 11. 部分补充说明: + 12. 部分补充说明: - ss_log_level参数用于控制日志中打印DMS和DSS相关的日志, 日志目录在pg_log/DMS里面 - 17102和18102是dssserver要用的端口 -- Gitee