达梦是不仅是一个知名的国产数据库,而且可能是年纪最大的数据库之一。新出国产数据库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开源是一个非常高明的市场战略,致使国产数据库一直处于被动局面,即使有不错的技术市场也少为人知。
但是这几年有很大的变化,信创打开了基础软件新的局面,达梦作为一名实力不错的选手开始进入大众的眼球,希望达梦会厚积薄发,物如其名,达成中国人的梦,为民族争光。市场是残酷的,仅仅有社会价值不管用,只有综合实力才能生存下来。
文章
阅读量
获赞