达梦是不仅是一个知名的国产数据库,而且可能是年纪最大的数据库之一。新出国产数据库TiDB、OceanBase 、GaussDB如日中天,这也是这几年的事。 在他们还没有立项之前,达梦已经有成熟的产品并在市场销售,只是由于采取商业闭源的架构,一直少为工程师所知。我们都想知道发展了这么多年,达梦的成熟度到了什么样的一个地步?
本人认为软件成熟度即使有业界的标准也非常难去量化,衡量软件成熟度可以从可用性、稳定性、扩展性、兼容性、维护性5个元素去思考。 而安装产品这个基本操作包括了5个元素,下面从安装去评测达梦的成熟度。
软件安装从方式上安装包括图形化安装、命令行安装、静默安装、容器安装、虚拟机安装,从操作系统分类上分为linux安装、windows安装、unix安装、solaris安装。目前达梦dm8支持图形化安装、命令行安装、静默安装、容器安装、虚拟机安装,同时也支持linux安装和windows安装,从方式支持和环境支持,达梦数据库的安装是做得挺不错的。
其中图形化安装和容器安装、虚拟机安装最适合新手去体验功能,如果要快速安装和更多的要求,可以使用命令行安装或者静默安装。下面本人将体验命令行安装或者静默安装,我会在一个主机上安装两个dm8,一个占用默认的5426端口,一个占用5424端口,从安装到使用,体验两个dm8共处一个主机,感受可用性、稳定性、扩展性、兼容性、维护性。
测试环境准备
系统环境
操作系统版本 | 数据库版本 | IP | 端口 | 安装目录 |
---|---|---|---|---|
centos7.9 | dm8 | XX | 5426 | /dm8 |
centos7.9 | dm8 | XX | 5424 | /opt/dm/dmdbms |
安装介质
wget https://download.dameng.com/eco/dm8/dm8_20220822_rev166351_x86_rh6_64_ctm.tar
复制
创建用户组和用户的命令如下
groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 设置用户dmdba的密码 passwd dmdba
复制
命令行安装第一个达梦数据库
设置5426的系统环境
export DM_HOME="/dm8" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin" export PATH="$PATH:$DM_HOME/bin:$DM_HOME/tool"
复制
创建数据库实例目录
mkdir -p /dm8 chown -R dmdba.dinstall /dm8 chmod -R 775 /dm8
复制
执行命令行安装
[dmdba@hdp1 iso]$ ./DMInstall.bin -i Please select the installer's language (E/e:English C/c:Chinese) [E/e]:C 选择C是中文 解压安装程序......... 欢迎使用达梦数据库安装程序 是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n 选择N 是否设置时区? (Y/y:是 N/n:否) [Y/y]:y 选择Y 设置时区: [ 1]: GTM-12=日界线西 [ 2]: GTM-11=萨摩亚群岛 [ 3]: GTM-10=夏威夷 [ 4]: GTM-09=阿拉斯加 [ 5]: GTM-08=太平洋时间(美国和加拿大) [ 6]: GTM-07=亚利桑那 [ 7]: GTM-06=中部时间(美国和加拿大) [ 8]: GTM-05=东部部时间(美国和加拿大) [ 9]: GTM-04=大西洋时间(美国和加拿大) [10]: GTM-03=巴西利亚 [11]: GTM-02=中大西洋 [12]: GTM-01=亚速尔群岛 [13]: GTM=格林威治标准时间 [14]: GTM+01=萨拉热窝 [15]: GTM+02=开罗 [16]: GTM+03=莫斯科 [17]: GTM+04=阿布扎比 [18]: GTM+05=伊斯兰堡 [19]: GTM+06=达卡 [20]: GTM+07=曼谷,河内 [21]: GTM+08=中国标准时间 [22]: GTM+09=汉城 [23]: GTM+10=关岛 [24]: GTM+11=所罗门群岛 [25]: GTM+12=斐济 [26]: GTM+13=努库阿勒法 [27]: GTM+14=基里巴斯 请选择设置时区 [21]:21 选择21 安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]:1 选择1 所需空间: 1602M 请选择安装目录 [/home/dmdba/dmdbms]: 可用空间: 7G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y 选择Y 安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 1602M 可用空间: 7G 版本信息: 有效日期: 安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 选择Y 2022-12-11 15:33:24 [INFO] 安装达梦数据库... 2022-12-11 15:33:24 [INFO] 安装 基础 模块... 2022-12-11 15:33:27 [INFO] 安装 服务器 模块... 2022-12-11 15:33:27 [INFO] 安装 客户端 模块... 2022-12-11 15:33:29 [INFO] 安装 驱动 模块... 2022-12-11 15:33:30 [INFO] 安装 手册 模块... 2022-12-11 15:33:30 [INFO] 安装 服务 模块... 2022-12-11 15:33:33 [INFO] 移动日志文件。 2022-12-11 15:33:34 [INFO] 安装达梦数据库完成。 请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh 安装结束
复制
创建数据库实例
以dmdba的权限进入以下目录 [dmdba@hdp1 iso]$ cd /home/dmdba/dmdbms/bin 执行数据库实例的初始化,这里把实例数据路径指定 /dm8/data ./dminit PATH=/dm8/data PORT_NUM=5236 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=Y CHARSET=0 LENGTH_IN_CHAR=0 BLANK_PAD_MODE=1 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123 DB_NAME=DAMENG License will expire on 2023-10-19 创建数据库服务脚本 以root的权限进入以下目录 [root@hdp1 dmdba]# cd /home/dmdba/dmdbms/script/root 创建数据库服务脚本DmServiceDMSERVER.service [root@hdp1 root]# ./dm_service_installer.sh -t DMSERVER -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service. 创建服务(DmServiceDMSERVER)完成
复制
检测,命令行登录,查看安装位置
[dmdba@hdp1 ~]$ cd /home/dmdba/dmdbms/bin [dmdba@hdp1 bin]$ ./disql sysdba/"Dameng123" Server[LOCALHOST:5236]:mode is normal, state is open login used time : 4.991(ms) disql V8 SQL> select status$ from v$instance; LINEID STATUS$ ---------- ------- 1 OPEN used time: 2.865(ms). Execute id is 57600.
复制
静默安装第二个达梦数据库
设置5424的系统环境
将5426的系统变量复制一份.bashopt_profile [dmdba@hdp1 bin]$ cp /home/dmdba/.bash_profile /home/dmdba/.bashopt_profile 对.bashopt_profile变更加入静默安装的两个变量,关键是数据库实例安装路径/opt/dm/dmdbms export DM_HOME="/opt/dm/dmdbms" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dm/dmdbms/bin"
复制
数据库实例授权
创建数据库实例目录,并赋矛dmdba相应的权限 [root@hdp1 opt]# mkdir -p /opt/dm/dmdbms [root@hdp1 opt]# chown -R dmdba:dinstall /opt/dm/
复制
定义静默安装配置文件dm8_config.xml
<?xml version="1.0"?> <DATABASE> <!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。 --> <LANGUAGE>en</LANGUAGE> <!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 --> <TIME_ZONE>+08:00</TIME_ZONE> <!-- key 文件路径 --> <KEY></KEY> <!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户 端。默认为 0。 --> <INSTALL_TYPE>0</INSTALL_TYPE> <!--安装路径,不允许为空。 --> <INSTALL_PATH>/opt/dm/dmdbms</INSTALL_PATH> <!--是否初始化库,取值 Y/N、y/n,不允许为空。 --> <INIT_DB>y</INIT_DB> <!--数据库实例参数 --> <DB_PARAMS> <!--初始数据库存放的路径,不允许为空 --> <PATH>/opt/dm/dmdbms/data</PATH> <!--初始化数据库名字,默认是 DAMENG,不超过 128 个字符 --> <DB_NAME>DMOA</DB_NAME> <!--初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符 --> <INSTANCE_NAME>DMOA</INSTANCE_NAME> <!--初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534 --> <PORT_NUM>5234</PORT_NUM> <!--初始数据库控制文件的路径,文件路径长度最大为 256 --> <CTL_PATH></CTL_PATH> <!--初始数据库日志文件的路径,文件路径长度最大为 256 --> <LOG_PATHS> <LOG_PATH> </LOG_PATH> </LOG_PATHS> <!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页 --> <EXTENT_SIZE>16</EXTENT_SIZE> <!--数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一 --> <PAGE_SIZE>8</PAGE_SIZE> <!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数 --> <LOG_SIZE>256</LOG_SIZE> <!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’ 之一 --> <CASE_SENSITIVE>Y</CASE_SENSITIVE> <!--字符集选项,默认值为 0。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR --> <CHARSET>0</CHARSET> <!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认 值为 0。 --> <LENGTH_IN_CHAR>0</LENGTH_IN_CHAR> <!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。0:原始 HASH 算法;1:改进的 HASH 算法。默认值为 1。 --> <USE_NEW_HASH>1</USE_NEW_HASH> <!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48 个字符之间 --> <SYSDBA_PWD></SYSDBA_PWD> <!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之 间 --> <SYSAUDITOR_PWD></SYSAUDITOR_PWD> <!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48 个字符之间,仅在安 全版本下可见和可设置 --> <SYSSSO_PWD></SYSSSO_PWD> <!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48 个字符之间,仅在安 全版本下可见和可设置 --> <SYSDBO_PWD></SYSDBO_PWD> <!--初始化时区,默认是东八区。格式为:正负号小时:分钟,范围:-12:59 ~ +14:00 --> <TIME_ZONE>+08:00</TIME_ZONE> <!--是否启用页面内容校验,0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生 成校验码)。默认 0 --> <PAGE_CHECK>0</PAGE_CHECK> <!--设置默认加密算法,不超过 128 个字符 --> <EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME> <!--设置默认 HASH 算法,不超过 128 个字符 --> <EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME> <!--设置根密钥加密引擎,不超过 128 个字符 --> <EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME> <!--全库加密密钥使用的算法名。算法可以是 DM 内部支持的加密算法,或者是第三方的加 密算法。默认使用"AES256_ECB"算法加密,最长为 128 个字节 --> <ENCRYPT_NAME></ENCRYPT_NAME> <!--指定日志文件是否加密。默认值 N。取值 Y/N,y/n,1/0 --> <RLOG_ENC_FLAG>N</RLOG_ENC_FLAG> <!--用于加密服务器根密钥,最长为 48 个字节 --> <USBKEY_PIN></USBKEY_PIN> <!--设置空格填充模式,取值 0 或 1,默认为 0 --> <BLANK_PAD_MODE>0</BLANK_PAD_MODE> <!--指定 system.dbf 文件的镜像路径,默认为空 --> <SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH> <!--指定 main.dbf 文件的镜像路径,默认为空 --> <MAIN_MIRROR_PATH></MAIN_MIRROR_PATH> <!--指定 roll.dbf 文件的镜像路径,默认为空 --> <ROLL_MIRROR_PATH></ROLL_MIRROR_PATH> <!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1 --> <PRIV_FLAG>0</PRIV_FLAG> <!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含 结束符),不包括文件名--> <ELOG_PATH></ELOG_PATH> </DB_PARAMS> <!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。 非 root 用户不能创建数据库服务。 --> <CREATE_DB_SERVICE>n</CREATE_DB_SERVICE> <!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 --> <STARTUP_DB_SERVICE>N</STARTUP_DB_SERVICE> </DATABASE>
复制
正式执行静默安装
[dmdba@hdp1 iso]$ sh DMInstall.bin -q /home/dmdba/dm8_config.xml Extract install files......... Installation directory(/opt/dm/dmdbms) is not empty, please select other directory. [dmdba@hdp1 iso]$ sh DMInstall.bin -q /home/dmdba/dm8_config.xml Extract install files......... 2022-12-11 16:11:56 [INFO] Installing DM DBMS... 2022-12-11 16:11:56 [INFO] Installing BASE Module... 2022-12-11 16:11:59 [INFO] Installing SERVER Module... 2022-12-11 16:11:59 [INFO] Installing CLIENT Module... 2022-12-11 16:12:02 [INFO] Installing DRIVERS Module... 2022-12-11 16:12:03 [INFO] Installing MANUAL Module... 2022-12-11 16:12:03 [INFO] Installing SERVICE Module... 2022-12-11 16:12:09 [INFO] Move log file to log directory. 2022-12-11 16:12:09 [INFO] Installed DM DBMS completely. Please execute the commands by root: /opt/dm/dmdbms/script/root/root_installer.sh 2022-12-11 16:12:13 [INFO] Creating database... 2022-12-11 16:12:16 [INFO] Create database completed.
复制
安装数据库服务脚本
[root@hdp1 ~]# cd /opt/dm/dmdbms/script/root [root@hdp1 root]# ./dm_service_installer.sh -t dmserver -dm_ini /opt/dm/dmdbms/data/DMOA/dm.ini -p DM8SERVEROPT Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDM8SERVEROPT.service to /usr/lib/systemd/system/DmServiceDM8SERVEROPT.service. Finished to create the service (DmServiceDM8SERVEROPT) 上面可以看到安装的服务是DmServiceDM8SERVEROPT.service [root@hdp1 root]# systemctl start DmServiceDM8SERVEROPT.service
复制
测试两个数据库并存
测试第一个达梦数据库
数据库用户名夹密码登录 [dmdba@hdp1 bin]$ ./disql sysdba/"Dameng123" Server[LOCALHOST:5236]:mode is normal, state is open login used time : 6.492(ms) disql V8 SQL> select path ,status$ from v$datafile; LINEID PATH STATUS$ ---------- --------------------------- ----------- 1 /dm8/data/DAMENG/SYSTEM.DBF 1 2 /dm8/data/DAMENG/ROLL.DBF 1 3 /dm8/data/DAMENG/TEMP.DBF 1 4 /dm8/data/DAMENG/MAIN.DBF 1 used time: 1.217(ms). Execute id is 57901.
复制
测试第二个达梦数据库
加载5234系统变量 [dmdba@hdp1 bin]$ source /home/dmdba/.bashopt_profile 数据库用户sysdba无密码并指定5234端口登录 [dmdba@hdp1 bin]$ ./disql sysdba@localhost:5234 Server[localhost:5234]:mode is normal, state is open login used time : 3.278(ms) disql V8 查看数据库实例的安装路径 SQL> select path ,status$ from v$datafile; LINEID PATH STATUS$ ---------- ----------------------------------- ----------- 1 /opt/dm/dmdbms/data/DMOA/SYSTEM.DBF 1 2 /opt/dm/dmdbms/data/DMOA/ROLL.DBF 1 3 /opt/dm/dmdbms/data/DMOA/TEMP.DBF 1 4 /opt/dm/dmdbms/data/DMOA/MAIN.DBF 1 used time: 3.959(ms). Execute id is 57600.
复制
最后通过进程查看确认
[root@hdp1 ~]# netstat -tnlpu | grep dmserver tcp6 0 0 :::5234 :::* LISTEN 20192/dmserver tcp6 0 0 :::5236 :::* LISTEN 13195/dmserver [root@hdp1 ~]# ps -eaf| grep dmserver dmdba 13195 1 0 Dec11 ? 00:01:35 /home/dmdba/dmdbms/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole root 19335 19273 0 08:21 pts/0 00:00:00 grep --color=auto dmserver dmdba 20192 1 0 Dec11 ? 00:01:30 /opt/dm/dmdbms/bin/dmserver path=/opt/dm/dmdbms/data/DMOA/dm.ini -noconsole
复制
安装评测
从安装方式和支持系统体验来看,达梦的软件成熟度相当高的!一句话概括,支持并兼容主流操作系统,支持多样化的方式安装,工程师可以马上使用达梦数据库。从安装过程来看,最麻烦的命令行安装和静默安装也没有那么复杂,敝人作为一个达梦小白可以在半个小时完成数据库的安装。达梦提供了用户一个简洁的界面,让初学者也可以琅琅入手。
两个数据库同时安装在一个系统上,这里关系到软件的兼容性问题,敝人把两个数据库来回切换,觉得还是挺舒心的。 从软件操作和访问使用,感觉与Oracle差不多,甚至存储过程、函数、触发器都是一样的。站内的文档也较丰富,排列整齐、访问方便。
由此推论,达梦的软件成熟度还是不错的,那么为什么它不能像其它数据库MySQL和PostgreSQL那样大面积推广呢?敝人认为与它的商业闭源有关系,毕竟免费的东西就是香,如果免费的东西也能够满足生产需求,那么对其它产品是打击性的伤害。Oracle当年收购MySQL,继续让MySQL开源是一个非常高明的市场战略,致使国产数据库一直处于被动局面,即使有不错的技术市场也少为人知。
但是这几年有很大的变化,信创打开了基础软件新的局面,达梦作为一名实力不错的选手开始进入大众的眼球,希望达梦会厚积薄发,物如其名,达成中国人的梦,为民族争光。市场是残酷的,仅仅有社会价值不管用,只有综合实力才能生存下来。