本帖最后由 新手085061 于 2024-10-8 18:03 编辑
Oracle、DM数据库安装及性能测试实践分享
由于BBS提供的虚拟机模板仅提供压测工具,不具备基本数据库环境,且测试指导仅提供通过DMP部署的方式,同时缺少DM等国产化数据库的相关资料,局限性较大,因此在自行手动安装数据库测试后对相关流程以及过程中遇到的一些问题进行总结分享(以下分享仅个人实验操作测试,仅安装部署及相关流程中遇到的一些问题,调优、最佳实践等配置调整需要结合数据库性能测试版块进行调整)。
一、单机Oracle安装部署(仅安装部署,调优、最佳实践等配置调整需要参考数据库性能测试版本进行调整): 1、oracle安装部署(磁盘分区) 2、创建表空间 3、压测工具连接测试 具体流程参考以下链接,经测试验证按照流程执行可正常顺利完成安装部署:
注:安装时先安装preinstall包,安装完成后修改oracle及/opt/oracle、/oradata目录权限,才能安装oracle包。
安装完成后写入数据库表操作: 创建表,其中'sysdba' 为具体的数据库名 - create tablespace SOE datafile 'sysdba' size 10240M autoextend on maxsize 20g;
复制代码
扩容表 - alter tablespace SOE add datafile 'sysdba' size 10240M autoextend on maxsize 20g;
复制代码
完成以上操作后才能正常使用swingbench对接识别,进行压测。
二、达梦安装部署: 安装部署可参照以下链接,包括图形化界面安装&纯命令行安装,经过验证严格按照流程指导可顺利完成安装(要注意命令行安装完成后系统会要求执行指定命令,切记不要直接执行,按照链接操作流程来,否则数据库服务会无法正常启动)
达梦DMDSC(rac集群高可用部署)部署可能遇到的问题&解决方案 vote磁盘初始化异常:该磁盘类型禁止此操作 问题原因:CSDN安装流程指导中对磁盘进行了分区,将sdb分成sdb1、sdb2、sdb3、sdb4四个分区,导致磁盘识别异常,需要进入fdisk工具使用命令 d 删除所有分区后执行partprobe /dev/sdb命令刷新磁盘信息
注意事项: 代码执行工具放在安装目录下/data/dmdba/dmdbms/bin,相关的工具使用及命令执行需要切换到对应目录下才可执行/使用。
最终集群结果验证需要进入DSC实例的端口,即6636、6637端口,默认账号密码SYSDBA/SYSDBA,而非默认的5236数据库端口!!!使用默认端口登录进去是单机的数据库,不是集群数据库。
服务注册程序路径:/data/dmdba/dmdbms/script/root,注册服务时需要进入对应路径。
达梦数据库性能测试Sysbench安装问题 由于github上官方的sysbench本身不支持达梦数据库测试,需要修改相关代码调用达梦的接口后才能正常对达梦数据库测试,对应的工具包较难获取,此处已获取到相关资源并测试验证可用性:
Sysbench记得使用sysbench-master-dm的版本,不要用20211111版本!否则执行测试脚本运行阶段会有报错!(只使用以上提供的工具包不存在该问题) 1、DM数据库安装sysbench,执行autogen文件时报错:
问题原因:缺少依赖工具libtool 解决方案:安装libtool(调整yum源后使用yum install -y libtool自行安装或使用以下离线包安装),安装完毕后再执行。
2、DM数据库安装sysbench,执行confugure文件时报错: 问题原因:缺少DM_HOME环境变量,导致无法识别DM数据库已安装 解决方案:修改/etc/profile文件,手动添加DM_HOME环境变量至末尾
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
- export DM_HOME="/home/dmdba/dmdbms"
- PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin
- export PATH
复制代码
添加完成后手动执行source /etc/profile令其生效 环境变量生效后再执行configure文件 正常执行后会显示DM support状态为yes
3、DM数据库安装sysbench,执行make编译时报错 问题原因:sysbench本身是不支持DM数据库的,是后续二次开发编译才支持的,而支持DM的dpi驱动后期做了改动,需要新增加一个库,链接命令需要增加-lrt
解决方案: 即根据libtool的报错内容,进入/src目录后复制后粘贴(若不再src目录下会报错,找不到文件),在最后添加上参数 -lrt ,再执行make编译。
- gcc -Wall -Wextra -Wpointer-arith -Wbad-function-cast -Wstrict-prototypes -Wnested-externs -Wno-format-zero-length -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align -Wvla -pthread -O3 -funroll-loops -rdynamic -o sysbench sysbench.o sb_timer.o sb_options.o sb_logger.o db_driver.o sb_histogram.o sb_rand.o sb_thread.o sb_barrier.o sb_lua.o sb_util.o sb_counter.o -L/usr/local/lib tests/fileio/libsbfileio.a tests/threads/libsbthreads.a tests/memory/libsbmemory.a tests/cpu/libsbcpu.a tests/mutex/libsbmutex.a drivers/dm/libsbdm.a /home/dmdba/dmdbms/include/libdmdpi.a /root/sysbench-master-dpi/third_party/luajit/lib/libluajit-5.1.a -ldl /root/sysbench-master-dpi/third_party/concurrency_kit/lib/libck.a -lm -pthread -lrt
复制代码
make编译完成后在src目录下即可看到生成的可执行文件sysbench 随后将该可执行文件sysbench移动到/src/lua/目录下执行即可(若不移动该文件至指定目录,执行oltp测试脚本时会报错找不到文件位置)
4、sysbench-master-dpi-20211111版本执行脚本做prepare数据准备时报错:违反列[ID]非空约束
测试命令: 数据准备: - ./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250 --auto-inc=1 --threads=32 --tables=5 --time=60 --report-interval=10 prepare
复制代码
运行测试: - ./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250 --auto-inc=1 --threads=32 --tables=5 --time=60 --report-interval=10 run
复制代码
数据清理: - ./sysbench oltp_read_write.lua --db-driver=dm --dm-db=localhost:5236 --dm-user=SYSDBA --dm-password=SYSDBA --table_size=250 --auto-inc=1 --threads=32 --tables=5 --time=60 --report-interval=10 cleanup
复制代码
问题原因:初步判断是sysbench工具版本脚本问题,设置--auto-inc参数值为1时该版本脚本执行判断存在异常,设置为0后执行正常
同样的问题,旧版本--auto-inc参数值要设置为1,否则执行脚本进行run测试时也会报违反列[ID]非空约束错误
5、sysbench-master-dpi-20211111版本执行脚本开始做run测试结束后会报错:句柄释放失败 问题原因:初步判断是该版本工具执行脚本代码存在问题,同样的命令参数使用旧版本可以正常执行无报错。
考虑到BBS对图片的压缩可能会导致模糊看不清,最后附上原文档 |