搭建达梦守护数据库

节点 IP地址 主机名
主节点 192.168.1.152 dmdwnode1
备节点 192.168.1.153 dmdwnode2
监视器 192.168.1.151 dmdwmonitor
数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT
DMDW GRP1_RT_01 5236 45121 192.168.1.152 55121 65121
DMDW GRP1_RT_02 5236 45131 192.168.1.153 55131 65131

一、搭建准备

1.1 主备节点关闭数据库服务

[dmdba@dmdwnode1 ~]$ DmServiceGRP1_RT_01 stop
Stopping DmServiceGRP1_RT_01:                              [ OK ]

[dmdba@dmdwnode2 ~]$ DmServiceGRP1_RT_02 stop
Stopping DmServiceGRP1_RT_02:                              [ OK ]

1.2 主备节点创建备份目录

[dmdba@dmdwnode1 ~]$ mkdir /dm8/backup
[dmdba@dmdwnode2 ~]$ mkdir /dm8/backup

1.3 主节点主库stop状态下使用dmrman备份

[dmdba@dmdwnode1 ~]$ dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DMDW/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'" 

1.4 数据库备份文件传输到备节点备份目录中

[dmdba@dmdwnode1 ~]$ cd /dm8/backup/BACKUP_FILE_01
#备份文件传输(scp)到备机(关机状态)进行恢复。
[dmdba@dmdwnode1 BACKUP_FILE_01]$ scp *.* 192.168.1.153:/dm8/backup/.

Authorized users only. All activities may be monitored and reported.
dmdba@192.168.1.153's password: 
BACKUP_FILE_01.bak                                                                                                     100% 7158KB  70.9MB/s   00:00    
BACKUP_FILE_01.meta                                                                                                    100%   81KB  32.1MB/s   00:00    

1.5 备节点备库恢复(restore/recover/update db_magic

[dmdba@dmdwnode2 ~]$ cd /dm8/backup/
[dmdba@dmdwnode2 backup]$ dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup'" 
[dmdba@dmdwnode2 backup]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup'" 
[dmdba@dmdwnode2 backup]$ dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DMDW/dm.ini' UPDATE DB_MAGIC"

二、主节点编辑配置文件

2.1 配置文件所在目录

#进入配置文件所在目录/dm8/data/DMDW
[dmdba@dmdwnode1 DMDW]$ cd /dm8/data/DMDW

2.2 编辑数据库参数配置文件dm.ini

[dmdba@dmdwnode1 DMDW]$ vi dm.ini
INSTANCE_NAME = GRP1_RT_01 
PORT_NUM = 5236 				#数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 			#接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 				#该参数为0是禁止手动修改数据库运行模式。
ENABLE_OFFLINE_TS = 2 				#不允许备库 OFFLINE 表空间
MAL_INI = 1					#打开 MAL 系统
ARCH_INI = 1					#打开归档配置		
RLOG_SEND_APPLY_MON = 64			#统计最近 64 次的日志重演信息

#确认参数值
[dmdba@dmdwnode1 DMDW]$ grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" dm.ini

2.3 编辑MAL配置文件dmmal.ini

注意其中的主备机的 MAL_HOST (MAL 节点地址), MAL_INST_HOST (实例的 IP 地址),MAL_INST_NAME (实例名), MAL_INST_PORT(实例端口)必须和实际情况相符,MAL_PORT, MAL_DW_PORT, MAL_INST_DW_PORT 不能被占用。

MAL_HOST (MAL节点地址/心跳地址)和MAL_INST_HOST (实例的 IP 地址/对外服务地址)可以相同

[dmdba@dmdwnode1 DMDW]$ vi dmmal.ini
MAL_CHECK_INTERVAL = 5				#MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5			#判定 MAL 链路断开的时间
[MAL_INST1] 
MAL_INST_NAME = GRP1_RT_01		#实例名,和 dm.ini 的 INSTANCE_NAME 一致
MAL_HOST = 192.168.1.152 		#MAL 系统监听 TCP 连接的 IP 地址	(心跳地址)
MAL_PORT = 55121 			#MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.152		#实例的对外服务 IP 地址
MAL_INST_PORT = 5236 			#实例对外服务端口,和 dm.ini 的 PORT_NUM 一致
MAL_DW_PORT = 65121			#实例对应的守护进程监听 TCP 连接的端口  
MAL_INST_DW_PORT = 45121 		#实例监听守护进程 TCP 连接的端口
[MAL_INST2] 
MAL_INST_NAME = GRP1_RT_02 
MAL_HOST = 192.168.1.153
MAL_PORT = 55131 
MAL_INST_HOST = 192.168.1.153
MAL_INST_PORT = 5236 
MAL_DW_PORT = 65131 
MAL_INST_DW_PORT = 45131 

2.4 编辑归档配置文件 dmarch. ini

#创建本地归档目录,注意文件中目录配置必须和实际情况相符。
[dmdba@dmdwnode1 DMDW]$ mkdir /dm8/arch
[dmdba@dmdwnode1 DMDW]$ vi dmarch.ini
[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL  				#本地归档类型
ARCH_DEST = /dm8/arch/  			#本地归档存放路径
ARCH_FILE_SIZE = 128  				#单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240  			#归档上限,单位 MB

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME  				#实时归档类型
ARCH_DEST = GRP1_RT_02  			#实时归档目标实例名

2.5 编辑守护配置文件 dmwatcher.ini

#设置 INST_OGUID 并牢记,确认 INST_INI 和 INST_STARTUP_CMD 的值与实际情况相符。
[dmdba@dmdwnode1 DMDW]$ vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL  			#全局守护类型
DW_MODE = AUTO  			#MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 10  			#远程守护进程故障认定时间
INST_ERROR_TIME = 10  			#本地实例故障认定时间
INST_RECOVER_TIME = 60  		#主库守护进程启动恢复的间隔时间
INST_OGUID = 453331  			#守护系统唯一 OGUID 值
INST_INI = /dm8/data/DMDW/dm.ini   	#dm.ini 文件路径
INST_AUTO_RESTART = 1  			#打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/dmdbms/bin/dmserver  	#命令行方式启动
RLOG_SEND_THRESHOLD = 0  		#指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0  		#指定备库重演日志的时间阈值,默认关闭

2.6 启动主库到 mount 状态

保留终端窗口

[dmdba@dmdwnode1 DMDW]$ dmserver /dm8/data/DMDW/dm.ini mount
.....
.....
SYSTEM IS READY.

2.7 切换至 primary 状态

主节点新开一个 ssh 终端,登录 disql 程序, 注意达梦服务处于普通配置状态即为 mount 状态。
设置 INST_OGUID,并设置数据库服务为主库模式 (primary)。未切换前,处于普通配置状态也就是 mount 状态

[dmdba@dmdwnode1 ~]$ disql sysdba/SYSDBA123

服务器[LOCALHOST:5236]:处于普通配置状态
--执行如下命令
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); -- 设置参数值为1是暂时允许手动修改数据库运行模式。
SQL>sp_set_oguid(453331); -- 设置OGUID为守护配置文件内 INST_OGUID 的值(453331)。
SQL>alter database primary;-- 将数据库模式切换到主库模式(primary)。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); --设置参数值为0是恢复禁止手动修改数据库运行模式。

推出disql,重新登录。注意数据库状态,处于主库配置状态。

[dmdba@dmdwnode1 ~]$ disql sysdba/SYSDBA123

服务器[LOCALHOST:5236]:处于主库配置状态

三、备节点修改配置文件

3.1 配置文件所在目录

#进入配置文件所在目录/dm8/data/DMDW
[dmdba@dmdwnode1 DMDW]$ cd /dm8/data/DMDW

3.2 编辑数据库参数配置文件dm.ini

[dmdba@dmdwnode1 DMDW]$ vi dm.ini
INSTANCE_NAME = GRP1_RT_02 
PORT_NUM = 5236 				#数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 			#接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 				#该参数为0是禁止手动修改数据库运行模式。
ENABLE_OFFLINE_TS = 2 				#不允许备库 OFFLINE 表空间
MAL_INI = 1					#打开 MAL 系统
ARCH_INI = 1					#打开归档配置		
RLOG_SEND_APPLY_MON = 64			#统计最近 64 次的日志重演信息


#确认参数值
grep -E "INSTANCE_NAME|PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|ARCH_INI|RLOG_SEND_APPLY_MON" dm.ini

3.3 编辑MAL配置文件dmmal.ini

复制主节点上dmmal.ini文件

[dmdba@dmdwnode2 DMDW]$ scp 192.168.1.152:/dm8/data/DMDW/dmmal.ini .

3.4 编辑归档配置文件 dmarch. ini

[ARCHIVE_LOCAL]
ARCH_TYPE = LOCAL                               #本地归档类型
ARCH_DEST = /dm8/arch/                          #本地归档存放路径
ARCH_FILE_SIZE = 128                            #单个归档大小,单位 MB
ARCH_SPACE_LIMIT = 10240                        #归档上限,单位 MB

[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME                            #实时归档类型
ARCH_DEST = GRP1_RT_01                          #实时归档目标实例名

3.5 编辑守护配置文件 dmwatcher.ini

复制主节点上dmmal.ini文件

[dmdba@dmdwnode2 DMDW]$ scp 192.168.1.152:/dm8/data/DMDW/dmwatcher.ini .

3.6 启动备库到 mount 状态

保留终端窗口

[dmdba@dmdwnode2 DMDW]$ dmserver /dm8/data/DMDW/dm.ini mount
.....
.....
SYSTEM IS READY.

3.7 切换至 standby 状态

主节点新开一个 ssh 终端,登录 disql 程序, 注意达梦服务处于普通配置状态即为 mount 状态。
设置 INST_OGUID,并设置数据库服务为主库模式 (standby)。未切换前,处于普通配置状态也就是 mount 状态

[dmdba@dmdwnode1 ~]$ disql sysdba/SYSDBA123

服务器[LOCALHOST:5236]:处于普通配置状态
--执行如下命令
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); -- 设置参数值为1是暂时允许手动修改数据库运行模式。
SQL>sp_set_oguid(453331); -- 设置OGUID为守护配置文件内 INST_OGUID 的值(453331)。
SQL> alter database standby;-- 将数据库模式切换到主库模式(primary)。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); --设置参数值为0是恢复禁止手动修改数据库运行模式。

推出disql,重新登录。注意数据库状态,处于备库配置状态。

[dmdba@dmdwnode1 ~]$ disql sysdba/SYSDBA123

服务器[LOCALHOST:5236]:处于备库配置状态

四、开启守护进程

4.1主备库启动守护进程

  1. 主库上的启动守护进程:
[dmdba@dmdwnode1 ~]$ dmwatcher /dm8/data/DMDW/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
  1. 备库上的启动守护进程:
[dmdba@dmdwnode2 ~]$ dmwatcher /dm8/data/DMDW/dmwatcher.ini 
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY

4.2主备库自动切换打开状态

主备库登录新的终端并进入 disql 程序,发现主备数据库服务都已经被守护进程启动,并处于打开状态。

[dmdba@dmdwnode1 ~]$ disql sysdba/SYSDBA123

终端显示:
服务器[LOCALHOST:5246]:处于主库打开状态

[dmdba@dmdwnode2 ~]$ disql sysdba/SYSDBA123

终端显示:
服务器[LOCALHOST:5246]:处于备库打开状态

注意:授权的key文件如果不支持集群,MAL_INST_DW_PORT进程无法启动,相关端口不能监听,主备库不会自动打开,任然处于配置状态

五、创建主备达梦守护进程服务添加(root 执行)

# 脚本目录
cd /dm8/dmdbms/script/root

# 主节点
[root@dmdwnode1 root]# ./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/data/DMDW/dmwatcher.ini

# 备节点
[root@dmdwnode1 root]# ./dm_service_installer.sh -t dmwatcher -p DMWATCHER -watcher_ini /dm8/data/DMDW/dmwatcher.ini

# 开机启动服务
[root@dmdwnode1 root]# systemctl enable DmWatcherServiceDMWATCHER.service

[root@dmdwnode2 root]# systemctl enable DmWatcherServiceDMWATCHER.service

六、监视器安装

在dmdwmonitor(192.168.1.151)节点上搭建monitor服务监控DMDW服务

6.1 创建编辑配置文件

确认模式配置文件dmmonitor. ini
MON_DW_CONFIRM = 1 #确认模式,数据库会自动switchover 
MON_LOG_PATH = /dm8/log  
MON_LOG_INTERVAL = 60 
MON_LOG_FILE_SIZE = 32 
MON_LOG_SPACE_LIMIT = 0 
[GRP1] 
MON_INST_OGUID = 453331  
MON_DW_IP = 192.168.1.152:65121 
MON_DW_IP = 192.168.1.153:65131
非确认模式dmmon.ini文件
MON_DW_CONFIRM = 0 #非确认模式,数据库不会自动switchover 需要手动执行
MON_LOG_PATH = /dm8/log  
MON_LOG_INTERVAL = 60 
MON_LOG_FILE_SIZE = 32 
MON_LOG_SPACE_LIMIT = 0 
[GRP1] 
MON_INST_OGUID = 453331  
MON_DW_IP = 192.168.1.152:65121 
MON_DW_IP = 192.168.1.153:65131

6.2 启动确认模式监视器

由于配置文件中 MON_DW_CONFIRM 值为 1,监控器处于确认模式打开。能自动接管切换工作。确认模式监控器只能启动一个进程

[dmdba@dmdwmonitor dm8]$ dmmonitor /dm8/dmmonitor.ini 
# 多开告警
[dmdba@dmdwmonitor ~]$ dmmonitor /dm8/dmmonitor.ini 
Exist multiple CONFIRM dmmonitor, can only startup one!

6.3 启动非确认模式监视器

由于配置文件中 MON_DW_CONFIRM 值为 0,监控器处于确认模式打开。不能自动接管切换工作。

[dmdba@dmdwmonitor dm8]$ dmmonitor path=/dm8/dmmon.ini 

6.4 创建监视器服务(root执行)

[root@dmdwmonitor ~]# cd /dm8/dmdbms/script/root/
[root@dmdwmonitor root]# ./dm_service_installer.sh -t dmmonitor -p DMMONTOR -monitor_ini /dm8/dmmonitor.ini 

[root@dmdwmonitor root]# systemctl start DmMonitorServiceDMMONTOR.service 
[root@dmdwmonitor root]# systemctl status DmMonitorServiceDMMONTOR.service

[root@dmdwmonitor root]# systemctl enable DmMonitorServiceDMMONTOR

七、实时主备集群手动重启顺序步骤:

1.关闭监视器
2. 关闭备库守护进程
3. 关闭主库守护进程
4. 关闭主库实例
5. 关闭备库实例
6. 启动主库实例(mount)
7. 启动备库实例(mount)
8. 启动主库守护进程(open)
9. 启动备库守护进程(open)
10. 启动监视器

文章作者: 糊糊的蛋糊
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 数据生活,生活数据
数据库 达梦
喜欢就支持一下吧