ITPub博客

首页 > 数据库 > 国内数据库 > 数据库教程FGMT74:国产数据库-达梦数据库工程师实战

数据库教程FGMT74:国产数据库-达梦数据库工程师实战

原创 国内数据库 作者:mfkqwyc86 时间:2026-10-22 10:58:09 0 删除 编辑

数据库教程FGMT74:国产数据库-达梦数据库工程师实战(主备集群、读写分离、共享集群、分布式)


## 一、前言与内容大纲


风哥针对本文先作说明。随着国产化替代在金融、政务、电力、通信等关键行业的加速落地,达梦数据库(简称 DM)已成为信创榜单上的主力国产数据库之一。风哥教程本文是一套面向希望快速掌握达梦 DM 的工程师的系统实战教程,内容取材于一套共 38 课时的达梦数据库实战体系。风哥设计这套内容,是为了让运维、数据库与开发人员能够从零开始,完成达梦单机部署、日常维护,以及主备集群、读写分离、共享存储集群、分布式集群四类高可用架构的搭建与验证,从而胜任达梦在开发、测试与一般业务生产环境下的工作。


风哥教程本文的结构如下:第一部分是前言与内容大纲;第二部分是达梦数据库理论基础知识,占全文约三成;第三部分是实战操作,占全文约六成,包含大量可复现的步骤与命令;第四部分是风哥针对本文的总结。本文涉及的集群技术包括:数据守护集群(DMDataWatch)、读写分离集群(DMRWC)、共享存储集群(DMDSC)、分析型大规模数据处理集群(DMMPP)以及透明分布式数据库(DMTDD)。需要说明的是,所有配置参数均按 64G 内存、8 核 CPU 的服务器规格设计,规划两台主机 fgedu-net-cn1 与 fgedu-net-cn2,数据库软件与数据文件统一放在 /fgedudb 目录,实例名与用户名统一使用 fgedudb / fgedudb / fgedu。


## 二、达梦数据库理论基础


### 2.1 达梦数据库与产品体系


达梦数据库管理系统(DM)是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,武汉达梦数据库股份有限公司成立于 2000 年,是中国电子信息产业集团(CEC)旗下的基础软件企业。达梦在语法与开发习惯上与 Oracle 高度兼容,支持 SQL:2003 标准与大部分 PL/SQL 特性,内置兼容 Oracle 模式的兼容层,因此从 Oracle 迁移到达梦的成本相对较低。达梦产品已应用于金融、电力、航空、通信、电子政务等五十多个行业领域,是信创产业榜单产品之一。


从产品线看,达梦既提供传统的单机版,也提供多种集群形态,以适应不同业务规模与可用性要求:单机架构适用于要求不高的应用场景;数据守护集群 DMDataWatch 适用于高可靠环境场景;读写分离集群 DMRWC 适用于读多写少场景;共享存储集群 DMDSC 适用于密集交易型场景;分析型大规模数据处理集群 DMMPP 适用于大规模数据分析的大规模并行计算场景;透明分布式数据库 DMTDD 则面向高并发、大规模数据存储与业务快速扩张的互联网化业务。


### 2.2 达梦体系架构


达梦的体系架构可以从逻辑结构、物理结构、内存结构与线程结构四个层面理解。


逻辑结构上,达梦采用数据库、表空间、段、区、页的层级组织。数据库是最高逻辑单位,一个实例管理一个数据库;数据库内部分为多个表空间,表空间由数据文件构成,表、索引等对象存放在表空间中,数据按页为单位读写,页之上是区、段。


物理结构上,达梦主要由以下文件组成:数据文件(.dbf,存放表与索引数据)、控制文件(记录数据库结构信息)、重做日志文件(记录数据变更,用于崩溃恢复)、归档日志文件(用于数据守护与时间点恢复),以及参数文件 dm.ini、服务配置文件 dm_svc.conf、报警日志与跟踪文件等。


内存结构上,达梦的内存主要分为缓冲区(Buffer Pool,缓存数据页)、日志缓冲区、字典缓存、SQL 缓存与执行上下文等,总内存通过 MEMORY_TARGET 等参数控制。线程结构上,达梦采用多线程模型,核心线程包括主线程(执行 SQL 与事务)、归档线程、守护线程、通信线程等,可通过动态视图查询线程运行状态。


### 2.3 四类集群技术原理


数据守护集群(DMDataWatch)是达梦高可用的基础,采用主备架构:主库提供读写服务,备库通过归档日志实时或异步同步主库数据,由守护进程(dmwatch)监控主备状态,主库故障时备库自动接管成为新主库,实现故障切换与容灾。实时主备模式下备库可提供只读查询,异步模式常用于异地容灾。


读写分离集群(DMRWC)在实时或即时主备基础上,把读操作自动分发到备库、写操作集中在主库,并具备负载均衡能力,最多可配置多个实时备库,适合读多写少的业务。


共享存储集群(DMDSC)是达梦的 RAC 类架构,多个实例共享同一套存储设备,通过共享存储管理模块(DMASM)与内部通信实现多实例并发访问,提供高可用与横向扩展,单点故障不影响集群整体。


分布式相关技术方面,DMMPP 是大规模并行分析集群,数据分片到多个节点并行处理,适合分析型负载;DMTDD 是透明分布式数据库,具有可扩展、高可用、高性能特性,数据自动分片并保持分布透明,应用无需感知分片细节,适合高并发与海量数据场景。


### 2.4 日常维护要点


达梦日常维护涵盖实例管理、对象与 SQL、存储管理、用户权限、备份恢复与监控巡检。备份分为逻辑备份(dexp/dimp,类似 Oracle 的 exp/imp)与物理备份(dmrman 联机或脱机备份)。监控方面,达梦提供 DEM 监控管理工具、巡检工具与性能工具,可远程管理多个达梦实例。


---


风哥数据库教程 itpux-com


---


## 三、达梦数据库实战操作


### 3.1 项目实战环境准备


风哥教程本文规划两台主机,规格均为 64G 内存、8 核 CPU。先配置主机名、hosts 映射并关闭防火墙与 SELinux。


```

hostnamectl set-hostname fgedu-net-cn1

hostnamectl set-hostname fgedu-net-cn2

cat >> /etc/hosts <<EOF

192.168.30.11 fgedu-net-cn1

192.168.30.12 fgedu-net-cn2

EOF

systemctl stop firewalld && systemctl disable firewalld

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

```


创建达梦专用用户与安装目录,软件与数据统一放在 /fgedudb 下。


```

groupadd dinstall

useradd -m -s /bin/bash dmdba -g dinstall

mkdir -p /fgedudb/{app,data,arch,backup}

chown -R dmdba:dinstall /fgedudb

echo "ulimit -n 65536" >> /etc/profile

```


### 3.2 达梦单机安装配置


以 dmdba 用户执行安装程序,采用静默方式避免交互,安装路径为 /fgedudb/app/dmdbms。


```

su - dmdba

./DMInstall.bin -q install_type=1 install_path=/fgedudb/app/dmdbms

```


若采用命令行交互方式,则按提示选择安装组件、安装路径并设置数据库类型;安装完成后执行 root 脚本注册服务:


```

/fgedudb/app/dmdbms/script/root/dmservice.sh install

```


### 3.3 初始化数据库实例


使用 dminit 初始化实例,指定实例名 fgedudb、数据库名 fgedudb、端口 5236 与数据目录。


```

su - dmdba

export DM_HOME=/fgedudb/app/dmdbms

export PATH=$DM_HOME/bin:$PATH

dminit PATH=/fgedudb/data INSTANCE_NAME=fgedudb \

  DB_NAME=fgedudb PORT_NUM=5236 \

  PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=2048 \

  CASE_SENSITIVE=0 CHARSET=1

```


按 64G 内存、8 核 CPU 调整关键内存参数,编辑 /fgedudb/data/dm.ini 或在 disql 中动态调整:


```

SQL> ALTER SYSTEM SET 'MEMORY_TARGET'=8192;

SQL> ALTER SYSTEM SET 'BUFFER_POOL_TOTAL_SIZE'=32768;

SQL> ALTER SYSTEM SET 'MAX_SESSIONS'=2000;

```


启动与停止实例:


```

systemctl start DmServicefgedudb

systemctl stop DmServicefgedudb

```


### 3.4 基本使用与 DISQL 操作


使用 disql 命令行登录并执行建库建表操作。


```

disql SYSDBA/SYSDBA@localhost:5236

CREATE TABLESPACE TS_DATA DATAFILE '/fgedudb/data/ts_data.dbf' SIZE 1024;

CREATE USER fgedu IDENTIFIED BY Fgedu@2026 DEFAULT TABLESPACE TS_DATA;

GRANT DBA TO fgedu;

CREATE TABLE fgedu.emp(id INT PRIMARY KEY, name VARCHAR(30), dept VARCHAR(30), sal DECIMAL(10,2));

INSERT INTO fgedu.emp VALUES(1,'张三','研发',15000),(2,'李四','测试',12000),(3,'王五','运维',18000);

SELECT dept,COUNT(*) cnt,SUM(sal) total FROM fgedu.emp GROUP BY dept;

```


查询内存与线程相关动态视图,做简单巡检:


```

SQL> SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE '%BUFFER%';

SQL> SELECT COUNT(*) FROM V$SESSIONS;

SQL> SELECT TABLESPACE_NAME, TOTAL_SIZE*PAGE/1024 AS TOTAL_MB FROM DBA_TABLESPACES;

```


### 3.5 备份与恢复实战


逻辑备份与恢复使用 dexp/dimp 工具。


```

dexp fgedu/Fgedu@2026@localhost:5236 file=/fgedudb/backup/exp_$(date +%F).dmp log=/fgedudb/backup/exp_$(date +%F).log

dimp fgedu/Fgedu@2026@localhost:5236 file=/fgedudb/backup/exp_2026-10-22.dmp log=/fgedudb/backup/imp_2026-10-22.log

```


物理备份与恢复使用 dmrman 工具,先做联机全备。


```

dmrman CTLSTMT="BACKUP DATABASE '/fgedudb/data/dm.ini' FULL BACKUPSET '/fgedudb/backup/dm_full_20261022'"

dmrman CTLSTMT="RESTORE DATABASE '/fgedudb/data/dm.ini' FROM BACKUPSET '/fgedudb/backup/dm_full_20261022'"

```


---


风哥 itpux-com

风哥教程 113257174


---


### 3.6 DM 主备集群(DMDataWatch)搭建


主备集群至少三台主机或两台主机,本文演示 fgedu-net-cn1 为主库、fgedu-net-cn2 为备库。首先在主库开启归档。


```

SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/fgedudb/arch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=10240';

SQL> ALTER DATABASE ARCHIVELOG;

```


在主库做物理备份并复制到备库。


```

dmrman CTLSTMT="BACKUP DATABASE '/fgedudb/data/dm.ini' FULL TO BK_FULL BACKUPSET '/fgedudb/backup/bk_full'"

scp -r /fgedudb/backup/bk_full dmdba@192.168.30.12:/fgedudb/backup/

```


在备库 fgedu-net-cn2 配置 dm.ini(实例名 fgedudb02、端口 5237)与 dmarch.ini 归档配置,并还原备份。


```

# 备库还原

dmrman CTLSTMT="RESTORE DATABASE '/fgedudb/data/dm.ini' FROM BACKUPSET '/fgedudb/backup/bk_full'"

dmrman CTLSTMT="RECOVER DATABASE '/fgedudb/data/dm.ini' UPDATE DB_MAGIC"

```


分别编辑主备的 dmwatcher.ini,配置守护进程(配置组如 GRP1,主库 DW_MODE=MANUAL,备库为 AUTO),然后启动两库。


```

SQL> ALTER DATABASE ADD WATCHER 'fgedu_grp1';

SQL> ALTER DATABASE OPEN;

```


启动主备两库的守护进程 dmwatcher。


```

dmwatcher /fgedudb/data/dmwatcher.ini

```


客户端通过 dm_svc.conf 配置主备地址,实现故障切换后的透明重连。


```

cat > /etc/dm_svc.conf <<EOF

fgedu_grp1=(192.168.30.11:5236,192.168.30.12:5237)

SWITCH_TIME=(60)

SWITCH_INTERVAL=(200)

EOF

```


测试切换:停掉主库,观察备库在配置时间内自动接管成为新主库,应用通过 dm_svc.conf 自动重连且数据不丢失。


### 3.7 DM 读写分离集群(DMRWC)搭建


读写分离集群在实时主备基础上增加读写分离属性。备库配置只读与 service 属性,客户端 dm_svc.conf 增加读写分离与负载均衡参数。


```

# 客户端 dm_svc.conf

fgedu_grp1=(192.168.30.11:5236,192.168.30.12:5237)

RW_SEPARATE=(1)

RW_SEPARATE_PERCENT=(70)

LOGIN_MODE=(1)

```


配置完成后运行读多写少的业务,观察读语句被分发到备库、写语句集中在主库,验证读写分离与负载均衡生效。


### 3.8 DM 共享存储集群(DMDSC)搭建


DMDSC 需要共享存储。先使用 dmasmtool 创建 ASM 磁盘组。


```

dmasmtool

CREATE DISKGROUP '/fgedudb/asm/asm_01' SIZE 10240;

CREATE DISKGROUP '/fgedudb/asm/asm_02' SIZE 10240;

```


在两个节点分别用 dminit 以 ASM 方式初始化实例,配置 dmdcr.ini 与 dm.ini 中的集群相关参数。


```

dminit PATH=+DG1/data INSTANCE_NAME=fgedudb01 DB_NAME=fgedudb PORT_NUM=5236 DMDCR_INI=/fgedudb/data/dmdcr.ini

dminit PATH=+DG1/data INSTANCE_NAME=fgedudb02 DB_NAME=fgedudb PORT_NUM=5237 DMDCR_INI=/fgedudb/data/dmdcr.ini

```


依次启动两节点实例并验证集群状态。


```

DmServiceDMSERVER01 start

DmServiceDMSERVER02 start

disql SYSDBA/SYSDBA@192.168.30.11:5236

SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;

```


验证高可用:两节点能查询到同一份数据,停掉一个节点实例,业务仍可通过另一节点继续访问。


### 3.9 DM 分布式集群(DMMPP / DMTDD)搭建


以 DMMPP 为例,规划 fgedu-net-cn1 部署协调节点、fgedu-net-cn2 部署两个执行节点,分别用 dminit 以 MPP 模式初始化各节点。


```

dminit PATH=/fgedudb/data/mpp1 PATH_TYPE=MPP INSTANCE_NAME=mp01 PORT_NUM=5236

dminit PATH=/fgedudb/data/mpp2 PATH_TYPE=MPP INSTANCE_NAME=mp02 PORT_NUM=5237

```


配置完成后启动各节点,通过协调节点端口登录,创建分片表并写入数据,验证数据按分片策略分布到多个执行节点,停掉一个节点后数据仍可完整读取,体现并行处理与容错能力。


```

disql SYSDBA/SYSDBA@192.168.30.11:5236

CREATE TABLE fgedu.d_emp(id INT, name VARCHAR(30)) DISTRIBUTE BY HASH(id);

INSERT INTO fgedu.d_emp VALUES(1,'张三'),(2,'李四'),(3,'王五'),(4,'赵六');

SELECT COUNT(*) FROM fgedu.d_emp;

```上51CTO搜索风哥可以学习全套数据库教程


---


## 四、风哥针对本文总结


风哥针对本文做一个收尾总结。本文从达梦数据库的产品体系与架构理论入手,把逻辑、物理、内存、线程四层结构以及数据守护、读写分离、共享存储、分布式四类集群的原理讲清楚,然后用约六成的篇幅,在 64G 内存、8 核 CPU 的两台主机 fgedu-net-cn1、fgedu-net-cn2 上,完成了达梦单机静默安装、实例初始化、建库建表、备份恢复、主备集群搭建、读写分离配置、共享存储集群部署与分布式集群部署的全过程,并演示了故障切换、读写分离与数据分片验证。通过本文,读者应当具备独立部署达梦单机与四类高可用集群的能力,能够胜任政企国产化场景下的达梦数据库工作。后续进阶建议深入学习达梦性能调优、Oracle 到达梦的迁移以及达梦运维监控平台 DEM 的深入使用。以上就是风哥教程本文的全部内容,感谢阅读。网上搜索风哥教程可以学习全套数据库教程




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9664900/viewspace-3186398/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
风哥Oracle,MySQL,PostgreSQL,Linux,大数据,国产数据库,中间件等教程

注册时间:2010-10-26

  • 博文量
    88
  • 访问量
    424235