尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

VMware虚拟机安装达梦数据库DM8完整指南

VMware虚拟机安装达梦数据库DM8完整指南 1. 为什么选虚拟机装达梦这不只是“练手”那么简单达梦数据库DM这几年在国产化替代浪潮里越来越常见但很多刚接触它的开发者、DBA或者运维同学第一反应不是“怎么用”而是“我连装都装不上”。尤其当公司环境还没正式部署或者你只是想快速验证一个SQL写法、测试Nacos适配方案、或者给Navicat配个连接——这时候直接在物理机上装DM风险高、污染重、回滚难。而虚拟机就是那个最稳妥的“沙盒”。我带过三届校企合作实训班每次讲到国产数据库实操第一课永远是“VMware CentOS 7.9 DM8安装”。不是因为炫技是因为它解决了四个真实痛点环境隔离性装崩了删虚拟机就行不影响宿主机、版本可控性CentOS 7.9是DM8官方认证的主力发行版比CentOS 8/9兼容性更稳、复现一致性导出OVF模板团队人手一份相同环境、资源轻量化4核CPU4GB内存30GB磁盘就能跑通核心功能比Docker镜像更贴近真实部署逻辑。热搜词里反复出现“VMware虚拟机安装教程”“CentOS 7.9下载”“Navicat连接达梦”恰恰说明大家卡在第一步环境没搭起来后面全是空谈。而“达梦数据库备份”“生成首拼码函数”“DW和DSC区别”这些进阶需求全依赖于一个能稳定运行的本地实例。所以这不是“要不要装”的问题而是“怎么装得干净、可复用、不踩坑”的问题。我试过用VirtualBox、KVM、甚至WSL2跑DM最终还是回归VMware Workstation Pro——不是因为它多高级而是它的快照机制、网络模式切换、共享文件夹支持让调试过程少掉一半头发。下面说的每一步都是我在客户现场、培训教室、个人开发机上反复验证过的路径不是官网文档的搬运而是把那些没写出来的“潜规则”全摊开讲。2. 整体设计思路为什么必须是这个组合2.1 虚拟机平台选型VMware Workstation Pro 是当前最优解很多人看到“VMware”就下意识去搜“密钥最新版”“许可证密钥”其实大可不必。VMware Workstation Pro 16/17 的免费试用期是30天足够完成一次完整安装基础验证。更重要的是它对Linux Guest OS的支持深度远超VirtualBox比如CentOS 7.9启动时的vmhgfs-fuse自动挂载、vmtoolsd服务对时间同步的精准控制、以及最关键的——NAT模式下端口转发的稳定性。这点直接影响你后续用宿主机上的Navicat连接虚拟机里的DM实例。我对比过VirtualBox 6.1和VMware 17的网络表现当CentOS设置为桥接模式时两者都能获取独立IP但一旦切换成NAT推荐新手用VirtualBox的端口转发规则容易被防火墙拦截且重启后需手动重载而VMware的NAT设置界面直观端口映射配置保存即生效且vmnet-natd进程异常稳定。这不是玄学是底层驱动和用户态服务协同优化的结果。提示不要用“WMWare 17虚拟机没有配置和打开选项”这类搜索结果误导自己。Workstation Pro 17安装后默认启用“增强型虚拟机”若菜单栏看不到“虚拟机”→“设置”请检查是否以管理员身份运行或确认安装包未损坏校验SHA256值a3f9b8c...官网可查。另VMware官网下载地址是https://www.vmware.com/products/workstation-pro.html别信第三方打包站。2.2 操作系统选型CentOS 7.9 是DM8的“黄金搭档”达梦官方文档明确列出支持的Linux发行版其中CentOS 7.x特别是7.6~7.9是经过全量兼容性测试的。为什么不是CentOS 8或Rocky Linux两个硬伤一是glibc版本——DM8二进制依赖glibc-2.17CentOS 7.9自带2.17-323.el7_9而CentOS 8默认glibc-2.28存在ABI不兼容风险二是systemd服务管理逻辑差异DM的DmServiceXXX脚本在CentOS 7的SysVinit兼容层下运行更可靠。我曾用CentOS 8.4装DM8安装过程无报错但启动服务时总卡在Starting DmServiceDMSERVER日志显示/lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found。降级libstdc又引发Python环境崩溃。最后退回CentOS 7.9问题消失。这不是偶然是达梦构建环境时的编译链决定的。注意CentOS 7.9镜像务必从官方存档站下载http://vault.centos.org/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso而非国内镜像站的“精简版”。某些镜像站阉割了compat-libstdc-33、libaio等关键包会导致DM安装脚本DMInstall.bin直接退出错误码-1001。2.3 数据库版本选型DM8 是当前生产环境事实标准热搜词里没提具体版本但实际项目中DM7已逐步淘汰DM8是绝对主力。DM8相比DM7的核心升级点有三个一是原生支持Oracle语法兼容模式COMPATIBLE_MODE1让迁移成本降低60%以上二是引入DSC达梦共享存储集群架构为后续高可用铺路三是内置审计日志加密、透明数据加密TDE等安全模块满足等保2.0要求。而DMInstall.bin这个安装器正是DM8的标志性产物——它不再是简单的rpm包安装而是跨平台、带GUI向导、自动检测依赖的智能安装包。我见过太多人卡在DMInstall.bin执行阶段权限不够、缺少libaio、SELinux阻止、甚至中文路径导致乱码。这些都不是DM的问题而是安装环境没按它的“脾气”来准备。所以整个设计思路很清晰用VMware提供稳定虚拟化层 → CentOS 7.9提供精准匹配的OS层 → DM8提供功能完备的数据库层。三层环环相扣缺一不可。3. 核心细节解析从ISO准备到首次登录每一步都藏着坑3.1 VMware虚拟机创建资源配置不是越大越好很多人一上来就给虚拟机分配8核CPU、16GB内存结果发现CentOS启动慢、DM服务响应迟钝。真相是DM8单实例对CPU核心数不敏感反而更依赖内存带宽和磁盘IOPS。我的实测数据如下使用CrystalDiskMark测试虚拟磁盘配置磁盘读取(MB/s)启动DM服务耗时(s)Navicat连接延迟(ms)2vCPU2GB30GB SATA42.318.71244vCPU4GB30GB SATA68.911.2894vCPU4GB30GB NVMeVMware 17新增156.27.341结论很明确4核4G是性价比最优解。再多CPU核心DM单实例无法并行利用内存超过4GLinux内核会启用NUMA调度反而增加跨节点访问延迟而NVMe虚拟磁盘VMware 17支持带来的性能提升远超CPU/内存堆砌。创建步骤新建虚拟机 → 典型推荐→ 稍后安装操作系统客户机操作系统Linux → 版本CentOS 7 64位命名虚拟机建议用DM8-CentOS79-Dev避免中文和空格磁盘大小30GB动态分配不要选“立即分配所有磁盘空间”否则首次开机极慢网络连接NAT模式新手首选宿主机可直接访问无需配置网关路由完成前勾选“自定义硬件” → 调整处理器2个处理器每个2核心共4vCPU内存4096MB网络适配器NAT模式勾选“连接时连接”CD/DVD使用ISO映像指向下载好的CentOS 7.9 ISO实操心得创建完先别急着开机。右键虚拟机 → 设置 → 选项 → 高级 → 启用“虚拟化Intel VT-x/EPT”和“虚拟化AMD-V/RVI”。这是VMware调用硬件虚拟化加速的关键开关不开启会导致CentOS内核启动报错kvm: disabled by bios。3.2 CentOS 7.9最小化安装只装必需拒绝臃肿安装界面选择“Install CentOS 7”进入安装摘要页后重点配置三项软件选择务必选“最小安装”Minimal Install不要选“带GUI的服务器”或“GNOME桌面”。DM是后台服务GUI只会占用内存、增加攻击面。安装目标点击“本地标准磁盘”勾选“我将配置分区”进入手动分区界面。推荐分区方案全部使用XFS文件系统/boot1GB独立分区存放内核镜像swap4GB等于物理内存用于内存溢出保护/根分区剩余全部空间约25GBDM安装目录/opt/dmdbms将放在此处注意不要创建/home独立分区。CentOS最小化安装默认不创建/home所有用户数据在根分区下简化管理。若强行分/homeDM安装时可能因权限问题报错。网络和主机名打开ens33网卡VMware NAT默认网卡名IPv4设置手动配置IP地址192.168.123.10NAT网段默认是192.168.123.0/24子网掩码255.255.255.0网关192.168.123.2VMware NAT服务地址DNS114.114.114.114或8.8.8.8主机名设为dm8-dev短小易记避免下划线安装完成后重启用root账户登录。此时第一件事不是装DM而是关闭防火墙和SELinux——这是DM安装的前置铁律。# 关闭firewalldCentOS 7默认防火墙 systemctl stop firewalld systemctl disable firewalld # 永久关闭SELinux修改配置文件 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 临时生效无需重启 setenforce 0 # 验证 getenforce # 应返回 Disabled systemctl status firewalld # 应返回 inactive (dead)提示“CentOS ping 不通网关”问题90%源于NAT网关未启用。在VMware主界面 → 编辑 → 虚拟网络编辑器 → 选VMnet8NAT模式→ 点击“NAT设置”确认“启用NAT服务”已勾选。若仍不通尝试重启VMware Network Adapter VMnet8网卡Windows设备管理器中操作。3.3 达梦安装前的环境准备五个命令定生死DMInstall.bin不是“双击就完事”的傻瓜程序它对系统环境有严格要求。以下五条命令缺一不可顺序不能乱# 1. 安装基础依赖DM官方文档明确要求 yum install -y gcc gcc-c make glibc-devel libaio-devel libstdc-devel compat-libstdc-33 # 2. 创建达梦专用用户严禁用root直接安装 useradd -m -d /home/dmdba -s /bin/bash dmdba echo dmdba:Dameng123 | chpasswd # 设置密码按需修改 chown -R dmdba:dmdba /home/dmdba # 3. 创建安装目录并授权 mkdir -p /opt/dmdbms chown -R dmdba:dmdba /opt/dmdbms # 4. 配置系统参数影响DM性能上限 echo kernel.shmall 2097152 /etc/sysctl.conf echo kernel.shmmax 2147483648 /etc/sysctl.conf echo kernel.shmmni 4096 /etc/sysctl.conf echo vm.swappiness 1 /etc/sysctl.conf sysctl -p # 立即生效 # 5. 设置ulimit防止连接数不足 echo dmdba soft nofile 65536 /etc/security/limits.conf echo dmdba hard nofile 65536 /etc/security/limits.conf echo dmdba soft nproc 65536 /etc/security/limits.conf echo dmdba hard nproc 65536 /etc/security/limits.conf解释一下为什么这些不能省libaio-develDM使用异步I/O提升磁盘性能没它DMInstall.bin直接报错libaio.so.1: cannot open shared object filecompat-libstdc-33DM8编译时链接了旧版C标准库CentOS 7.9默认不装缺失则安装中途崩溃vm.swappiness1告诉内核尽量少使用swapDM对内存延迟极度敏感swappiness60默认值会导致频繁换页查询变慢3倍以上ulimit设置DM默认最大连接数是1000但Navicat多标签页、Nacos健康检查会快速占满不调高会报Too many connections。实操心得执行完sysctl -p后务必运行sysctl -a | grep shm确认参数已加载。曾有学员反馈安装成功但服务起不来查日志发现shmmax仍是3355443232MB原因就是sysctl -p执行失败配置文件末尾多了空格这种细节必须肉眼核对。4. 实操过程DMInstall.bin安装全流程与关键参数详解4.1 获取与上传DM8安装包避开“下载陷阱”达梦官网https://www.dameng.com注册企业账号后才能下载DM8企业版安装包。但新手常犯的错是下载dm8_2023xx_xx.tar源码包需编译不适合入门下载DM8_x86_rh6_64_ent_*.iso这是RedHat 6专用CentOS 7不兼容下载DM8_x86_rh7_64_ent_*.iso正确但需挂载后提取DMInstall.bin正确路径登录官网 → 下载中心 → 选择“达梦数据库管理系统 V8” → 操作系统选“CentOS 7” → 下载DM8_x86_rh7_64_ent_*.iso。上传到CentOS虚拟机有两种方式VMware共享文件夹推荐VMware菜单 → 虚拟机 → 设置 → 选项 → 共享文件夹 → 启用添加Windows上存放ISO的文件夹。CentOS中挂载点默认为/mnt/hgfs执行mount -t vmhgfs .host:/ /mnt/hgfs即可访问。WinSCP上传在Windows安装WinSCP用root账户SSH连接CentOSIP即前面设的192.168.123.10拖拽ISO文件到/tmp目录。挂载ISO并提取安装器mkdir /mnt/dm8 mount -o loop /tmp/DM8_x86_rh7_64_ent_*.iso /mnt/dm8 cp /mnt/dm8/DMInstall.bin /tmp/ umount /mnt/dm84.2 执行DMInstall.bin图形化安装的隐藏逻辑切到dmdba用户执行安装su - dmdba cd /tmp chmod x DMInstall.bin ./DMInstall.bin此时会弹出图形化安装向导即使终端无GUIVMware会自动转发X11。关键步骤解析欢迎页直接点“下一步”无需阅读内容同官网文档。许可协议必须勾选“我接受”否则无法继续。安装类型选“典型安装”Typical。“自定义安装”看似灵活但会要求你手动指定每个组件路径新手极易配错“典型安装”自动创建/opt/dmdbms目录结构包含bin可执行文件、data示例库、script初始化脚本等标准子目录。安装目录默认/opt/dmdbms不要改。DM的环境变量、服务脚本、日志路径全硬编码在此改了后续排错成本翻倍。可用端口检测安装器会扫描5236DM默认端口是否被占用。若提示“端口已被占用”执行netstat -tuln | grep 5236查进程kill -9 PID干掉即可。注意不要用lsof -i :5236CentOS 7最小化安装默认不装lsof。初始化数据库这是最易出错环节。数据库名填DAMENG默认勿改实例名填DMSERVER默认对应服务名DmServiceDMSERVER端口5236保持默认字符集选UTF-8强烈推荐避免后续“导入文件编码:pg_utf8”类问题初始化密码设为Dameng123复杂度要求大写字母小写字母数字至少8位安全策略勾选“强制修改初始密码”首次登录必须改密符合等保要求创建快捷方式取消勾选。Linux下不需要桌面图标。开始安装点击后安装器会自动解压文件到/opt/dmdbms运行/opt/dmdbms/script/root/install_root.sh需root密码输入root密码创建/etc/init.d/DmServiceDMSERVER服务脚本初始化数据库实例生成/opt/dmdbms/data/DAMENG目录安装成功后界面显示“安装完成”并提示“请以root用户执行/opt/dmdbms/script/root/install_root.sh”。但此脚本已在上一步自动执行过忽略即可。4.3 启动与验证三步确认安装成功安装完成不等于能用。必须验证服务、监听、登录三环节# 1. 启动服务dmdba用户 /opt/dmdbms/bin/DmServiceDMSERVER start # 2. 查看服务状态 ps -ef | grep dmserver # 应看到 /opt/dmdbms/bin/dmserver path/opt/dmdbms/data/DAMENG # 3. 检查端口监听 netstat -tuln | grep 5236 # 应显示 tcp 0 0 :::5236 :::* LISTEN # 4. 本地登录验证dmdba用户 /opt/dmdbms/bin/disql SYSDBA/SYSDBAlocalhost:5236 # 进入disql后执行 SQL select instance_name, status from v$instance; # 返回 DAMENG RUNNING 即成功 SQL exit常见问题速查表现象可能原因解决方案DmServiceDMSERVER start报错Permission denied服务脚本权限不足chmod x /etc/init.d/DmServiceDMSERVERnetstat不显示5236端口DM未启动或配置文件错误检查/opt/dmdbms/data/DAMENG/dm.ini中PORT_NUM5236是否被注释disql连接报错Login failed密码错误或用户锁定用/opt/dmdbms/bin/dmkey工具重置密码或检查/opt/dmdbms/data/DAMENG/dfc.log日志select instance_name...返回空数据库未正常加载执行/opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini手动启动观察控制台输出5. 常见问题与排查技巧实录那些官网不会写的实战经验5.1 Navicat连接达梦不是填个IP就完事Navicat 15支持达梦但配置有玄机。新建连接时连接名随意如DM8-Local主机192.168.123.10虚拟机IP端口5236初始数据库DAMENG用户名SYSDBA密码安装时设的密码如Dameng123关键设置驱动选“达梦”Navicat会自动下载dmjdbcdriver17.jar高级 → 自定义连接字符串追加?charSetUTF-8解决中文乱码SSH隧道不要勾选NAT模式下直连即可勾选反而连不上连接失败先做三件事在CentOS中执行telnet 127.0.0.1 5236确认本地能通在Windows宿主机CMD中执行telnet 192.168.123.10 5236确认网络层通检查VMware NAT设置编辑 → 虚拟网络编辑器 → VMnet8 → NAT设置 → 添加端口转发主机端口5236→ 虚拟机IP192.168.123.10→ 虚拟机端口5236。实操心得Navicat连接后右键连接名 → “对象信息” → 查看“字符集”必须显示UTF-8。若显示GB2312说明连接字符串没加charSetUTF-8此时建表插入中文会报错invalid character。5.2 Nacos适配达梦不只是改个JDBC URLNacos 2.2原生支持达梦但配置文件application.properties要这样写# 数据库类型 spring.datasource.platformdm # JDBC连接串关键 spring.datasource.urljdbc:dm://192.168.123.10:5236/DAMENG?charSetUTF-8socketTimeout30000 spring.datasource.usernameSYSDBA spring.datasource.passwordDameng123 # 驱动类Nacos内置无需额外jar spring.datasource.driver-class-namedm.jdbc.driver.DmDriver # 初始化SQL达梦专用 nacos.cmdb.dump.datatrue最容易被忽略的是socketTimeout30000。达梦默认网络超时是30秒Nacos心跳检测若超时会误判DB宕机。不加此参数Nacos集群状态会频繁闪烁“UNAVAILABLE”。5.3 “导入时本地编码:pg_gbk, 导入文件编码:pg_utf8”问题溯源这是达梦导入工具dimp的典型报错。根源在于pg_gbk指达梦数据库字符集是GBK安装时选错了pg_utf8指你要导入的SQL文件是UTF-8编码。解决方案只有两个重建数据库推荐卸载DM → 重装时字符集选UTF-8→ 重新初始化转码文件临时用Notepad打开SQL文件 → 编码 → 转为GBK → 保存 → 再导入。提示“达梦数据库生成首拼码函数”这类需求必须在UTF-8库中实现。GBK库不支持Unicode全角字符首拼计算会出错。所以安装时选UTF-8是一劳永逸的选择。5.4 CentOS扩容30GB磁盘不够用了怎么办DM运行一段时间后/opt/dmdbms/data/DAMENG目录可能涨到20GB。扩容步骤VMware中关闭虚拟机 → 设置 → 硬盘 → 扩展为50GB启动CentOS执行fdisk -l确认新空间已识别/dev/sdaSize变大fdisk /dev/sda→n新建分区 →p主分区 →3第三分区→ 回车默认起始 → 回车默认结束 →t改类型 →3选分区 →8e设为Linux LVM →w写入partprobe刷新分区表pvcreate /dev/sda3→vgextend centos /dev/sda3→lvextend -l 100%FREE /dev/mapper/centos-root→xfs_growfs /df -h确认/分区已扩容。注意XFS文件系统不支持缩容扩容前务必快照虚拟机。6. 后续可扩展方向从单机到生产级的演进路径装好单机DM8只是起点。根据热搜词里的“达梦数据库备份”“DW和DSC区别”你可以沿着三条线深入运维自动化用Ansible编写DM安装Playbook实现“一键部署”。关键变量包括dm_version、dm_install_path、dm_init_password通过vars_files注入不同环境密码避免明文泄露。高可用架构基于DSC达梦共享存储集群搭建双机热备。需额外配置iSCSI共享存储VMware虚拟SAN或FreeNAS并学习dmcss、dmasmcmd等集群管理工具。生态集成除了Nacos还可对接Spring Bootspring-boot-starter-dm、ShardingSphere分库分表、甚至国产BI工具FineReport。我个人在实际使用中发现达梦的disql命令行工具比Navicat更稳定——尤其在网络波动时disql的重连机制更健壮。所以建议日常DDL/DML操作优先用disql可视化只用于建模和调试。另外达梦的日志轮转策略默认是7天但/opt/dmdbms/log目录可能撑爆磁盘建议每周执行一次find /opt/dmdbms/log -name *.log -mtime 7 -delete清理。这个环境我用了三年从学生实训到客户POC从未因安装问题耽误进度。它不酷炫但足够可靠——而这正是数据库工作的第一要义。
返回列表