注册
主备搭建最新版(2个数据库服务+2个守护服务+1个监视服务)
专栏/技术分享/ 文章详情 /

主备搭建最新版(2个数据库服务+2个守护服务+1个监视服务)

hello 2026/09/23 200 0 0
摘要

1、主机准备:
1.1准备三台机器:主库:192.168.122.191 备库:192.168.122.192 监视器:192.168.122.193
如果ip不一样,请修改,并对应修改后续涉及的对应ip
安装麒麟v10操作系统(本文档测试时使用的操作系统)
1.2、请注意:先关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
1.3、配置文件:dm.ini (主备INSTANCE_NAME不一样) dmmal.ini (主备一样)dmarch.ini(主备ARCH_DEST不一样) dmwatcher.ini(主备一样) dmmonitor.ini(监视器服务器(第三台机器才需要该文件))

2、# 准备配置文件:
请注意:如果ip不一样请自行替换。如果MAL_PORT、MAL_INST_PORT 、MAL_DW_PORT、MAL_INST_DW_PORT四个端口号不一样请自行对应替换。


dm.ini (后续将对主库的/dm8/dmdbms/data/DAMENG/dm.ini中的文件修改的参数)
INSTANCE_NAME = DMSERVER01 #实例名:主库DMSERVER01,备库:DMSERVER02
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2


dmmal.ini (新增配置文件(主备一样)。MAL 是 “达梦自适应通信系统”(Dameng Adaptive Communication system) 的缩写。一套专门为达梦设计的 “内部高速信息通道”。)
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DMSERVER01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.122.191 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口
#MAL_INST_HOST = 192.168.122.191 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.122.192
MAL_PORT = 61141
#MAL_INST_HOST = 192.168.122.192
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141 #与dmmonitor.ini中的参数MON_DW_IP的端口一致
MAL_INST_DW_PORT = 33141


dmarch.ini(新增配置文件,主备需要修改ARCH_DEST参数值)

#ARCH_WAIT_APPLY = 1 # 1=事务一致模式,0=高性能模式(根据需要设置)

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #REALTIME实时归档类型 TIMELY即时归档
ARCH_DEST = DMSERVER02 #主库实时归档目标实例名,主库DMSERVER01,备库:DMSERVER02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/dmdbms/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位 Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 500000 #单位 Mb,0 表示无限制,范围 1024~4294967294M


dmwatcher.ini(新增配置文件。(主备一样))
备注:#DW_MODE = AUTO #并非仅修改此参数即可。它必须同时配合一个一直运行的“确认监视器”(dmmonitor.ini 中设置 MON_DW_CONFIRM = 1)才能生效。
这个监视器通常部署在独立的第三台机器上,负责在故障时做出切换决策。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #MANUAL|手工切换, AUTO|自动切换模式。 AUTO自动切换模式必须部署一个确认监视器
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 888888 #守护系统唯一 OGUID 值
INST_INI = /dm8/dmdbms/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭


dmmonitor.ini(新增配置文件,监视器服务器(第三台机器才需要该文件)
MON_DW_CONFIRM = 1 #0|普通监视器 ,1|确认监视器(触发自动切换),需要配合MON_TAKEOVER_SHUTDOWN(可以有立项0个监视器,但是只能有一个确认监视器)
MON_LOG_PATH = /dm8/dmdbms/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
MON_TAKEOVER_SHUTDOWN =5 #(超时阈值,需>0)
[GRP1]
MON_INST_OGUID = 888888 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 192.168.122.191:52141
MON_DW_IP = 192.168.122.192:52141

3、达梦数据库软件、安装及实例配置
3.1、准备达梦v8软件
3.2、在各节点服务器上安装达梦数据库软件,安装路径为/dm8。请注意不配置数据库实例
4、主库:在主库上配置数据库实例
#请注意:路径为/dm8/dmdbms/data
[dmdba@localhost ~]
/dm8/dmdbms/bin/dminit path=/dm8/dmdbms/data sysdba_pwd=Dameng123 sysauditor_pwd=Dameng123 db_name=DAMENG instance_name=DMSERVER01 charset=1 port_num=5236 page_size=32 extent_size=32

或:
如果使用control:
dminit.ini:
[node_instance]
db_name = DAMENG
instance_name = DMSERVER01
#请注意:路径为/dm8/dmdbms/data
system_path = /dm8/dmdbms/data
page_size=32
extent_size= 32
charset = 1
sysdba_pwd=Dameng123
sysauditor_pwd=Dameng123
auto_overwrite = 1
port_num = 5236

[dmdba@localhost ~]
/dm8/dmdbms/bin/dminit control=/dm8/dminit.ini

5、主库:第一次启动服务器,并检查是否运行正常
[dmdba@localhost ~]
/dm8/dmdbms/bin/dmserver /dm8/dmdbms/data/DAMENG/dm.ini

#系统运行正常,检查是否出现文字:SYSTEM IS READY.
#通过disql 登录是否正常。
#如果正常则ctrl+c退出db服务器实例

6、主库:修改主库/dm8/dmdbms/data/DAMENG/dm.ini
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2

7、主库:拷贝3个ini配置文件到主库/dm8/dmdbms/data/DAMENG下
/dm8/dmdbms/data/DAMENG/dmarch.ini
/dm8/dmdbms/data/DAMENG/dmmal.ini
/dm8/dmdbms/data/DAMENG/dmwatcher.ini

8、主库:dmrman做离线备份:
RMAN> backup database ‘/dm8/dmdbms/data/DAMENG/dm.ini’ backupset ‘/dm8/backup/FULLDB/’;
或:
RMAN> backup database ‘/dm8/dmdbms/data/DAMENG/dm.ini’ full to BACKUPFULL backupset ‘/dm8/backup/FULLDB/’;
或:
dmrman CTLSTMT=“BACKUP DATABASE ‘/dm8/dmdbms/data/DAMENG/dm.ini’ FULL TO BACKUP_FILE1 BACKUPSET ‘/dm8/backup/BACKUP_FILE_01’”

9、主库:主库启动到mount状态
[dmdba@localhost bin]$
/dm8/dmdbms/bin/dmserver /dm8/dmdbms/data/DAMENG/dm.ini mount
10、主库:使用disql登录修改参数,主库设置OGUID、设置为主库
#请注意:如果端口号不是默认5236则需要加上端口号
[dmdba@localhost 桌面]$ disql sysdba/Dameng123@localhost
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(888888);
SQL> alter database primary;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

11、主库:主库验证状态
SQL> select mode,oguidfromv,oguid from vinstance;
#ctrl+c退出db服务器实例

12、主库:注册并启用守护服务(需要使用root账号,否则无法配置为自动启动)
#切换root账号
[root@localhost ~]
#数据库服务实例
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -auto true -dm_ini /dm8/dmdbms/data/DAMENG/dm.ini
#启动服务
systemctl start DmServiceDMSERVER
#守护服务
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DMSERVER -auto true -watcher_ini /dm8/dmdbms/data/DAMENG/dmwatcher.ini
#启动服务
systemctl start DmWatcherServiceDMSERVER
#备注,如果有必要先使dmdba账号利用下面命令测试守护ini文件是否正确
/dm8/dmdbms/bin/dmwatcher /dm8/dmdbms/data/DAMENG/dmwatcher.ini

13、备库:将主库离线备份拷贝到备库并还原和恢复:
scp -r /dm8/backup/* root@192.168.122.192:/dm8/backup/
请注意修改权限:cd /dm8/backup;chown -R dmdba.dmdba backup
#请注意:restore的时候需要到具体的路径,包含实例名称
RMAN> restore database to ‘/dm8/dmdbms/data/DAMENG’ overwrite from backupset ‘/dm8/backup/FULLDB’;
RMAN> recover database ‘/dm8/dmdbms/data/DAMENG/dm.ini’ from backupset ‘/dm8/backup/FULLDB’;
RMAN> recover database ‘/dm8/dmdbms/data/DAMENG/dm.ini’ update db_magic;

14、备库:拷贝3个ini配置文件到备库/dm8/dmdbms/data/DAMENG下
/dm8/dmdbms/data/DAMENG/dmarch.ini
/dm8/dmdbms/data/DAMENG/dmmal.ini
/dm8/dmdbms/data/DAMENG/dmwatcher.ini

15、备库:修改备库/dm8/dmdbms/data/DAMENG/dm.ini
INSTANCE_NAME = DMSERVER02
#同时检查下面参数是否正确,通常不需要修改
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_SATUS = 0
ENABLE_OFFLINE_TS = 2

16、备库:修改备库/dm8/dmdbms/data/DAMENG/dmarch.ini
#确定REALTIME的归档目标修改为正确
[ARCHIVE_REALTIME]
ARCH_DEST = DMSERVER01 #实时归档目标实例名

17、备库:启动备库到mount状态
[dmdba@localhost bin]$
/dm8/dmdbms/bin/dmserver /dm8/dmdbms/data/DAMENG/dm.ini mount

18、备库:使用disql登录修改参数,主库设置OGUID、设置为主库
#请注意:如果端口号不是默认5236则需要加上端口号
[dmdba@localhost 桌面]$ disql sysdba/Dameng123@localhost
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 1);
SQL> sp_set_oguid(888888);
SQL> alter database primary;
SQL>SP_SET_PARA_VALUE(1, ‘ALTER_MODE_STATUS’, 0);

19、备库:主库验证状态
SQL> select mode,oguidfromv,oguid from vinstance;
#ctrl+c退出db服务器实例

20、备库:注册并启用守护服务(需要使用root账号,否则无法配置为自动启动)
#切换root账号
[root@localhost ~]
#数据库服务实例
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DMSERVER -auto true -dm_ini /dm8/dmdbms/data/DAMENG/dm.ini
#启动服务
systemctl start DmServiceDMSERVER
#守护服务
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmwatcher -p DMSERVER -auto true -watcher_ini /dm8/dmdbms/data/DAMENG/dmwatcher.ini
#启动服务
systemctl start DmWatcherServiceDMSERVER
#备注,如果有必要先使dmdba账号利用下面命令测试守护ini文件是否正确
/dm8/dmdbms/bin/dmwatcher /dm8/dmdbms/data/DAMENG/dmwatcher.ini

21、监视器:拷贝dmmonitor.ini文件到监视器服务器:/dm8/dmdbms/data/DAMENG/dmmonitor.ini

22、监视器:启动监视服务
[dmdba@localhost bin]/dm8/dmdbms/bin/dmmonitor /dm8/dmdbms/data/DAMENG/dmmonitor.ini
启动后,可以输入show命令查看主备状态,如果能看到主备实例则正常
#如果有必要输入命令进行切换(需要使用login进行登录):switchover
#测试没有问题,ctrl+c退出监视服务

23、监视器:注册监视器服务(需要使用root账号)
#切换root账号
[root@localhost ~]
#注册服务
/dm8/dmdbms/script/root/dm_service_installer.sh -t dmmonitor -p DMSERVER -auto true -monitor_ini /dm8/dmdbms/data/DAMENG/dmmonitor.ini
#启动服务
systemctl start DmMonitorServiceDMSERVER

24、结束

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服