在实际应用中,我们有时会遇到需要将主备集群改为单机的情况,以下就针对这一情景进行介绍。
将达梦(DM)数据库从主备架构改为单机架构,需依次完成关闭监视器与数据库服务、修改配置文件、删除集群相关自启服务、调整数据库状态与模式等操作,以下是详细步骤和操作命令:
确认数据库状态
备份配置文件
备份主库和备库的配置文件,包括dm.ini、dmarch.ini、dmwatcher.ini、dmmal.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
关闭监视器
根据dmmonitor.ini中的MON_DW_CONFIRM参数(0为普通监视器,1为确认监视器),停止监视器服务。
示例命令:
DmMonitorService stop
关闭数据库服务和守护进程
主库
DmWatcherServiceDB1 stop # 停止主库守护进程
DmServiceDB1 stop # 停止主库数据库服务
备库
DmWatcherServiceDB2 stop # 停止备库守护进程
DmServiceDB2 stop # 停止备库数据库服务
查看本机注册过的相关服务与运行中的进程
systemctl list-unit-files | grep Dm ps -ef | grep dmdba
关闭主备集群开机自启
主库
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
删除监视器服务(如有)
systemctl disable DmMonitorServiceconfirm.service
rm -f /usr/lib/systemd/system/DmMonitorServiceconfirm.service
rm -rf /home/dmdba/dmdbms/bin/DmMonitorServiceconfirm
使用卸载脚本删除服务(可选)
达梦提供了卸载服务的脚本dm_service_uninstaller.sh,可用于卸载DmServiceXXX服务。
示例命令:
cd /home/dmdba/dmdbms/script/root/
./dm_service_uninstaller.sh -n DmServiceDB1
./dm_service_uninstaller.sh -n DmServiceDB2
修改dm.ini
编辑dm.ini文件,修改以下参数:
MAL_INI = 0 # 关闭MAL通信
ARCH_INI = 0 # 关闭归档(若需保留本地归档,可设为1)
ALTER_MODE_STATUS = 1 # 允许手动修改模式
示例命令:
vi /dmdata/data/DMDBS/dm.ini
修改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
修改dmwatcher.ini
编辑dmwatcher.ini文件,修改以下参数:
DW_TYPE = LOCAL # 守护进程类型设置为本地守护
DW_MODE = MANUAL # 设置为手动模式,避免自动进行主备切换
示例命令:
vi /dmdata/data/DMDBS/dmwatcher.ini
使用disql登录数据库
示例命令(以主库为例)
disql SYSDBA/SYSDBA@localhost:5236
修改数据库状态与模式
在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); -- 恢复默认模式修改权限
重启数据库服务
示例命令(以主库为例):
cd /home/dmdba/dmdbms/bin
./DmServiceDB1 restart
使用disql登录数据库
示例命令:
disql SYSDBA/SYSDBA@localhost:5236
查询数据库状态
在disql中执行以下命令:
SELECT * FROM V$INSTANCE;
若返回结果中STATUS为OPEN,MODE为NORMAL,则表示数据库已成功转换为单机模式。
文章
阅读量
获赞
