DM8主备集群搭建

1.1、守护进程
守护进程(dmwatcher)是 DM 数据守护系统不可或缺的核心部件,是数据库实例和监视器之间信息流转的桥梁。数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;数据库实例与监视器之间没有直接的消息交互;守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Open force 等),并在必要时通知数据库实例执行相应的操作

1.2、监视器
监视器(dmmonitor)是基于监视器接口实现的一个命令行工具,是 DM 数据守护系统的重要组成部分。
通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态、以及主备库数据同步情况等信息。同时,监视器(dmmonitor)还提供了一系列命令来管理数据守护系统。

1.3、MAL 系统
MAL 系统是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。

一、环境准备

192.168.82.205  主机 

192.168.82.206  备机

192.168.82.207  监视器

端口规划:

PORT_NUM、MAL_INST_DW_PORT、MAL_DW_PORT是后续配置用到的几个主要参数

服务器类型 数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_DW_PORT
主机 DM01 DMSVR01 5236 45101 65101
备机 DM01 DMSVR02 5236 45121 65121

新建dmdba用户:

su - root

groupadd dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

id dmdba

passwd dmdba

 

主机与备机数据库与实例安装:

拷贝和挂载iso安装文件  略过  挂载到mnt文件夹下

安装:

/mnt/dm/DMInstall.bin -i

主机与备机分别注册实例:(主机备机DN_NAME一致)

./dminit PATH=/dm8/data DB_NAME=DM01 INSTANCE_NAME=DMSVR01 PORT_NUM=5236 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=500 CASE_SENSITIVE=1 SYSDBA_PWD=DM01SYSDBA SYSAUDITOR_PWD=DM01SYSDBA
./dminit PATH=/dm8/data DB_NAME=DM01 INSTANCE_NAME=DMSVR02 PORT_NUM=5236 PAGE_SIZE=16 EXTENT_SIZE=32 LOG_SIZE=500 CASE_SENSITIVE=1 SYSDBA_PWD=DM01SYSDBA SYSAUDITOR_PWD=DM01SYSDBA

以上使用dmdba用户运行

二、配置主机

配置dm.ini

到安装目录下/data/DM01目录下打开dm.ini

 

 

 确保实例名和端口号正确,并修改MAL_INI=1 ; ARCH_INI=1

INSTANCE_NAME = DMSVR01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON
192.168.82.205
= 64

以下文件同样都在该目录下新建

新建dmmal.ini

配置上端口规划中规划的各端口参数:

PORT_NUM、MAL_INST_DW_PORT、MAL_DW_PORT

[MAL_INST1]中填写主机的、
[MAL_INST2]中填写备机的
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = DMSVR01
MAL_HOST = 192.168.82.205
MAL_PORT = 55101
MAL_INST_HOST = 192.168.82.205
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101

[MAL_INST2]
MAL_INST_NAME = DMSVR02
MAL_HOST = 192.168.82.206
MAL_PORT = 55121
MAL_INST_HOST = 192.168.82.206
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121

新建dmarch.ini

主机中ARCH_DEST填写备机的实例名,同理下面备机配置中填写主机实例名

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSVR02

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/DM01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

新建dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DM01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0 

三、配置备机

配置dm.ini

INSTANCE_NAME = DMSVR02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

新建dmmal.ini

与主机完全一致,可以直接从主机通过scp命令将整个ini文件复制到备机即可

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5

[MAL_INST1]
MAL_INST_NAME = DMSVR01
MAL_HOST = 192.168.82.205
MAL_PORT = 55101
MAL_INST_HOST = 192.168.82.205
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101

[MAL_INST2]
MAL_INST_NAME = DMSVR02
MAL_HOST = 192.168.82.206
MAL_PORT = 55121
MAL_INST_HOST = 192.168.82.206
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121

新建dmarch.ini

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSVR01

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/DM01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

新建dmwatcher.ini

[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dm8/data/DM01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0 

四、监视机配置

监视机安装数据库即可,可以不用注册实例

/dm8/data/DM01

新建dmmonitor.ini

MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0

[GRP1]
MON_INST_OGUID = 453331

##dmmal.ini####MAL_HOST:MAL_DW_PORT###################
MON_DW_IP = 192.168.82.205:65101
MON_DW_IP = 192.168.82.206:65121

五、备份主机数据库

先使用root用户关停dm服务再进行备份

./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DM01/dm.ini' FULL TO fullbak01 BACKUPSET '/dm8/backup/fullbak01'"

然后将备份好的fullbak01文件拷贝到备机,

完成后先不要启动dm服务,后续需要以mount方式启动,否则无法完成集群

在备机还原数据库

./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup/fullbak01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup/fullbak01'"
./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DM01/dm.ini' UPDATE DB_MAGIC"

同上,完成后先不要启动dm服务

主机与备机分别以mount方式启动数据库

dmserver /dm8/data/DM01/dm.ini mount

 一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;

并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。

数据守护配置结束后,守护进程会自动Open数据库。

打开disql进行参数配置

 

SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL> SP_SET_OGUID(453331);
SQL> ALTER DATABASE PRIMARY;
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

主机与备机都分别运行以上的命令

六、启动守护进程

在主机、备机分别启动watcher:

su - dmdba
/dm8/bin/dmwatcher /dm8/data/DM01/dmwatcher.ini

这里虽然启动,但是发现报错:dmwatcher.ini中配置的oguid与本机的oguid不一致

 

 

 

 

 

 原因是先在disql中进行了参数的配置(SP_SET_OGUID(453331);)后,才还原的数据库,所以再重新执行一次SP_SET_OGUID(453331);

再次运行,成功启动:

 

 

 

启动监视器

在监视机中启动监视器

dmmonitor /dm8/dmmonitor.ini

 

posted @ 2022-09-07 17:04  陈鹏昱Chen  阅读(167)  评论(0编辑  收藏  举报