(SERIES1) MacOS Terminal远程SSH连接Aliyun ECS服务器纯命令行模式下部署DM8教程(服务器环境Ubuntu 20.04LTS )

avatar
作者
猴君
阅读量:13

1 DM数据库版本介绍

1.1 版本区别

  DM8目前的版本主要包括标准版、企业版、安全版开发版。前三项的比较如表1-1所示。以适用场景为角度进行分类,标准版适用于小型应用开发,企业版适合生产环境级应用,安全版则在具备所有企业版基础上加入了对四权分立、强制访问控制、审计和实时侵害检测等功能上的补全,在安全性方面实现了更加全面完善的安全策略;至于开发版则专供开发者学习、测试、开发用途,有1 年免费试用期,并不建议用于保存关键数据和长期运营,避免因失效造成数据丢失和业务中断。若确有生产需要,建议寻求达梦在线客服或电话帮助,获取商业许可证。

表1-1 DM数据库主要版本比较

对比项标准版企业版安全版
最大连接数25无限制无限制
最大物理 CPU 数量2无限制无限制
最大逻辑 CPU 核数32无限制无限制
使用时间无限制无限制无限制
硬件平台支持Windows 全系列、Linux 全系列、龙芯、飞腾、申威、泰山、海光、兆芯、Power、安腾等Windows 全系列、Linux 全系列、龙芯、飞腾、申威、泰山、海光、兆芯、Power、安腾等Windows 全系列、Linux 全系列、龙芯、飞腾、申威、泰山、海光、兆芯、Power、安腾等
最大存储容量500G无限制无限制
单表最大行数1 亿无限制无限制
大表最大列数102420482048
列存储不支持支持支持
分区表不支持支持支持
并行查询不支持支持支持
闪回查询不支持支持支持
分析函数与自定义聚集函数不支持支持支持
虚拟函数 VPD不支持支持支持
DBMS_SQL 包不支持支持支持
存储过程调试功能不支持支持支持
XML 支持不支持支持支持
JSON 支持不支持支持支持
空间数据库支持不支持支持支持
全文索引支持不支持支持支持
DBLINK 功能不支持支持支持
DMHS 支持不支持支持支持
数据守护集群 DATAWATCH不支持支持支持
读写分离集群 DMRWC不支持支持支持
共享存储集群 DMDSC不支持支持支持
大规模并行处理集群 DMMPP不支持支持支持
数据复制 Data Replication不支持支持支持
企业管理工具 DEM不支持支持支持
备份还原接口 SBT不支持支持支持
嵌入式 pro*c不支持支持支持
外部函数扩展不支持支持支持
外部表不支持支持支持
通讯加密不支持支持支持
存储加密不支持支持支持
加密引擎支持支持支持
三权分立不支持支持支持
四权分立不支持不支持支持
自主访问控制不支持支持支持
强制访问控制不支持不支持支持
审计和实时侵害检测不支持不支持支持
客体重用不支持支持支持
资源限制不支持支持支持

  达梦数据旗下除传统关系型数据库外,还研发有蜀天梦图数据库、达梦新云缓存数据库、达梦启志大数据可视化系统等产品,支持不同应用层的开发需求。详情参见图1-1内容,可以直接从图示地址栏进入或由dameng.com企业官网右上角“下载中心”按钮点击跳转即可✅。

在这里插入图片描述

图1-1 达梦数据旗下数据库产品

2 DM数据库安装

2.1 达梦在线服务平台

  如图2-1所示为达梦在线服务平台。该平台集成了产品体系及其详细介绍、技术社区、行业案例等内容,尤其提供开发所需的详实文档;点击“查看全部文档”进入图2-2所示的技术文档详情页,包括几大模块:安装部署、应用开发、运维和产品手册等,构建完成闭环的全生命周期服务。如果遇到技术问题或希望从事有关开发,官方文档、快速的论坛内技术人员支持都能助你一臂之力。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/42787e9c19c54597a66f15c3ef597869.p

图2-1 达梦在线服务平台

  本文快速上手部分为主要抓手,详细阐述在Ubuntu 20.04LTS 阿里云ECS实例上进行达梦数据库部署的详尽内容,主要出于官方文档主要面向以CentOS为代表的Redhat系企业服务器市场,一定程度上缺失对Debian家族尤其是Ubuntu版本的支持。希望在Ubuntu上的开发部署实现能够向后来人提供开发部署经验和开发平台。技术文档主页在图2-2中展示。

在这里插入图片描述

图2-2 DM8技术文档之快速上手

2.2 DM8 Tour 达梦线上实验室

  访问https://eco.dameng.com/tour/可以访问达梦线上实验室、试用DMSQL,提前熟悉以下主要版块:

  • 基本语法
  • 用户权限
  • 索引
  • 事务

  需要注意的是:线上环境不代表部署性能,如需测试请遵循完整的测试用例执行过程;该实验过程需在1小时后手动延长,必要时会以弹窗提醒。窗口布局可见图2-3。

在这里插入图片描述

图2-3 达梦线上实验室

2.3 安装前准备

2.3.1 选择对应版本

  DM8在X86架构分类中支持主流Linux和国产操作系统版本,也可以Docker镜像形式应用。在安装到Ubuntu前,键入uname -a命令查询操作系统(内核)版本、CPU 架构。

root@iZuf64t2vkq04odhykkugyZ:~# uname -a Linux iZuf64t2vkq04odhykkugyZ 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux 

  根据查询结果参考选择基于RedHat6 / RedHat7的版本。笔者根据版本信息选择RedHat7版本,下载得到文件夹dm8_20240408_x86_rh7_64_ent_8,ls命令查看有以下执行结果:

(base) alexanderarthur@AlexLaptop Downloads % cd dm8_20240408_x86_rh7_64_ent_8 (base) alexanderarthur@AlexLaptop dm8_20240408_x86_rh7_64_ent_8 % ls dm8_20240408_x86_rh7_64.iso		dm8_20240408_x86_rh7_64.iso_SHA256.txt 

2.3.2 新建dmdba用户

  数据库安装要求在dmdba用户下执行,严禁使用root用户执行安装;命令包括创建用户组、创建并设置用户:

groupadd dinstall -g 2001 useradd  -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba # 修改用户密码步骤于此行略 

2.3.3 修改资源限制

  登录root用户修改/etc/security/limits.conf文件配置,在文件最后添加配置如下:

dmdba  soft      nice       0 dmdba  hard      nice       0 dmdba  soft      as         unlimited dmdba  hard      as         unlimited dmdba  soft      fsize      unlimited dmdba  hard      fsize      unlimited dmdba  soft      nproc      65536 dmdba  hard      nproc      65536 dmdba  soft      nofile     65536 dmdba  hard      nofile     65536 dmdba  soft      core       unlimited dmdba  hard      core       unlimited dmdba  soft      data       unlimited dmdba  hard      data       unlimited 

  如需更改后的配置文件永久生效,请执行reboot命令重启服务器实现。
  服务器重启后,切换到dmdba用户,查看是否生效:

su - dmdba ulimit -a  # 执行结果 core file size          (blocks, -c) unlimited data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 20 file size               (blocks, -f) unlimited pending signals                 (-i) 7319 max locked memory       (kbytes, -l) 65536 max memory size         (kbytes, -m) unlimited open files                      (-n) 65536 pipe size            (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 real-time priority              (-r) 0 stack size              (kbytes, -s) 8192 cpu time               (seconds, -t) unlimited max user processes              (-u) 65536 virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited 

2.4 数据库安装

  DM数据库支持命令行和图形化安装,本文仅讨论命令行安装步骤及其细节避坑。
  从官网下载会得到包含dm8_20240408_x86_rh7_64.isodm8_20240408_x86_rh7_64.iso_SHA256.txt的完整性校验文件,默认使用TextEditor打开会部分乱码,执行file -I dm8_20240408_x86_rh7_64.iso_SHA256.txt命令有:

(base) alexanderarthur@AlexLaptop dm8_20240408_x86_rh7_64_ent_8 % file -I dm8_20240408_x86_rh7_64.iso_SHA256.txt dm8_20240408_x86_rh7_64.iso_SHA256.txt: text/plain; charset=iso-8859-1 

  可知字符编码格式iso-8859-1与MacOS默认的UTF-8编码格式不同;不过既然乱码部分为Windows下CertUtil工具校验命令,故没必要借助iconv工具转换文件默认字符编码,只取第二行SHA-256部分hash码616147f57051877537266d1deacdc972315d248c54bcd975d67838c2b49bcd59即可。执行自带shasum命令比较校验码:

# cd到指定目录,生成并保存dm8_20240408_x86_rh7_64.iso校验码至文件dm8_20240408_x86_rh7_64.iso.sha256并对比 shasum -a 256 dm8_20240408_x86_rh7_64.iso > dm8_20240408_x86_rh7_64.iso.sha256 # 或保存原厂校验码至dm8_20240408_x86_rh7_64.iso.sha256,此时有文件内容616147f57051877537266d1deacdc972315d248c54bcd975d67838c2b49bcd59 dm8_20240408_x86_rh7_64.iso。执行以下命令一键比较: shasum -a 256 -c dm8_20240408_x86_rh7_64.iso.sha256 # 得: dm8_20240408_x86_rh7_64.iso: OK 

  完整性校验完成。
  ISO镜像内包含"DM8 Install.pdf"的dmdbms安装手册、DMInstall.bin本体。如图2-4:
在这里插入图片描述

图2-4 ISO镜像内容

  校验完成后,使用SCP协议传输ISO文件到远程ECS服务器:

# 不要忘记替换username、host地址和文件目录,目的地为/opt scp dm8_20240408_x86_rh7_64.iso username@remote_host:/path/to/remote/directory/ 

  等待传输完成后,在Ubuntu中以root身份在/opt中保存,并在/mnt挂载;切换至dmdba用户安装:

cd  /opt mount -o loop dm8_20240116_x86_rh7_64.iso /mnt su - dmdba cd /mnt ./DMInstall.bin -i 

  执行命令后根据需要选择语言、Key文件路径、时区、安装目录等个性化内容;在根据提示选择的基础上,默认选项键入回车符跳过:

Installer Language:  [1]: 简体中文 [2]: English Please select the installer's language [2]:1 解压安装程序.........  欢迎使用达梦数据库安装程序  是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n  是否设置时区? (Y/y:是 N/n:否) [Y/y]:y 设置时区: [ 1]: (GTM-12:00) 日界线西 [ 2]: (GTM-11:00) 萨摩亚群岛 [ 3]: (GTM-10:00) 夏威夷 [ 4]: (GTM-09:00) 阿拉斯加 [ 5]: (GTM-08:00) 太平洋时间(美国和加拿大) [ 6]: (GTM-07:00) 亚利桑那 [ 7]: (GTM-06:00) 中部时间(美国和加拿大) [ 8]: (GTM-05:00) 东部部时间(美国和加拿大) [ 9]: (GTM-04:00) 大西洋时间(美国和加拿大) [10]: (GTM-03:00) 巴西利亚 [11]: (GTM-02:00) 中大西洋 [12]: (GTM-01:00) 亚速尔群岛 [13]: (GTM) 格林威治标准时间 [14]: (GTM+01:00) 萨拉热窝 [15]: (GTM+02:00) 开罗 [16]: (GTM+03:00) 莫斯科 [17]: (GTM+04:00) 阿布扎比 [18]: (GTM+05:00) 伊斯兰堡 [19]: (GTM+06:00) 达卡 [20]: (GTM+07:00) 曼谷,河内 [21]: (GTM+08:00) 中国标准时间 [22]: (GTM+09:00) 首尔 [23]: (GTM+10:00) 关岛 [24]: (GTM+11:00) 所罗门群岛 [25]: (GTM+12:00) 斐济 [26]: (GTM+13:00) 努库阿勒法 [27]: (GTM+14:00) 基里巴斯 请选择时区 [21]:21  安装类型: 1 典型安装 2 服务器 3 客户端 4 自定义 请选择安装类型的数字序号 [1 典型安装]:1 所需空间: 2310M  请选择安装目录 [/home/dmdba/dmdbms]: 可用空间: 29G 是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y  安装前小结 安装位置: /home/dmdba/dmdbms 所需空间: 2310M 可用空间: 29G 版本信息:  有效日期:  安装类型: 典型安装 是否确认安装? (Y/y:是 N/n:否):y 2024-07-08 16:49:43  [INFO] 安装 基础 模块... 2024-07-08 16:49:43  [INFO] 安装达梦数据库... 2024-07-08 16:50:06  [INFO] 安装 服务器 模块... 2024-07-08 16:50:12  [INFO] 安装 客户端 模块... 2024-07-08 16:50:23  [INFO] 安装 驱动 模块... 2024-07-08 16:50:30  [INFO] 安装 手册 模块... 2024-07-08 16:50:32  [INFO] 安装 服务 模块... 2024-07-08 16:50:32  [INFO] 移动日志文件。 2024-07-08 16:50:33  [INFO] 安装达梦数据库完成。  请以root系统用户执行命令: /home/dmdba/dmdbms/script/root/root_installer.sh  安装结束 

  注意在自动安装过程结束后su root切换到root用户执行数据库备份的有关操作,创建DmAPService,否则会影响数据库备份。

2.5 配置实例

  达梦数据库作为国产数据库领先者,在选择中文安装后会在Ubuntu中调用默认中文语言编码解析其中的中文内容。为防止命令行初始化实例过程中出现中文乱码问题,提前进行如下操作:

# 切换到root用户,按先后顺序执行update包命令,接着安装汉化包 apt-get update apt-get install language-pack-zh-hans  # 第二步执行结果如下 Reading package lists... Done Building dependency tree        Reading state information... Done The following additional packages will be installed:   language-pack-zh-hans-base The following NEW packages will be installed:   language-pack-zh-hans language-pack-zh-hans-base 0 upgraded, 2 newly installed, 0 to remove and 99 not upgraded. Need to get 1951 kB of archives. After this operation, 7815 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://mirrors.cloud.aliyuncs.com/ubuntu focal-updates/main amd64 language-pack-zh-hans-base all 1:20.04+20220818 [1949 kB] Get:2 http://mirrors.cloud.aliyuncs.com/ubuntu focal-updates/main amd64 language-pack-zh-hans all 1:20.04+20220818 [1944 B] Fetched 1951 kB in 0s (4975 kB/s)                Selecting previously unselected package language-pack-zh-hans-base. (Reading database ... 114667 files and directories currently installed.) Preparing to unpack .../language-pack-zh-hans-base_1%3a20.04+20220818_all.deb ... Unpacking language-pack-zh-hans-base (1:20.04+20220818) ... Selecting previously unselected package language-pack-zh-hans. Preparing to unpack .../language-pack-zh-hans_1%3a20.04+20220818_all.deb ... Unpacking language-pack-zh-hans (1:20.04+20220818) ... Setting up language-pack-zh-hans (1:20.04+20220818) ... Setting up language-pack-zh-hans-base (1:20.04+20220818) ... Generating locales (this might take a while)...   zh_CN.UTF-8... done   zh_SG.UTF-8... done Generation complete. 

  上述工作完成后,切换到dmdba用户并执行/home/dmdba/dmdbms/bin下的dminit命令。命令清单:

su - dmdba cd /home/dmdba/dmdbms/bin # 查看参数 ./dminit help 

  需要注意的是,页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 、空格填充模式 (BLANK_PAD_MODE) 、页检查模式(PAGE CHECK) 等部分参数,一旦确定无法修改,在初始化实例时确认需求后谨慎设置。
  形成对必要参数的认知后,采用默认方式安装数据库,此时仅需指定数据存放位置参数PATH即可;必要情况(一般是生产环境下),在初始化实例时指定PAGE_SIZE, EXTENT_SIZE等内容:

# 建立实例前准备:创建目录、更改所有权并更改角色权限 usermod -aG sudo dmdba su dmdba sudo mkdir -p /dmdata/data sudo chown -R dmdba:dmdba /dmdata/data ll /dmdata/data sudo chmod -R 750 /dmdata/data # 执行安装 ./dminit PATH=/dmdata/data  # 执行结果 initdb V8 db version: 0x7000c file dm.key not found, use default license! License will expire on 2025-03-21 Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL   log file path: /dmdata/data/DAMENG/DAMENG01.log    log file path: /dmdata/data/DAMENG/DAMENG02.log  write to dir [/dmdata/data/DAMENG]. create dm database success. 2024-07-10 12:34:35 

  配置助手等可视化工具需要开放图形化界面权限。

2.6 注册服务

  DM提供了将DM服务脚本注册成操作系统服务的脚本/卸载操作系统服务的脚本,存在于安装目录的/script/root目录下,即路径/home/dmdba/dmdbms/script/root/使用root用户进入上述目录。
  故有注册服务操作:

# 官方教程含坑,-dm_ini参数路径需替换为/dmdata/data/DAMENG/dm.ini ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p DMTEST # 执行结果 Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMTEST.service → /lib/systemd/system/DmServiceDMTEST.service. 创建服务(DmServiceDMTEST)完成 

  创建完成后在/home/dmdba/dmdbms/bin目录下能够查看到注册好的服务DmServiceDMTEST:

-rwxr-xr-x  1 dmdba dmdba     17501 Jul 10 13:12 DmServiceDMTEST* 

 &esmp;此时注册服务部分完成。

2.7 启停数据库

2.7.1 服务名方式

  服务注册成功后, 使用注册完成的DmServiceDMTEST启动数据库:

# 启动 ./DmServiceDMTEST start Starting DmServiceDMTEST:                                  [ OK ] # 停止 ./DmServiceDMTEST stop Starting DmServiceDMTEST:                                  [ OK ] # 重启 ./DmServiceDMTEST restart Stopping DmServiceDMTEST:                                  [ OK ] Starting DmServiceDMTEST:                                  [ OK ] # 查看数据库状态 ./DmServiceDMTEST status DmServiceDMTEST (pid 19172) is running. 

2.7.2 前台方式

  若使用前台方式启停数据库,当启动界面会话关闭,数据库随之关闭;故一般更建议采用服务方式启动数据库。
  dmdba用户使用前台方式启停数据库,进入DM安装目录的bin目录下,执行:

# 前台方式启动数据库 ./dmserver /dmdata/data/DAMENG/dm.ini # 执行结果 file dm.key not found, use default license! version info: develop csek2_vm_t = 1400 nsql_vm_t = 328 prjt2_vm_t = 176 ltid_vm_t = 216 nins2_vm_t = 1008 nset2_vm_t = 272 ndlck_vm_t = 192 ndel2_vm_t = 768 slct2_vm_t = 208 nli2_vm_t = 192 aagr2_vm_t = 280 pscn_vm_t = 216 dist_vm_t = 896 DM Database Server 64 V8 03134284172-20240321-222308-20093 startup... Normal of FAST Normal of DEFAULT Normal of RECYCLE Normal of KEEP Normal of ROLL Database mode = 0, oguid = 0 License will expire on 2025-03-21 file lsn: 44780 ndct db load finished, code:0 ndct second level fill fast pool finished ndct third level fill fast pool finished ndct second level fill fast pool finished ndct third level fill fast pool finished ndct fill fast pool finished pseg_set_gtv_trxid_low next_trxid in mem:[12013] pseg_collect_mgr_items, total collect 0 active_trxs, 0 cmt_trxs, 0 pre_cmt_trxs, 0 to_release_trxs, 0 active_pages, 0 cmt_pages, 0 pre_cmt_pages, 0 to_release_pages, 0 mgr pages, 0 mgr recs! next_trxid in mem:[14015] next_trxid = 16017. pseg recv finished nsvr_startup end. uthr_pipe_create, create pipe[read:11, write:12] uthr_pipe_create, create pipe[read:13, write:14] uthr_pipe_create, create pipe[read:15, write:16] uthr_pipe_create, create pipe[read:17, write:18] uthr_pipe_create, create pipe[read:19, write:20] uthr_pipe_create, create pipe[read:21, write:22] uthr_pipe_create, create pipe[read:23, write:24] uthr_pipe_create, create pipe[read:25, write:26] uthr_pipe_create, create pipe[read:27, write:28] uthr_pipe_create, create pipe[read:29, write:30] uthr_pipe_create, create pipe[read:31, write:32] uthr_pipe_create, create pipe[read:33, write:34] uthr_pipe_create, create pipe[read:35, write:36] uthr_pipe_create, create pipe[read:37, write:38] uthr_pipe_create, create pipe[read:39, write:40] uthr_pipe_create, create pipe[read:41, write:42] aud sys init success. aud rt sys init success. systables desc init success. ndct_db_load_info finished, code:0. nsvr_process_before_open begin. nsvr_process_before_open success. SYSTEM IS READY.  # 退出时输入"exit" exit # 执行结果 Server is stopping... listener closed  and all sessions disconnected adjust undo_retention & wakeup purge thread...full check point starting... generate force checkpoint, rlog free space[536846336], used space[16384] checkpoint begin, used_space[16384], free_space[536846336]... checkpoint end, 0 pages flushed, used_space[12288], free_space[536850432]. full check point end. shutdown audit subsystem...OK shutdown schedule subsystem...OK shutdown timer successfully. pre-shutdown MAL subsystem...OK shutdown worker threads subsystem...OK shutdown logic log subsystem...OK shutdown sequence cache subsystem...OK wait for mtsk link worker to exit..OK shutdown mpp session subsystem...OK wait for rapply is all over... OK rapply worker threads exit successfully. pre ending task & worker threads...OK shutdown dblink subsystem...OK shutdown local parallel threads pool successfully. shutdown pthd_pools...OK shutdown session subsystem...shutdown aux session subsystem...OK shutdown rollback segments purging subsystem...OK shutdown transaction subsystem...OK shutdown locking subsystem...OK shutdown dbms_lock subsystem...OK ending tsk and worker threads...OK ckpt2_exec_immediately begin. checkpoint begin, used_space[12288], free_space[536850432]... checkpoint end, 0 pages flushed, used_space[4096], free_space[536858624]. checkpoint begin, used_space[4096], free_space[536858624]... checkpoint begin, used_space[0], free_space[536862720]... shutdown archive subsystem...OK shutdown redo log subsystem...OK shutdown MAL subsystem...OK shutdown message compress subsystem successfully. shutdown task subsystem...OK shutdown trace subsystem...OK shutdown svr_log subsystem...OK shutdown plan cache subsystem...OK shutdown database dictionary subsystem...OK shutdown file subsystem...OK shutdown mac cache subsystem...OK shutdown dynamic login cache subsystem...OK shutdown ifun/bifun/sfun/afun cache subsystem...OK shutdown crypt subsystem...OK shutdown pipe subsystem...OK shutdown compress component...OK shutdown slave redo subsystem...OK shutdown kernel buffer subsystem...OK shutdown SQL capture subsystem...OK shutdown control file system...OK shutdown dtype subsystem...OK shutdown huge buffer and memory pools...OK close lsnr socket DM Database Server shutdown successfully. 

结语

  官方资源下载:https://eco.dameng.com/download/
  文档中心:https://eco.dameng.com/document/dm/zh-cn/start/index.html
  更多官方支持:https://eco.dameng.com
  本文章为此系列文章的SERIES1,可在专栏期待后续更多内容分享。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!