注册
达梦数据库主备集群改为单机
专栏/技术分享/ 文章详情 /

达梦数据库主备集群改为单机

好好先生 2026/01/09 206 1 0
摘要

达梦数据库主备集群改为单机

在实际应用中,我们有时会遇到需要将主备集群改为单机的情况,以下就针对这一情景进行介绍。

将达梦(DM)数据库从主备架构改为单机架构,需依次完成关闭监视器与数据库服务、修改配置文件、删除集群相关自启服务、调整数据库状态与模式等操作,以下是详细步骤和操作命令:

一、操作前准备

  1. 确认数据库状态

    • 登录监视器,确认主备数据库状态正常,无异常日志。
    • 检查数据库服务日志和守护进程日志,确保无错误信息。
  2. 备份配置文件

    • 备份主库和备库的配置文件,包括dm.inidmarch.inidmwatcher.inidmmal.ini(如存在)。

    • 示例命令(以主库为例):

      cp /dmdata/dbdata/DAMENG/dm.ini /dmdata/dbdata/DAMENG/dm_old.ini cp /dmdata/dbdata/DAMENG/dmarch.ini /dmdata/dbdata/DAMENG/dmarch_old.ini cp /dmdata/dbdata/DAMENG/dmwatcher.ini /dmdata/dbdata/DAMENG/dmwatcher_old.ini cp /dmdata/dbdata/DAMENG/dmmal.ini /dmdata/dbdata/DAMENG/dmmal_old.ini

二、关闭数据库服务与监视器

  1. 关闭监视器

    • 根据dmmonitor.ini中的MON_DW_CONFIRM参数(0为普通监视器,1为确认监视器),停止监视器服务。

    • 示例命令:

      DmMonitorService stop
  2. 关闭数据库服务和守护进程

    • 主库

      DmWatcherServiceDB1 stop # 停止主库守护进程 DmServiceDB1 stop # 停止主库数据库服务
    • 备库

      DmWatcherServiceDB2 stop # 停止备库守护进程 DmServiceDB2 stop # 停止备库数据库服务

三、删除集群相关自启服务

  1. 查看本机注册过的相关服务与运行中的进程

    systemctl list-unit-files | grep Dm ps -ef | grep dmdba
  2. 关闭主备集群开机自启

    • 主库

      systemctl disable DmWatcherServiceDB1.service rm -f /usr/lib/systemd/system/DmWatcherServiceDB1.service rm -rf /home/dmdba/dmdbms/bin/DmWatcherServiceDB1
    • 备库

      systemctl disable DmWatcherServiceDB2.service rm -f /usr/lib/systemd/system/DmWatcherServiceDB2.service rm -rf /home/dmdba/dmdbms/bin/DmWatcherServiceDB2
  3. 删除监视器服务(如有)

    systemctl disable DmMonitorServiceconfirm.service rm -f /usr/lib/systemd/system/DmMonitorServiceconfirm.service rm -rf /home/dmdba/dmdbms/bin/DmMonitorServiceconfirm
  4. 使用卸载脚本删除服务(可选)

    • 达梦提供了卸载服务的脚本dm_service_uninstaller.sh,可用于卸载DmServiceXXX服务。

    • 示例命令:

      cd /home/dmdba/dmdbms/script/root/ ./dm_service_uninstaller.sh -n DmServiceDB1 ./dm_service_uninstaller.sh -n DmServiceDB2

四、修改配置文件

  1. 修改dm.ini

    • 编辑dm.ini文件,修改以下参数:

      MAL_INI = 0 # 关闭MAL通信 ARCH_INI = 0 # 关闭归档(若需保留本地归档,可设为1ALTER_MODE_STATUS = 1 # 允许手动修改模式
    • 示例命令:

      vi /dmdata/data/DMDBS/dm.ini
  2. 修改dmarch.ini

    • 编辑dmarch.ini文件,注释或删除除本地归档([ARCHIVE_LOCAL1])外的所有配置项。

    • 示例配置:

      [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /home/dmdba/dmdbms/arch # 本地归档文件存放路径 ARCH_FILE_SIZE = 128 # 本地单个归档文件最大值(单位:MB) ARCH_SPACE_LIMIT = 0 # 归档空间限制(单位:MB),0表示无限制
    • 示例命令:

      vi /dmdata/data/DMDBS/dmarch.ini
  3. 修改dmwatcher.ini

    • 编辑dmwatcher.ini文件,修改以下参数:

      DW_TYPE = LOCAL # 守护进程类型设置为本地守护 DW_MODE = MANUAL # 设置为手动模式,避免自动进行主备切换
    • 示例命令:

      vi /dmdata/data/DMDBS/dmwatcher.ini

五、调整数据库状态与模式

  1. 使用disql登录数据库

    • 示例命令(以主库为例)

      disql SYSDBA/SYSDBA@localhost:5236
  2. 修改数据库状态与模式

    • 在disql中执行以下命令:

      SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); -- 允许手动修改模式 ALTER DATABASE MOUNT; -- 修改数据库为MOUNT状态 ALTER DATABASE NORMAL; -- 修改数据库为NORMAL状态 ALTER DATABASE OPEN; -- 修改数据库为OPEN状态 SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); -- 恢复默认模式修改权限

六、重启数据库服务

  1. 重启数据库服务

    • 示例命令(以主库为例):

      cd /home/dmdba/dmdbms/bin ./DmServiceDB1 restart

七、验证数据库状态

  1. 使用disql登录数据库

    • 示例命令:

      disql SYSDBA/SYSDBA@localhost:5236
  2. 查询数据库状态

    • 在disql中执行以下命令:

      SELECT * FROM V$INSTANCE;
    • 若返回结果中STATUSOPENMODENORMAL,则表示数据库已成功转换为单机模式。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服