Guía de inicio para desarrolladores de agrupación de recursos de openGauss

breve introducción

La agrupación de recursos de openGauss es un nuevo tipo de arquitectura de clúster lanzada por openGauss. A través de los componentes DMS y DSS, se realizan el intercambio de datos de almacenamiento subyacente de múltiples nodos en el clúster y el intercambio de memoria en tiempo real entre nodos, para salvar el almacenamiento subyacente. recursos y apoyar un clúster dentro del clúster El propósito de escribir lecturas múltiples y lectura consistente en tiempo real. Este artículo presenta principalmente cómo los desarrolladores pueden crear un entorno de grupo de recursos que se puede utilizar para su propio aprendizaje o desarrollo.

conocimiento preliminar

Los desarrolladores deben tener preferiblemente las siguientes bases:

  • Comandos básicos de Linux, como el comando dd, iscis, etc.

  • Tener una cierta comprensión de la matriz magnética.

  • Muy familiarizado con el método tradicional de compilación openGauss.

Precauciones

Consulte la Figura 1 para ver el diagrama de implementación de la agrupación de recursos:

Figura 1: diagrama de implementación de agrupación de recursos de openGauss

  • En el paquete de instalación de la versión empresarial lanzado oficialmente en la comunidad, si necesita crear una arquitectura de grupo de recursos, debe preparar arreglos de discos, servidores y conmutadores ópticos en el hardware, y debe implementar componentes CM y OM.

  • Este artículo presenta principalmente la forma de crear un entorno de compilación que los desarrolladores pueden utilizar para el desarrollo. No requiere arreglos de discos, componentes CM y OM. Solo necesita una máquina física normal para crear un entorno de grupo de recursos.

  • Debe tenerse en cuenta que debido a que no se usa un CM real, el entorno creado de esta manera no se puede usar para depurar el cambio activo-en espera o los escenarios de conmutación por error, sino que solo se puede usar para verificar el escenario cuando el clúster se ejecuta normalmente.

Preparación ambiental

  • Una máquina física independiente con al menos una partición de disco con un espacio libre superior a 200 GB.

  • La versión de depuración de openGauss con código de agrupación de recursos ha sido compilada por sí misma utilizando el método de compilación. Puede confirmar si hay dssserver, dsscmd en el directorio bin generado y si hay libdms.so, libdssapi.so, libdssaio en la biblioteca. Entonces, para juzgar y asegurarse de que la versión de prueba del componente DSS y el componente DMS se utilice al compilar openGauss, consulte los siguientes pasos para obtener más detalles.

Guía de compilación e instalación independiente

    Aviso:


No utilice las siguientes operaciones de implementación en un entorno de producción

ilustrar:

  • openGauss debe compilarse en modo de depuración, no se puede usar el modo de lanzamiento, los componentes DMS y DSS deben usar la versión de prueba.

  • 手动编译安装的方式中,没有包含CM和OM组件,而正式的使用环境中DSS组件和DMS组件对CM有依赖,所以在编译openGauss之前需要先用测试的模式分别编译DSS和DMS组件,参考下面的编译方式说明。

1. 编译测试版本的DSS组件

a.下载最新版本CBB代码,编译安装替换三方库中的CBB。

b.下载最新版本的DSS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DSS至指定版本。

c.编译安装替换三方库中的DSS组件,命令如下(DSS_CODE_PATH表示解压后的DSS源码目录,ThirdParty_Binarylibs_Path表示解压后的三方库目录):

  #-3rd后面跟三方库对应的绝对路径  cd [DSS_CODE_PATH]/build/linux/opengauss  sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m DebugDsstest

2. 编译测试版本的DMS组件

a.下载最新版本CBB代码,编译安装替换三方库中的CBB。

b.下载最新版本的DMS代码,并根据src/gausskernel/ddes/ddes_commit_id内的版本号,回退DMS至指定版本。

c.编译安装替换三方库中的DMS组件,命令如下(DMS_CODE_PATH表示解压后的DMS源码目录,ThirdParty_Binarylibs_Path表示解压后的三方库目录):

 cd [DMS_CODE_PATH]/build/linux/opengauss  sh build.sh -3rd [ThirdParty_Binarylibs_Path] -t cmake -m Release  cd [DMS_CODE_PATH]  mkdir -p tmp  export BUILD_MODE=Debug  cmake . -DCMAKE_BUILD_TYPE=Debug -D DMS_TEST=ON -DOPENGAUSS=yes -B ./tmp  cd tmp/  make -sj

    注意:


当编译完DSS、DMS、CBB之后,会自动更新到三方库,不需要手动拷贝,接下来只需按标准步骤编译数据库即可。

3. 配置环境变量

下面是以2个节点为例进行说明,参考示例, 其中DSS_HOME是dn实例1的dssserver运行时需要的目录, 需要手动新建。将下面的内容写入到/home/test/envfile中作为环境变量导入。

export GAUSSHOME=/home/test/openGauss-server/dest/export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATHexport PATH=$GAUSSHOME/bin:$PATHexport DSS_HOME=/home/test/dss/dss0/dssdba

4. 新建dsssever的目录

cd /home/testmkdir -p dss/dss0/dssdba/cfgmkdir -p dss/dss0/dssdba/logmkdir -p dss/dss1/dssdba/cfgmkdir -p dss/dss1/dssdba/logmkdir -p dss/dev

5. 用dd命令新建一个模拟的块设备文件

下面的命令是建2T的命令,请根据自己需要的大小调整bs和count的值,执行时间依赖于磁盘的性能

dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=1024000 >/dev/null 2>&1

6. 创建2个dn节点需要的dss实例0和dss实例1的配置文件

创建dss实例0的配置文件:

vim /home/test/dss/dss0/dssdba/cfg/dss_inst.ini

文件中的内容如下:

INST_ID=0_LOG_LEVEL=255DSS_NODES_LIST=0:127.0.0.1:17102,1:127.0.0.1:18102DISK_LOCK_FILE_PATH=/home/test/dss/dss0LSNR_PATH=/home/test/dss/dss0_LOG_MAX_FILE_SIZE=20M_LOG_BACKUP_FILE_COUNT=128

创建dss实例0的卷配置文件:

vim /home/test/dss/dss0/dssdba/cfg/dss_vg_conf.ini

文件中的内容如下, 里面就是卷名加dd模拟出来的设备名字:

data:/home/test/dss/dev/dss-dba

创建dss实例1的配置文件:

vim /home/test/dss/dss1/dssdba/cfg/dss_inst.ini

文件中的内容如下, 注意DISK_LOCK_FILE_PATH配置的与1一致:

INST_ID=1_LOG_LEVEL=255DSS_NODES_LIST=0:127.0.0.1:17102,1:127.0.0.1:18102DISK_LOCK_FILE_PATH=/home/test/dss/dss0LSNR_PATH=/home/test/dss/dss1_LOG_MAX_FILE_SIZE=20M_LOG_BACKUP_FILE_COUNT=128

创建dss实例1的卷配置文件:

vim /home/test/dss/dss1/dssdba/cfg/dss_vg_conf.ini

文件中的内容如下, 里面就是卷名加dd模拟出来的设备名字:

data:/home/test/dss/dev/dss-dba

    注意:


一台服务器上建多个dn(数据库)节点, ip是相同的, 服务使用的端口号不同。

7. 创建存放数据库数据的数据卷, 启动dssserver服务

##这里是第3步中配好的环境变量source /home/test/envfiledsscmd cv -g data -v /home/test/dss/dev/dss-dbadssserver -D /home/test/dss/dss0/dssdba &#上个命令显示DSS SERVER STARTED即为成功dssserver -D /home/test/dss/dss1/dssdba &#上个命令显示DSS SERVER STARTED即为成功
#创建完可以通过如下命令确认是否建卷成功dsscmd lsvg -U UDS:/home/test/dss/dss0/.dss_unix_d_socketdsscmd ls -m M -p +data -U UDS:/home/test/dss/dss0/.dss_unix_d_socket

    注意:


dss不支持启动后修改卷组配置,如涉及修改请重新执行上述步骤。

8. 依次执行每个节点的gs_initdb操作

mkdir -p /home/test/datarm -rf node1 node2
gs_intdb -D /home/test/data/node1 --nodename=node1 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 0 --socketpath='UDS:/home/test/dss/dss0/.dss_unix_d_socket'
echo "ss_enable_ssl = offlisten_addresses = '*'port=12210ss_enable_reform = offss_work_thread_count = 32enable_segment = onss_log_level = 255ss_log_backup_file_count = 100ss_log_max_file_size = 1GB" >> /home/test/data/node1/postgresql.conf
sed '91 ahost       all        all         0.0.0.0/0        sha256' -i /home/test/data/node1/pg_hba.conf
gs_intdb -D /home/test/data/node2 --nodename=node2 -U tester -w Pasword --vgname=+data --enable-dss --dms_url="0:127.0.0.1:1613,1:127.0.0.1:1614" -I 1 --socketpath='UDS:/home/test/dss/dss1/.dss_unix_d_socket'
echo "ss_enable_ssl = offlisten_addresses = '*'port=13210ss_enable_reform = offss_work_thread_count = 32enable_segment = onss_log_level = 255ss_log_backup_file_count = 100ss_log_max_file_size = 1GB" >> /home/test/data/node2/postgresql.conf
sed '91 ahost       all        all         0.0.0.0/0        sha256' -i /home/test/data/node2/pg_hba.conf

9. 创建模拟CM功能的文件,并将其加入到第3步创建的环境变量中

  echo "REFORMER_ID = 0" > /home/test/cm_config.ini  echo "BITMAP_ONLINE = 3" >> /home/test/cm_config.ini  echo "export CM_CONFIG_PATH=/home/test/cm_config.ini" >> /home/test/envfile

10. 依次启动节点1和节点2

  source /home/test/envfile  gs_ctrl start -D /home/test/data/node1  gs_ctrl start -D /home/test/data/node2

部分补充说明

  • ss_log_level参数用于控制日志中打印DMS和DSS相关的日志, 日志目录在pg_log/DMS里面。

  • 17102和18102是dssserver要用的端口。

  • 1613和1614是dms通信要用的端口。

  • 12210和13210是openGauss数据库提供服务需要用的端口。

  • dssserver配置中INST_ID不能有冲突, 比如多个dssserver配置成相同的ID。

  • 该方式搭建出来的环境不支持高可用, 不能测试倒换和failover。

  • 如果启动时报错,提示如“dms library version is not matched”等报错,表示DMS/DSS组件版本号错误,请参考编译步骤重新编译。

  • 非CM环境下,限制了0节点为主节点,因此需要确保initdb阶段0节点创建成功。

  • 如果安装过程出现报错,再次initdb时候可能会提示目录不为空。此时需要清理文件系统及DSS中的残留文件。文件系统可以通过rm命令直接删除node文件夹,DSS中可以对模拟的块设备文件头部写0(DSS将元数据信息记录在头部),清理完成后重新从第7步开始执行,清理命令参考如下:

rm -rf /home/test/data/node1 /home/test/data/node2dd if=/dev/zero of=/home/test/dss/dev/dss-dba bs=2M count=10 conv=notrunc >/dev/null 2>&1

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

爱奇艺客户端“白嫖”电视机,后台满速上传 TIOBE 7 月榜单:C++ 即将超越 C,JavaScript 进入 Top6 GPT-4 模型架构泄露:包含 1.8 万亿参数、采用混合专家模型 (MoE) 中后台前端苦 CURD 久矣,今将举 Koala Form 历时 30 年,Linux 市场份额达到 3% 马斯克宣布成立 xAI 公司 ChatGPT 流量下降 10% Twitter 劲敌 —— Threads 用户数突破 1 亿 新型 Windows 恶意软件,旨在全面窃取数据 SUSE 投入 1000 万美元,fork RHEL
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/5059795/blog/10088380
Recomendado
Clasificación