达梦守护搭建流程
搭建达梦守护数据库
| 节点 | 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主备库启动守护进程
- 主库上的启动守护进程:
[dmdba@dmdwnode1 ~]$ dmwatcher /dm8/data/DMDW/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
- 备库上的启动守护进程:
[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. 启动监视器