news 2026/9/16 1:12:25

达梦数据库主从架构部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
达梦数据库主从架构部署

达梦数据库主从架构部署笔记

1. 概述

主从架构由1个主库(Primary)和1个或多个备库(Standby)组成,主库对外提供读写服务,备库实时同步主库数据,主库故障时可切换备库为主库继续提供服务。

2. 部署规划

  • 架构:1主1备1监视器
  • 主库IP:10.18.18.16
  • 备库IP:10.18.18.17
  • 实例名:主库 dw1,备库 dw2
  • 数据库名:DAMENG
  • 端口:5236(数据库服务),7336(MAL系统),7436(守护进程)

3. 部署准备(主备服务器均需执行)

3.1 操作系统配置

3.1.1 内核参数
vi/etc/sysctl.conf# 添加以下参数fs.file-max=6815744fs.aio-max-nr=1048576kernel.shmmni=4096kernel.sem=25032000100128net.ipv4.ip_local_port_range=900065500net.core.rmem_default=4194304net.core.rmem_max=4194304net.core.wmem_default=262144net.core.wmem_max=1048576vm.dirty_ratio=80vm.dirty_expire_centisecs=500vm.dirty_writeback_centisecs=100kernel.core_pattern=/dmdata/core.%e_%p_%tvm.swappiness=10vm.dirty_background_ratio=0vm.min_free_kbytes=512000# 使参数生效sysctl-p
3.1.2 用户组

使用richmail用户部署(禁止使用 root)

3.1.3 资源限制
vi/etc/security/limits.conf# 添加以下配置richmail softnice0richmail hardnice0richmail soft as unlimited richmail hard as unlimited richmail soft fsize unlimited richmail hard fsize unlimited richmail soft nproc65536richmail hard nproc65536richmail soft nofile65536richmail hard nofile65536richmail soft core unlimited richmail hard core unlimited richmail soft data unlimited richmail hard data unlimited
3.1.4 关闭防火墙
systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service# 确认已关闭
3.1.5 关闭透明大页和NUMA
vi/etc/default/grub# 在 GRUB_CMDLINE_LINUX 中添加:numa=offtransparent_hugepage=never# 示例:GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off transparent_hugepage=never"# 重新生成grub配置grub2-mkconfig-o/boot/grub2/grub.cfg# CentOS/RHEL 7# 或update-grub# Ubuntu/Debian# 重启生效reboot
3.1.6 IO调度算法
# 查看当前调度器cat/sys/block/sda/queue/scheduler# 永久修改为deadline(机械硬盘)grubby --update-kernel=ALL--args="elevator=deadline"# 重启生效reboot
3.1.7 环境变量(richmail用户)
vi~/.bash_profile# 添加exportDM_HOME=/data/apps/dmdbmsexportPATH=$PATH:$DM_HOME/binexportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin# 生效source~/.bash_profile

4. 数据库软件安装

4.1 挂载镜像并安装

# root用户执行cpdm8_20250905_HWarm_kylin10_sp1_64.iso /optchownrichmail. /opt/dm8_20250905_HWarm_kylin10_sp1_64.isomkdir-p/mnt/dmchownrichmail. /mnt/dmchmod755/mnt/dmmount-oloop /opt/dm8_20250905_HWarm_kylin10_sp1_64.iso /mnt/dm# 切换richmail用户su- richmailcd/mnt/dm# 执行安装./DMInstall.bin-i# 交互式安装选项:# 是否输入Key文件路径?/opt/dmA401139057.key(如有)# 时区:21(东八区)# 安装类型:1(典型安装)# 安装路径:直接回车(默认/data/apps/dmdbms)# 确认安装:y# root用户执行root脚本sudo/data/apps/dmdbms/script/root/root_installer.sh

4.2 创建目录并授权

# root用户执行mkdir-p/data/apps/dmdbms/datamkdir-p/data/apps/dmdbms/archmkdir-p/data/apps/dmdbms/dmbakchown-Rrichmail. /data/apps/dmdbms/datachown-Rrichmail. /data/apps/dmdbms/archchown-Rrichmail. /data/apps/dmdbms/dmbakchmod-R755/data/apps/dmdbms/datachmod-R755/data/apps/dmdbms/archchmod-R755/data/apps/dmdbms/dmbak

5. 主备集群配置

5.1 初始化实例

主库执行:
su- richmailcd/data/apps/dmdbms/bin ./dminitpath=/data/apps/dmdbms/dataDB_NAME=DAMENG\INSTANCE_NAME=DMSERVERPORT_NUM=5236\SYSDBA_PWD=XWcloud139SYSAUDITOR_PWD=XWcloud139\CASE_SENSITIVE=0# 启动一次数据库(使配置生效)./dmserver /data/apps/dmdbms/data/DAMENG/dm.ini# 看到 "system is ready" 后正常退出(输入exit)
备库执行:
su- richmailcd/data/apps/dmdbms/bin ./dminitpath=/data/apps/dmdbms/dataDB_NAME=DAMENG\INSTANCE_NAME=DMSERVERPORT_NUM=5236\SYSDBA_PWD=XWcloud139SYSAUDITOR_PWD=XWcloud139\CASE_SENSITIVE=0# 注意:备库初始化后不要正常启动,后面直接mount

5.2 脱机备份数据库

主库(关闭实例后执行):
# 确保主库实例已关闭cd/data/apps/dmdbms/bin# 启动DMAP服务(必须)./DmAPService start# 启动dmrman./dmrmanuse_ap=2# 执行备份RMAN>backup database'/data/apps/dmdbms/data/DAMENG/dm.ini'backupset'/data/apps/dmdbms/bakfull';RMAN>check backupset'/data/apps/dmdbms/bakfull';RMAN>exit;# 将备份文件拷贝到备库scp-r/data/apps/dmdbms/bakfull richmail@10.18.18.17:/data/apps/dmdbms/
备库执行还原:
cd/data/apps/dmdbms/bin ./dmrmanuse_ap=2# 执行还原RMAN>restore database'/data/apps/dmdbms/data/DAMENG/dm.ini'from backupset'/data/apps/dmdbms/bakfull';RMAN>recover database'/data/apps/dmdbms/data/DAMENG/dm.ini'from backupset'/data/apps/dmdbms/bakfull';RMAN>recover database'/data/apps/dmdbms/data/DAMENG/dm.ini'update db_magic;RMAN>exit;

5.3 修改dm.ini参数

主库 (/data/apps/dmdbms/data/DAMENG/dm.ini):
INSTANCE_NAME = dw1 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 RLOG_APPEND_LOGIC = 1
备库 (/data/apps/dmdbms/data/DAMENG/dm.ini):
INSTANCE_NAME = dw2 MAL_INI = 1 ARCH_INI = 1 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 RLOG_APPEND_LOGIC = 1

5.4 配置归档文件 dmarch.ini

主库:
vi/data/apps/dmdbms/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = dw2 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/apps/dmdbms/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400
备库:
vi/data/apps/dmdbms/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME ARCH_DEST = dw1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/apps/dmdbms/arch ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 102400

5.5 配置MAL系统 dmmal.ini

主备库内容一致

vi/data/apps/dmdbms/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 15 [MAL_INST1] MAL_INST_NAME = dw1 MAL_HOST = 10.18.18.16 MAL_PORT = 7336 MAL_INST_HOST = 10.18.18.16 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536 [MAL_INST2] MAL_INST_NAME = dw2 MAL_HOST = 10.18.18.17 MAL_PORT = 7336 MAL_INST_HOST = 10.18.18.17 MAL_INST_PORT = 5236 MAL_DW_PORT = 7436 MAL_INST_DW_PORT = 7536

5.6 配置守护进程 dmwatcher.ini

主备库内容一致

vi/data/apps/dmdbms/data/DAMENG/dmwatcher.ini
[GRP_DW] DW_TYPE = GLOBAL DW_MODE = MANUAL # MANUAL手动切换,AUTO自动切换 DW_ERROR_TIME = 30 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 20 INST_OGUID = 453331 INST_INI = /data/apps/dmdbms/data/DAMENG/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = /data/apps/dmdbms/bin/DmServiceDW1 start MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 15

5.7 以mount状态启动数据库

cd/data/apps/dmdbms/bin# 主备库分别执行./dmserver /data/apps/dmdbms/data/DAMENG/dm.inimount

5.8 设置OGUID和数据库模式

新开终端连接数据库(主备库分别执行)

cd/data/apps/dmdbms/bin ./disql SYSDBA/XWcloud139
-- 允许手动修改SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',1);-- 设置OGUIDsp_set_oguid(453331);-- 主库执行:ALTERDATABASEPRIMARY;-- 备库执行:ALTERDATABASESTANDBY;-- 禁止手动修改SP_SET_PARA_VALUE(1,'ALTER_MODE_STATUS',0);-- 退出exit;

5.9 注册并启动服务

主备库分别执行(root用户)

cd/data/apps/dmdbms/script/root# 注册守护进程服务./dm_service_installer.sh-tdmwatcher-pDW1-watcher_ini/data/apps/dmdbms/data/DAMENG/dmwatcher.ini# 注册数据库实例服务./dm_service_installer.sh-tdmserver-dm_ini/data/apps/dmdbms/data/DAMENG/dm.ini-pDW1# 启动服务systemctl start DmServiceDW1 systemctl start DmWatcherServiceDW1# 设置开机自启systemctlenableDmServiceDW1 systemctlenableDmWatcherServiceDW1

5.10 配置并启动监视器

在主库服务器上配置

vi/data/apps/dmdbms/data/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 0 MON_LOG_PATH = /data/apps/dmdbms/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 200 MON_LOG_SPACE_LIMIT = 1024 [GRP_DW] MON_INST_OGUID = 453331 MON_DW_IP = 10.18.18.16:7436 MON_DW_IP = 10.18.18.17:7436

启动监视器

cd/data/apps/dmdbms/bin ./dmmonitor /data/apps/dmdbms/data/DAMENG/dmmonitor.ini

常用监视器命令

  • show- 查看集群状态
  • login- 登录监视器
  • choose- 选择组
  • switchover- 手动切换主备

6. 验证集群状态

  1. 查看服务状态:
systemctl status DmServiceDW1 systemctl status DmWatcherServiceDW1
  1. 监视器中查看集群状态:
show
  1. 测试主备同步:
-- 主库创建测试表CREATETABLEtest(idint);INSERTINTOtestVALUES(1);COMMIT;-- 备库查询(切换为只读模式)SELECT*FROMtest;

7. 注意事项

  1. 所有配置文件修改后都需要重启相应服务
  2. OGUID主备库必须一致
  3. 备份还原时DMAP服务必须启动
  4. 主备切换后需要重新配置监视器连接
  5. 生产环境建议使用自动切换模式(DW_MODE=AUTO)
  6. 确保网络通畅,防火墙已关闭
  7. 所有节点时间需同步(建议配置NTP)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 14:29:14

【转型】低频量化周报(指数风险溢价比,配债完整数据集,可转债策略,上市公司礼品,交易总结)

低频量化周报&#xff08;2026-02-27&#xff09;指数风险溢价比小规模配债<5亿配债完整数据5 批文通过4 发哥通过3 交易所受理2 股东大会通过1 董事会预案可转债策略双低策略低溢价策略小盘低价格策略小盘低溢价策略溢价偏离策略上市公司实物礼品历史操作记录本周心得最后指…

作者头像 李华
网站建设 2026/9/10 13:34:15

集合算法-动态数组、哈希表、队列、栈

集合能大幅简化代码、提升效率&#xff0c;尤其是处理动态数据、快速查找、优先级处理等场景&#xff0c;在java中集合框架分为两大体系&#xff1a;单列集合&#xff1a;List、Set&#xff08;存储单个元素&#xff09;双列集合&#xff1a;Map&#xff08;存储键值对&#xf…

作者头像 李华
网站建设 2026/9/14 15:21:37

是时候给ABAP SELECT * 平平反了

小甲&#xff1a;老师救命&#xff01;我又被代码评审的大佬喷了&#xff01;说我用SELECT * 是纯纯的新手行为&#xff0c;是性能毒瘤&#xff0c;必须把所有字段都写出来&#xff01;可我偷偷测了一下&#xff0c;性能好像没啥区别啊&#xff1f;上次说不让我用子查询&#x…

作者头像 李华
网站建设 2026/9/10 18:54:30

RexUniNLU环境配置避坑指南:让部署不再困难

RexUniNLU环境配置避坑指南&#xff1a;让部署不再困难 基于实际踩坑经验总结的完整解决方案&#xff0c;帮你快速搭建可用的RexUniNLU环境 1. 环境准备&#xff1a;避开依赖冲突陷阱 在开始部署RexUniNLU之前&#xff0c;最重要的一步是创建一个干净的Python环境。很多部署失…

作者头像 李华
网站建设 2026/9/10 20:57:32

用 AI 写的串口工具

大家好&#xff0c;我之前自己用 QT 写了一个串口调试助手&#xff0c;因为工作时间比较忙&#xff0c;一直没有更新&#xff0c;但是最近AI 出现后&#xff0c;写纯应用代码变得简单很多&#xff0c;所以直接更新了一把。项目地址&#xff1a;https://gitee.com/weiqifa/qtSer…

作者头像 李华