DM
数据守护是一种集成化的高可用、高性能的数据库解决方案,是数据库异地容灾的首选方案。通过部署达梦数据守护,可以在硬件故障、自然灾害等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以怀素回复数据库服务。旨在通过主备数据库的数据同步与故障自动切换,保障数据库服务的连续性和数据可靠性,减少因硬件故障、软件异常或人为操作导致的业务中断(Downtime
)。其核心目标是实现 “数据不丢失、服务不中断”,是国产数据库在高可用领域的典型技术方案。
主库(Primary
):承担主要业务读写请求,产生事务日志(Redo Log
),是数据变更的源头。
备库(Standby
): 同步主库的事务日志并重演(Replay
),保持与主库数据一致,主库故障时接管服务。
守护进程(DmWatcher
): 监控主备库状态(如是否在线、日志同步是否正常),协调故障切换,是核心控制组件。
监控工具(DmMonitor
) :可视化管理工具,用于监控主备库状态、日志同步进度、切换历史等,支持手动干预。
故障检测模块: 通过心跳检测(如 TCP 连接)判断主库是否存活,避免误判(需结合多维度检测)。
DM数据守护的核心是 同步日志+状态监控+故障切换 ,具体流程如下:
1.数据同步机制:
主库在处理业务事务时,会生成事务日志(Redo Log
)。这些日志通过TCP/IP网络实时或定时传输到备库;备库接受日志后,按顺序重演(Replay
)日志,确保与主库数据库完全一致。
归档方式可以分为6类:
实时归档(REALTIME
): 主库在Redo
日志写入redo-log
文件前,将Redo
日志发送到备库。
本地归档(LOCAL
): 将Redo日志写入到本地归档日志文件的过程。
远程归档(REMOTE ARCHIVE
): 远程归档专门用在DMDSC环境中,将当前节点的远程归档目录配置为另一节点的本地归档目录。
即时归档(TIMELY
): 主库在Redo
日志(RLOG_PKG
)写入redo-log
文件后,将Redo
日志发送到备库。
异步归档(ASYNC
): 由主、备库上配置的定时器触发,通过MAL
系统将Redo
日志发送到异步备库。
同步归档(SYNC
): 在主库归档日志刷盘之后,通过MAL系统将Redo发送到备库。
同步粒度:基于事务日志的增量同步,仅传输变更数据,比全量数据复制更高效。
2.故障切换流程
当主库被确认故障后,守护进程会触发自动切换:
备库切换为主库角色,接管业务读写请求;
原主库恢复后自动转换为备库,重新同步新主库的业务;
客户端通过虚拟IP
(VIP
)或连接池配置,自动连接新主库,无需手动修改连接地址。
3.实时归档详解
本次搭建的守护集群为实时主备集群,所以在此先详细讲讲实时归档的原理。与本地归档写入保存在磁盘中的日志文件不同,实时归档(Realtime
)将主库产生的 Redo
日志通过 MAL
系统传递到备库,实时归档是实时主备和 MPP
主备的实现基础。实时归档只在主库生效,一个主库可以配置 1~8 个实时备库。
实时归档的执行流程是主库在Redo
日志写入联机日志文件前,将Redo
日志发送到备库,备库收到Redo
日志后标记KEEP_ROLG_PKG
,将原 KEEP_RLOG_PKG
加入日志重演任务系统,并马上响应主库,不需要等待 Redo 日志重演结束后再响应主库。主库收到备库的响应消息,确认备库已经收到 Redo
日志后,再将 Redo
日志写入联机日志文件中。
达梦数据守护提供多种解决方案,可以配置成实时主备、MPP
主备、DMDSC
主备或读写分离集群,满足用户关于系统可用性、数据安全性、性能等方面的综合需求,有效降低总体投入,获得超值的投资回报。
实时主备: 实时主备由一个主库以及一个或者多个配置了实时(Realtime
)归档的备库组成,其主要目的是保障数据库可用性,提高数据安全性。实时主备系统中,主库提供完整的数据库功能,备库提供只读服务。主库修改数据产生的Redo
日志,通过实时归档机制,在写入联机 Redo
日志文件之前发送到备库,实时备库通过重演 Redo
日志与主库保持数据同步。当主库出现故障时,备库在将所有Redo
日志重演结束后,就可以切换为主库对外提供数据库服务。
MPP主备: MPP
主备就是在 MPP
集群的基础上,为每一个 MPP
节点配置一套实时主备系统,这些实时主备系统一起构成了 MPP
主备系统。我们将一个 MPP
节点对应的主备系统称为一个数据守护组(Group
),MPP
主备系统中各个数据守护组保持相对独立,当某个 MPP
主节点出现故障时,在其对应的数据守护组内挑选一个备库切换为主库后,就可以确保整个 MPP
集群的正常使用。
DMDSC 主备: DMDSC
主备与单节点主备功能一致,DMDSC
主备支持 DMDSC
集群和单节点之间互为主备库,一般建议将 DMDSC
集群部署为主库,将单节点部署为备库。当DMDSC
集群为主库时,DMDSC
集群控制节点收集所有节点的 Redo
日志发送到备库,备库严格按照各节点修改数据页的先后顺序重演 Redo
日志保持数据同步;当 DMDSC
集群为备库时,主库将 Redo
日志发送至 DMDSC
集群控制节点,DMDSC
集群控制节点重演Redo
日志保持数据同步。
读写分离集群: 读写分离集群由一个主库以及一个或者多个配置了即时(Timely
)归档或实时(Realtime
)归档的备库组成,其主要目标是在保障数据库可用性基础上,实现读、写操作的自动分离,进一步提升数据库的业务支撑能力。读写分离集群通过配置事务一致模式保证主、备库数据一致性,并配合达梦数据库管理系统的各种接口(JDBC、DPI
等),将只读操作自动分流到备库,有效降低主库的负载,提升系统吞吐量。
实时主备:
本文档将搭建实时主备,所以这里详细讲解一下实时主备。
实时主备系统是由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可以及时检测并处理各种硬件故障、数据库实例异常,确保持续提供数据库服务。
实时归档是实时主备数据同步的基础,其流程如下图所示:
主库生成联机Redo
日志,当触发日志写文件操作后,日志线程先将RLOG_PKG
发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否Open
等),不合法则返回错误信息,合法则作为KEEP_ROLG_PKG
保留在内存中,原有KEEP_RLOG_PKG
的Redo
日志加入Apply
任务队列进行Redo
日志重演,并响应主库日志接收成功。当有多个备库时,主库需要收到所有备库的响应操作才继续后续操作。
接下来将通过命令行来搭建实时主备数据守护。
操作系统: 两台服务器,操作系统为Kylin10 SP1,一台作为主库,一台为备库
JDK: OpenJDK 1.8.0_272
数据库版本: DM8(dm8_20250507_FTarm2000_kylin10_sp1_64.iso)
,服务器端口号设置为1111(可以在初始化时在参数中设置)
搭建实时主备集群首先我们得先准备服务器,在服务器中确保各实例使用的DM服务器版本一致,同时应注意各实例的主机操作系统等设置保持一致。
注意事项: 在配置数据守护实时主备集群前,我们首先需要保证两个数据库的数据完全一致。所以我们必须先通过备份还原的方式同步各数据库的数据,主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。备库在备份还原前,需要先准备初始化一个新库。
如果是初始搭建环境,可以通过对主库脱机备份、对备机脱机还原的方式来准备数据。
如果主库处于运行状态,则可以对主库进行联机备份、对备机进行联机还原的方式来准备数据。
不管哪种方式进行备份还原,都需要先配置本地归档
我们首先配置dm.ini,打开ARCH_INI参数
ARCH_INI = 1 ##打开归档配置
随后配置dmarch.ini
,我们新建一个dmarch.ini
文件,将该文件放入到dm.ini
文件的相同位置。该文件中的内容为
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL ##本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch ##本地归档文件存放路径
ARCH_FILE_SIZE = 128 ##单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 1024 ##单位Mb,0表示无限制,范围1024~2147483647M
首先我们先将主库关闭对其进联机备份。通过以下命令即可实现联机备份。
./dmrman CTLSTMT="BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm/data/BACKUP_FILE_01'"
当成功备份后,将备份文件拷贝到备库服务器中,随后通过以下命令在备库执行脱机数据库还原和恢复。
还原恢复
./dmrman CTLSTMT="RESTORE DATABASE '/dm/data/DAMENG/dm.ini' FROM BACKUPSET '/dm/data/BACKUP_FILE_01'"
RECOVER DATABASE '/data/test6/dljDmTest/dmdbms/data/dljDmTest/dljDmTest/dm.ini' FROM BACKUPSET '/data/test6/dljDmTest/dmdbms/data/dljDmTest/dljDmTest/bak/BACKUP_FILE_01'
再还原恢复完成之后,进行数据库更新:
./dmrman CTLSTMT="RECOVER DATABASE '/dm/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
至此,数据的准备工作就完成了,接下来就开始配置实时主备。
之前已经主库服务器dm1
和备库服务器dm2
初始化好了数据库实例。
首先使用命令vim dm.ini
在主库的dm.ini
上修改参数如下:
##实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = TEST_RT_1 ##实例名
PORT_NUM = 1111 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
各参数详解:
INSTANCE_NAME: 数据库的唯一标识,一个集群内唯一。集群内的实例名不能冲突,冲突后主备集群无法识别不同节点。
PORT_NUM: 实例监听端口。
DW_INACTIVE_INTERVAL: 守护进程心跳超时时间(检测主备状态)。超时设置不合理会导致守护进程误判节点宕机,引发不必要的主备切换。
ALTER_MODE_STATUS: 禁止手工修改实例模式 / 状态 / OGUID。开启后可以防止误操作修改主备角色,导致集群分裂、数据不一致。
ENABLE_OFFLINE_TS: 禁止备库执行表空间离线操作。如果备库表空间被意外离线,破坏主备数据一致性。
MAL_INI: 启用 MAL 系统(主备通信的基础框架)。配置错误后会导致主备无法传输日志和状态信息,集群无法搭建。
ARCH_INI: 启用归档配置(主备同步依赖归档日志)。必须配置,如果不配置主库就不生成归档日志,备库就无法同步数据。
RLOG_SEND_APPLY_MON: 统计日志发送 / 应用的历史记录(辅助故障排查)。
接下来就该配置dmmal.ini
,配置MAL系统,各主备库的dmmal.ini
配置必须完全一致。
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME =TEST_RT_01 ##实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = *.*.*.* ##MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = *.*.*.* ##实例的对外服务IP地址
MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = TEST_RT_02
MAL_HOST = *.*.*.*
MAL_PORT = 61142
MAL_INST_HOST = *.*.*.*
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
各参数详解:
MAL_CHECK_INTERVAL: 每 5 秒检测 MAL 链路是否正常(心跳检测)。如设置过大会导致链路故障发现延迟,主备同步卡顿甚至中断。
MAL_CONN_FAIL_INTERVAL: 连续 5 次检测失败则判定链路断开。
以 [MAL_INST1]
(主库)和 [MAL_INST2]
(备库)为例:
MAL_INST_NAME: 关联 dm.ini
的 INSTANCE_NAME
,标识实例。如果与 dm.ini
不一致→MAL 无法识别实例,主备通信完全中断。
MAL_HOST: MAL 系统的通信 IP(主备实例间传输日志 / 状态)。ip如果设置错误,会导致主备无法建立 MAL 连接,日志同步彻底失败。
MAL_PORT: MAL 系统的通信端口。
MAL_INST_HOST: 实例对外服务的 IP(客户端 / 备库访问实例的 IP)。ip设置错误,会导致客户端连接不上实例,备库无法从主库获取日志。
MAL_INST_PORT: 实例对外服务端口(对应 dm.ini
的 PORT_NUM
)。
MAL_DW_PORT: 本地守护进程(Dmwatcher)的监听端口(实例←→守护进程通信)。端口设置错误会导致守护进程无法监控实例状态,主备切换机制失效。
MAL_INST_DW_PORT: 实例监听守护进程的端口(守护进程→实例发指令)。端口错误会导致守护进程无法控制实例(如切换主备),集群无法自动故障转移。
我们还需要修改 dmarch.ini
,来为实例配置本地归档和实时归档。在前面我们以及添加了本地归档,现在我们需要添加实时归档。除了本地归档外,其他归档配置中ARCH_DEST
表示实例是Primary
模式时,需要同步归档数据的目标实例名。由于当前主库时TEST_RT_1
,需要向备库TEST_RT_2
同步数据,因此实时归档的ARCH_DEST
应该设置为TEST_RT_2
。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST=TEST_RT_2 ##实时归档目标实例名
各参数详解:
ARCH_TYPE: 归档的类型,REALTIME表示实时归档。
ARCH_DEST: 归档的目标实例名,例如这里的备库为TEST_RT_2所以此处就是TEST_RT_2。
dmwatcher.ini
是守护进程的核心配置,控制主备切换、故障恢复、实例管理。参数错误会直接导致 集群无法自动容灾、实例启停异常、数据同步失控。
接下来我们就要配置守护进程。我们需要配置为全局守护类型,使用自动切换模式。
[GRP1]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
各参数详解:
DW_TYPE = GLOBAL: 全局守护模式。需要配置为GLOBAL,不然就会降级为本地守护,无法实现集群级主备切换。
DW_MODE = AUTO: 自动切换模式。故障时自动选择备库升级为主库
DW_ERROR_TIME: 远程守护进程故障判定时间。
INST_RECOVER_TIME: 主库故障后,守护进程尝试重启恢复的间隔。
INST_ERROR_TIME: 本地实例无响应的故障判定时间。
INST_OGUID: 守护系统的唯一标识,主备必须相同。如果主备的OGUID不统一,集群就无法识别,日志同步失败。
INST_INI: dm.ini
文件路径,守护进程定位实例。
INST_AUTO_RESTART: 实例故障时自动重启(1 = 开启),如果不开启此选项实例故障后手动重启,业务中断时间长。
INST_STARTUP_CMD: 实例启动命令,守护进程用此启动实例。
RLOG_SEND_THRESHOLD: 主库发日志到备库的时间阈值。如果不设置会导致日志同步延迟无法告警,数据一致性隐患。
RLOG_APPLY_THRESHOLD: 备库重演日志的时间阈值。
以Mount方式启动主库。
./dmserver /data/test6/dljDmTest/dmdbms/dmdbms/data/DAMENG/dm.ini mount
注意事项:
一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成Redo日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID。如果设置不同,可能会导致组件之间通信失败。使用命令。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//开启参数修改模式,允许修改数据库的关键参数
//参数解析:1:代表系统级,修改后立即生效,无需重启数据库 'ALTER_MODE_STATUS':参数名
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
//修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//此处将数据库模式修改为primary模式
SQL>ALTER DATABASE Primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
在备库服务器上通过vim dm.ini
配置dm.ini
文件,参数如下
实例名,建议使用“组名_守护环境_序号”的命名方式,总长度不能超过16
INSTANCE_NAME = TEST_RT_2 ##实例名
PORT_NUM = 1111 ##数据库实例监听端口
DW_INACTIVE_INTERVAL = 60 ##接收守护进程消息超时时间
ALTER_MODE_STATUS = 0 ##不允许手工方式修改实例模式/状态/OGUID
ENABLE_OFFLINE_TS = 2 ##不允许备库OFFLINE表空间
MAL_INI = 1 ##打开MAL系统
ARCH_INI = 1 ##打开归档配置
RLOG_SEND_APPLY_MON = 64 ##统计最近64次的日志发送信息
参数详解同配置主库。
备库的dmmal.ini
文件内容需要和主库的dmmal.ini
文件完全相同。
MAL_CHECK_INTERVAL = 5 ##MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 ##判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME =TEST_RT_1 ##实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = *.*.*.* ##MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 ##MAL系统监听TCP连接的端口
MAL_INST_HOST = *.*.*.* ##实例的对外服务IP地址
MAL_INST_PORT = 32141 ##实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 ##实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 ##实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME = TEST_RT_2
MAL_HOST = *.*.*.*
MAL_PORT = 61142
MAL_INST_HOST = *.*.*.*
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
配置详解同上主库配置。
修改备库的dmarch.ini
文件,配置其本地归档和实时归档。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME ##实时归档类型
ARCH_DEST=TEST_RT_02 ##实时归档目标实例名
配置详解同上主库配置。
修改 dmwatcher.ini 配置守护进程,配置为全局守护类型,使用自动切换模式。
[GRP1]
DW_TYPE = GLOBAL ##全局守护类型
DW_MODE = AUTO ##自动切换模式
DW_ERROR_TIME = 10 ##远程守护进程故障认定时间
INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 ##本地实例故障认定时间
INST_OGUID = 453331 ##守护系统唯一OGUID值
INST_INI = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径
INST_AUTO_RESTART = 1 ##打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动
RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭
配置详解同上主库配置。
以Mount方式启动备库
./dmserver /data/test6/dljDmTest/dmdbms/dmdbms/data/DAMENG/dm.ini mount
系统通过OGUID值确定一个守护进程组,由用户保证OGUID值唯一性,并确保数据守护系统中,数据库、守护进程和监视器配置相同的OGUID。如果设置不同,可能会导致组件之间通信失败。使用命令。
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//开启参数修改模式,允许修改数据库的关键参数
//参数解析:1:代表系统级,修改后立即生效,无需重启数据库 'ALTER_MODE_STATUS':参数名
SQL>sp_set_oguid(453331);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
//修改数据库模式
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
//此处将备库的模式修改为standby模式
SQL>ALTER DATABASE Standby ;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
监视器: 监视器分为两种类型普通监视器和确认监视器。通过监视器,可以监控数据守护系统的运行情况,获取主备库状态、守护进程状态以及主备库数据同步情况等信息。同时,监视器(dmmonitor)还提供了一系列命令来管理数据守护系统。
由于要实现故障自动切换,所以在实时主备情况下,必须使用确认监视器,
确认监视器还分为单实例监视器和多实例监视器。它们之间的区别就是多实例监视器为每一个实例配置一个dmmonitor.ini
。
相比于多实例确认监视器,单实例确认监视器出现故障就无法正常提供服务。
所以我们此处部署多实例监视器。
为每一个实例配置一个dmmonitor.ini
。众多dmmonitor.ini
中,除 MON_ID
和 MON_NAME
参数不同以外,其他参数应完全一致。
MON_LOG_PATH = /dm/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 #实例总个数
MON_HB_INTERVAL = 60 #通信心跳校验间隔
MON_BRO_INTERVAL = 100 #raft协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 #raft协议中基础投票间隔
MON_ID = 1 #当前监视器在监视器系统中的ID
MON_MID = 45614 #当前监视器系统的唯一标识
MON_NAME = MON1 #监视器名
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.0.141:52141
MON_DW_IP = 192.168.0.142:52142
[MON1] #监视器实例信息
MON_HOST = 192.168.0.143 #MON1监视器所在IP
MON_PORT = 8339 #MON1监视器监听端口
MON_INST_ID = 1 #监视器实例在监视器系统中的ID
MON_VOTE_PRIORITY = 3 #监视器实例成为LEADER的优先级
[MON2]
MON_HOST = 192.168.0.144 #MON2监视器所在IP
MON_PORT = 8340 #MON2监视器监听端口
MON_INST_ID = 2 #监视器实例在监视器系统中的ID
MON_VOTE_PRIORITY = 2 #监视器实例成为LEADER的优先级
[MON3]
MON_HOST = 192.168.0.145 #MON3监视器所在IP
MON_PORT = 8341 #MON3监视器监听端口
MON_INST_ID = 3 #监视器实例在监视器系统中的ID
MON_VOTE_PRIORITY = 1 #监视器实例成为LEADER的优先级
使用命令:
./dmwatcher /data/test6/dljDmTest/dmdbms/data/DAMENG/dmwatcher.ini
守护进程启动后,进入 Startup 状态,此时实例都处于 Mount 状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例 Open,并切换为 Open 状态。
使用:
./dmmonitor /data/test6/dljDmTest/dmdbms/data/DAMENG/dmmonitor.ini
监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入 help 命令,查看各种命令使用说明,结合实际情况选择使用。
在监视器中,输入show命令。出现下图可以监控到所有实例都处于 Open 状态,所有守护进程也都处于 Open 状态,即为正常运行状态。
至此一主一备的实时数据守护系统搭建完毕。
文章
阅读量
获赞