注册
DM8 主备集群安装部署文档
专栏/技术分享/ 文章详情 /

DM8 主备集群安装部署文档

JcRapunzel 2026/09/18 333 0 0
摘要

1 概述

DM8 数据守护(Data Watch)集群以主备库 Redo 日志同步为基础,通过守护进程(dmwatcher)监控主备状态、监视器(dmmonitor)完成故障处理与切换,实现数据库高可用与容灾。本集群可配置为以下四种模式:

对比项 实时主备 读写分离集群 异步备库 同步归档
归档类型 REALTIME(实时归档) TIMELY(即时归档)/ REALTIME ASYNC(异步归档) SYNC(同步归档)
同步时机 主库 Redo 日志写联机日志前经 MAL 发送到备库 主库 Redo 日志写联机日志后经 MAL 发送到备库 定时器定时触发,扫描本地归档经 MAL 发送 主库归档日志刷盘后经 MAL 发送
备库数量 主库 1~8 个实时备库 主库 1~8 个即时备库 源库最多 8 个异步备库 主库最多 8 个同步备库
备库可读 不可(只做数据保护) 可(提供只读服务,读写自动分离) 不可 不可
自动故障切换 支持(全局守护 AUTO 模式) 支持(全局守护 AUTO 模式) 不支持(本地守护) 不支持(本地守护)
数据一致性 备库收日志即响应,不等待重演 事务一致模式(ARCH_WAIT_APPLY=1)等待备库重演完成;高性能模式(=0)不等待 异步,存在延迟 备库收日志即响应,不等待重演
适用场景 核心交易系统高可用、容灾,要求数据丢失最小化 读多写少、高并发查询、报表类业务,需减轻主库压力 历史数据统计、周期报表等对实时性要求不高的业务 对数据一致性要求高、需额外冗余副本的容灾场景

说明:读写分离集群不依赖额外中间件,通过 JDBC/DPI 等数据库接口自动完成读写语句分发;实时主备也可配置接口读写分离属性实现类似功能(默认高性能模式)。

DM8 单机安装部署 - 纯指令

1 环境检查

lscpu
lsblk
cat /etc/os-release

1.1 检查 SELINUX

getenforce grep '^SELINUX' /etc/selinux/config vi /etc/selinux/config # 修改为:SELINUX=disabled

1.2 检查 sysctl.conf

vi /etc/sysctl.conf # 追加以下内容: vm.swappiness = 10 #core路径 kernel.core_pattern=/corefile/core-dmserver-%e-%p-%t kernel.core_uses_pid=1
sysctl -p

1.3 检查 limits.conf

vi /etc/security/limits.conf # 追加以下内容: dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 131072 dmdba hard nproc 131072 dmdba soft nofile 131072 dmdba hard nofile 131072 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited
dmdba  soft      nice       0
dmdba  hard      nice       0
dmdba  soft      as         unlimited
dmdba  hard      as         unlimited
dmdba  soft      fsize      unlimited
dmdba  hard      fsize      unlimited
dmdba  soft      nproc      65536
dmdba  hard      nproc      65536
dmdba  soft      nofile     65536
dmdba  hard      nofile     65536
dmdba  soft      core       unlimited
dmdba  hard      core       unlimited
dmdba  soft      data       unlimited
dmdba  hard      data       unlimited

1.4 检查 /tmp 文件系统大小

df -h /tmp # 要求至少 1G 以上

1.5 检查防火墙

systemctl status firewalld

2 环境规划

2.1 主机与拓扑规划

机器 角色 实例名 初始状态 备注
<PRIMARY_HOST> 主库 <PRIMARY_INS> PRIMARY 建议双网卡:内网通信 IP + 对外服务 IP
<STANDBY_HOST> 备库 <STANDBY_INS> STANDBY 建议双网卡
<MONITOR_HOST> 确认监视器 — — 可与主/备库共用一台机器
  • 实例名建议按“组名_守护环境_序号”命名(如 GRP1_RT_01),总长度不超过 16 个字符。
  • 操作系统与数据库软件版本建议主备完全一致;两机时间建议通过 NTP 同步。

2.2 目录规划

用途 路径(占位符) 示例值
数据库软件安装路径 <DM_HOME> /home/dmdba/dmdbms
实例数据目录(含 dm.ini) <DATA_DIR> /data/dmdata/DAMENG
归档目录 <ARCH_DIR> /data/dmarch/DAMENG
备份目录 <BACKUP_DIR> /data/dmback/DAMENG
监视器目录 <MONITOR_DIR> /data/dmdata/monitor/DAMENG

2.3 端口规划

端口 用途 主库示例值 备库示例值
<PORT_NUM> 数据库实例监听端口(dm.ini PORT_NUM) 5236 5236
<MAL_PORT> MAL 系统监听 TCP 端口(dmmal.ini MAL_PORT) 61141 61142
<MAL_DW_PORT> 实例守护进程监听端口(dmmal.ini MAL_DW_PORT,供守护进程间/监视器通信) 52141 52142
<MAL_INST_DW_PORT> 实例监听守护进程端口(dmmal.ini MAL_INST_DW_PORT) 33141 33142

规划要点:

  • 各端口在同一台机器上不能与现有服务冲突,主备两台机器端口规划保持一致风格;
  • MAL_PORT 必须与 PORT_NUM 使用不同的端口值;
  • MAL_INST_HOST(对外服务 IP)若 dm.ini 配置了 LISTEN_IP,两者必须一致;
  • 监视器 MON_DW_IP 中的 IP/PORT 与 dmmal.ini 中 MAL_HOST/MAL_DW_PORT 一一对应。

2.4 公共变量约定

本文档以下配置文件中使用的占位符统一约定如下,使用时请全文替换:

占位符 含义
<PRIMARY_INS> / <STANDBY_INS> 主库/备库实例名
<PRIMARY_IP> / <STANDBY_IP> 主库/备库内网通信 IP(MAL_HOST)
<PRIMARY_IP_SRV> / <STANDBY_IP_SRV> 主库/备库对外服务 IP(MAL_INST_HOST)
<OGUID> 守护系统唯一 OGUID 值(如 453331,全系统唯一)
<GRP> 守护组名(如 GRP1)
<SYSDBA_PWD> SYSDBA 密码
<DMDBA_USER> 数据库安装用户(如 dmdba)
<DATA_DIR> / <ARCH_DIR> / <BACKUP_DIR> / <MONITOR_DIR> 见 2.2

3 通用安装步骤

以下步骤适用于四种模式,主备库均需先安装 DM8 数据库软件(创建 dmdba 用户、解压安装、配置环境变量,此处不再赘述,可参考《DM8 安装手册》)。

3.1 初始化实例

主库初始化:

su - <DMDBA_USER> mkdir -p <DATA_DIR> <ARCH_DIR> <BACKUP_DIR> cd <DM_HOME>/bin ./dminit PATH=<DATA_DIR> \ PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=Y CHARSET=1 \ DB_NAME=DAMENG INSTANCE_NAME=<PRIMARY_INS> \ PORT_NUM=<PORT_NUM> SYSDBA_PWD=<SYSDBA_PWD> SYSAUDITOR_PWD=<SYSAUDITOR_PWD>

备库初始化(仅生成骨架库,后续用备份还原覆盖):

./dminit PATH=<DATA_DIR> \ PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=Y CHARSET=1 \ DB_NAME=DAMENG INSTANCE_NAME=<STANDBY_INS> \ PORT_NUM=<PORT_NUM> SYSDBA_PWD=<SYSDBA_PWD> SYSAUDITOR_PWD=<SYSAUDITOR_PWD>

常用初始化参数说明:

参数 说明(括号内为默认值)
PATH 初始数据库存放路径
PAGE_SIZE 数据页大小(8),可选 4/8/16/32,单位 K,推荐 16 或 32
LOG_SIZE 日志文件大小(256),范围 64M~2048M,推荐 2048
CASE_SENSITIVE 大小写敏感(Y),可选 Y/N
CHARSET 字符集(1),0=GB18030,1=UTF-8
LENGTH_IN_CHAR VARCHAR 长度是否以字符为单位(N)
DB_NAME / INSTANCE_NAME 数据库名(DAMENG) / 实例名
PORT_NUM 监听端口(5236)

注意:新初始化的库首次启动不允许使用 Mount 方式,需先正常启动并正常退出一次。

主库前台正常启动一次后退出(生成初始 Redo 日志):

cd <DM_HOME>/bin ./dmserver <DATA_DIR>/dm.ini # 输出 SYSTEM IS READY. 后输入 exit 正常退出

3.2 主库脱机备份并拷贝至备库

# 主库、备库同时创建备份目录 mkdir -p <BACKUP_DIR>/full # 主库执行脱机备份 cd <DM_HOME>/bin ./dmrman backup database '<DATA_DIR>/dm.ini' full backupset '<BACKUP_DIR>/full/fullbak_first' compressed level 1 task thread 8 parallel 8 exit # 拷贝备份集到备库(示例使用 scp,按实际网络情况调整) scp -r <BACKUP_DIR>/full/fullbak_first <DMDBA_USER>@<STANDBY_IP>:<BACKUP_DIR>/full/

不能使用“分别初始化库”或“直接拷贝数据文件”的方式准备备库:每个库有唯一的永久魔数(permanent_magic)与随机加密密钥,必须通过备份还原使备库与主库数据完全一致。

3.3 备库还原恢复

# 备库上调整备份集属主 chown -R <DMDBA_USER>:<DMDBA_GROUP> <BACKUP_DIR>/full/fullbak_first cd <DM_HOME>/bin ./dmrman restore database '<DATA_DIR>/dm.ini' from backupset '<BACKUP_DIR>/full/fullbak_first'; recover database '<DATA_DIR>/dm.ini' from backupset '<BACKUP_DIR>/full/fullbak_first'; recover database '<DATA_DIR>/dm.ini' update db_magic; exit

说明:脱机备份未产生新 Redo 日志,若确认备份后主库未再启动,可省略中间的 recover ... from backupset 步骤;update db_magic 必须执行,用于生成备库独立的 DB_MAGIC。

3.4 通用参数配置(dm.ini)

主库、备库分别在各自 &lt;DATA_DIR>/dm.ini 中修改以下参数:

# 实例名,与 dmmal.ini 中 MAL_INST_NAME 一致 INSTANCE_NAME = <PRIMARY_INS> # 备库改为 <STANDBY_INS> PORT_NUM = <PORT_NUM> # 接收守护进程消息超时时间 DW_INACTIVE_INTERVAL = 60 # 不允许手工方式修改实例模式/状态/OGUID ALTER_MODE_STATUS = 0 # 不允许备库 OFFLINE 表空间 ENABLE_OFFLINE_TS = 2 # 打开 MAL 系统 MAL_INI = 1 # 打开归档配置 ARCH_INI = 1 # 统计最近 64 次日志发送/重演信息 RLOG_SEND_APPLY_MON = 64

3.5 dmmal.ini 配置(所有模式通用)

主库、备库的 dmmal.ini 必须完全一致,内容如下(新增节点在文件末尾追加 [MAL_INSTn] 段):

MAL_CHECK_INTERVAL = 10 MAL_CONN_FAIL_INTERVAL = 10 [MAL_INST1] MAL_INST_NAME = <PRIMARY_INS> MAL_HOST = <PRIMARY_IP> MAL_PORT = <MAL_PORT_P> MAL_INST_HOST = <PRIMARY_IP_SRV> MAL_INST_PORT = <PORT_NUM> MAL_DW_PORT = <MAL_DW_PORT_P> MAL_INST_DW_PORT = <MAL_INST_DW_PORT_P> [MAL_INST2] MAL_INST_NAME = <STANDBY_INS> MAL_HOST = <STANDBY_IP> MAL_PORT = <MAL_PORT_S> MAL_INST_HOST = <STANDBY_IP_SRV> MAL_INST_PORT = <PORT_NUM> MAL_DW_PORT = <MAL_DW_PORT_S> MAL_INST_DW_PORT = <MAL_INST_DW_PORT_S>

3.6 注册服务与启动

(1)以 Mount 方式前台启动实例,设置 OGUID 与数据库模式

主库:

cd <DM_HOME>/bin ./dmserver <DATA_DIR>/dm.ini mount # SYSTEM IS READY. 后另开终端执行: ./disql SYSDBA/<SYSDBA_PWD>@localhost:<PORT_NUM> SQL> SP_SET_OGUID(<OGUID>); SQL> ALTER DATABASE PRIMARY; SQL> EXIT

备库:

./dmserver <DATA_DIR>/dm.ini mount ./disql SYSDBA/<SYSDBA_PWD>@localhost:<PORT_NUM> SQL> SP_SET_OGUID(<OGUID>); SQL> ALTER DATABASE STANDBY; SQL> EXIT

必须以 Mount 方式启动,否则系统启动时会重构回滚表空间、生成 Redo 日志,破坏主备数据一致性;配置结束后由守护进程自动 Open 数据库。

(2)启动守护进程与监视器(前台验证)

# 主库 ./dmwatcher <DATA_DIR>/dmwatcher.ini # 备库 ./dmwatcher <DATA_DIR>/dmwatcher.ini # 监视器(确认监视器只能打开一个) ./dmmonitor <MONITOR_DIR>/dmmonitor_auto.ini

监视器内执行 show,确认主备实例均 Open、守护进程均 Open 后,exit 退出前台进程。

(3)注册系统服务

cd <DM_HOME>/script/root # 主库 ./dm_service_installer.sh -t dmserver -dm_ini <DATA_DIR>/dm.ini -p <PRIMARY_INS> -m mount ./dm_service_installer.sh -t dmwatcher -watcher_ini <DATA_DIR>/dmwatcher.ini -p <PRIMARY_INS> # 备库 ./dm_service_installer.sh -t dmserver -dm_ini <DATA_DIR>/dm.ini -p <STANDBY_INS> -m mount ./dm_service_installer.sh -t dmwatcher -watcher_ini <DATA_DIR>/dmwatcher.ini -p <STANDBY_INS> # 监视器(注册确认监视器服务) ./dm_service_installer.sh -t dmmonitor -monitor_ini <MONITOR_DIR>/dmmonitor_auto.ini -p <GRP>

(4)服务启停顺序(务必严格遵守)

# 启动:实例(先主后备)→ 守护进程(先主后备)→ 确认监视器 ./DmService<PRIMARY_INS> start ./DmService<STANDBY_INS> start ./DmWatcher<PRIMARY_INS> start ./DmWatcher<STANDBY_INS> start ./DmMonitor<GRP> start # 停止:确认监视器 → 守护进程(先备后主)→ 实例(先主后备) ./DmMonitor<GRP> stop ./DmWatcher<STANDBY_INS> stop ./DmWatcher<PRIMARY_INS> stop ./DmService<PRIMARY_INS> stop ./DmService<STANDBY_INS> stop

4 四种集群配置差异化说明

第 3 章通用步骤已完成后,本章按所选模式补充 dmarch.ini 及各差异化配置文件。除本章列出的差异外,其余配置(dm.ini 基础参数、dmmal.ini、启动/OGUID/注册服务流程)均与第 3 章一致。

4.1 实时主备(REALTIME)

适用场景:核心交易系统、生产库容灾,要求故障自动切换、数据丢失最小化。

主库 dmarch.ini:

[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = <STANDBY_INS> [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

备库 dmarch.ini(与主库结构相同,仅实时归档目标反向指向主库,保证备库接管后向原主库同步):

[ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = <PRIMARY_INS> [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

主备库 dmwatcher.ini(全局守护、自动切换模式):

[<GRP>] DW_TYPE = GLOBAL DW_MODE = AUTO DW_ERROR_TIME = 10 INST_RECOVER_TIME = 60 INST_ERROR_TIME = 10 INST_OGUID = <OGUID> INST_INI = <DATA_DIR>/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = <DM_HOME>/bin/dmserver RLOG_SEND_THRESHOLD = 0 RLOG_APPLY_THRESHOLD = 0

dmmonitor.ini(确认监视器):

MON_DW_CONFIRM = 1 MON_LOG_PATH = <MONITOR_DIR>/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 32 MON_LOG_SPACE_LIMIT = 0 [<GRP>] MON_INST_OGUID = <OGUID> MON_DW_IP = <PRIMARY_IP>:<MAL_DW_PORT_P> MON_DW_IP = <STANDBY_IP>:<MAL_DW_PORT_S>

4.2 读写分离集群(TIMELY)

适用场景:读多写少、高并发查询/报表业务,通过备库只读服务实现读写自动分离、负载均衡。客户端需使用支持读写分离属性的 JDBC/DPI 等接口连接。

主库 dmarch.ini(核心差异:即时归档 TIMELY;可配置多个备库则增加多个 TIMELY 归档段):

[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY ARCH_DEST = <STANDBY_INS> # ARCH_WAIT_APPLY:1=事务一致模式(默认),0=高性能模式 # ARCH_WAIT_APPLY = 1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

备库 dmarch.ini(同样配置 TIMELY 归档指向主库):

[ARCHIVE_TIMELY1] ARCH_TYPE = TIMELY ARCH_DEST = <PRIMARY_INS> # ARCH_WAIT_APPLY = 1 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

dmwatcher.ini:与 4.1 相同(DW_TYPE = GLOBAL,DW_MODE = AUTO)。

差异说明:

  • 事务一致模式(ARCH_WAIT_APPLY=1):备库重演完 Redo 日志后才响应主库,同一事务在主备库查询结果均满足 READ COMMIT 隔离级,但主库事务提交时延增加;即时归档默认即此模式。
  • 高性能模式(ARCH_WAIT_APPLY=0):备库收日志立即响应,同步存在极短延迟,吞吐量更高。
  • 若采用实时归档(REALTIME)+ 读写分离,ARCH_WAIT_APPLY 默认值为 0(高性能模式),且事务一致模式仅在守护自动切换模式下生效。

4.3 异步备库(ASYNC)

适用场景:历史数据统计、周期报表、数据仓库等对数据实时性要求不高的业务;异步备库可级联配置,也可作为源库再配置异步备库。

源库(主库,以及所有实时/即时备库,保证切换后继续同步)dm.ini 增加:

TIMER_INI = 1

源库 dmarch.ini 增加异步归档段(在 4.1/4.2 配置基础上):

[ARCHIVE_ASYNC] ARCH_TYPE = ASYNC ARCH_DEST = <ASYNC_INS> ARCH_TIMER_NAME = <TIMER_NAME>

源库 dmtimer.ini(定时触发发送归档日志到异步备库;[&lt;TIMER_NAME>] 必须与 dmarch.ini 中 ARCH_TIMER_NAME 一致):

[<TIMER_NAME>] TYPE = 2 FREQ_MONTH_WEEK_INTERVAL = 1 FREQ_SUB_INTERVAL = 0 FREQ_MINUTE_INTERVAL = 0 START_TIME = 00:00:00 END_TIME = 23:59:59 DURING_START_DATE = 2024-01-01 00:00:00 DURING_END_DATE = 9999-12-31 23:59:59 NO_END_DATE_FLAG = 1 DESCRIBE = ASYNC TIMER IS_VALID = 1

dmmal.ini:在通用配置基础上增加异步备库的 [MAL_INSTn] 段(写法同 3.5,各节点文件保持一致)。

异步备库 dmarch.ini(异步备库可只配置本地归档):

[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

异步备库 dmwatcher.ini(核心差异:本地守护类型,不具备自动故障切换):

[<GRP>] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 10 INST_ERROR_TIME = 10 INST_OGUID = <OGUID> INST_INI = <DATA_DIR>/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = <DM_HOME>/bin/dmserver

dmmonitor.ini:在 4.1 基础上增加异步备库守护进程的 MON_DW_IP = &lt;ASYNC_IP>:&lt;MAL_DW_PORT_A>。

4.4 同步归档(SYNC)

适用场景:对数据一致性要求高、需要额外冗余副本的容灾场景;同步备库不具备故障自动切换功能(本地守护),主要用于数据保护。

约束:Raft 归档和 Remote 归档不能与同步归档共存;归档配置文件中存在目标为 DMDSC 库的配置项时不能配置同步归档。

源库(主库及所有实时/即时备库,保证主备切换后继续向同步备库同步)dmarch.ini 增加同步归档段:

[ARCHIVE_SYNC] ARCH_TYPE = SYNC ARCH_DEST = <SYNC_INS> ARCH_RECOVER_TIME = 60

dmmal.ini:增加同步备库的 [MAL_INSTn] 段(写法同 3.5,各节点文件保持一致)。

同步备库 dmarch.ini(仅配置本地归档):

[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = <ARCH_DIR> ARCH_FILE_SIZE = 2048 ARCH_SPACE_LIMIT = 51200

同步备库 dmwatcher.ini(核心差异:本地守护类型,DW_MODE 配置不生效):

[<GRP>] DW_TYPE = LOCAL DW_MODE = MANUAL DW_ERROR_TIME = 10 INST_ERROR_TIME = 10 INST_OGUID = <OGUID> INST_INI = <DATA_DIR>/dm.ini INST_AUTO_RESTART = 1 INST_STARTUP_CMD = <DM_HOME>/bin/dmserver

dmmonitor.ini:在 4.1 基础上增加同步备库守护进程的 MON_DW_IP = &lt;SYNC_IP>:&lt;MAL_DW_PORT_SYNC>。

4.5 四种模式 dmarch.ini 差异速查

配置项 实时主备 读写分离 异步备库 同步归档
核心归档段 [ARCHIVE_REALTIME] [ARCHIVE_TIMELY1] [ARCHIVE_ASYNC] [ARCHIVE_SYNC]
ARCH_TYPE REALTIME TIMELY ASYNC SYNC
附加配置 无 ARCH_WAIT_APPLY(1/0) ARCH_TIMER_NAME + dmtimer.ini + TIMER_INI=1 ARCH_RECOVER_TIME
备库本地归档 必须 必须 可省略 必须(同步备库仅本地归档)
备库守护类型 GLOBAL/AUTO GLOBAL/AUTO LOCAL/MANUAL LOCAL/MANUAL

5 集群验证命令

5.1 监视器验证

cd <DM_HOME>/bin ./dmmonitor <MONITOR_DIR>/dmmonitor_auto.ini
show              # 查看主备实例与守护进程状态,确认所有实例/守护进程均为 Open
show global info  # 查看全局信息(组内各库模式、LSN 等)
tip               # 查看是否有数据库分裂等异常
login             # 登录监视器后执行管理命令(switchover/takeover 等)

关键检查点:主库 MODE=PRIMARY、备库 MODE=STANDBY,STATUS=OPEN,主备库 LSN 值一致或差距极小且持续收敛。

5.2 SQL 验证(DIsql)

-- 查看实例模式与状态(主库应为 PRIMARY,备库为 STANDBY,均 OPEN) SELECT INSTANCE_NAME, MODE$, STATUS$ FROM V$INSTANCE; -- 查看归档配置是否生效 SELECT * FROM V$DM_ARCH_INI; -- 查看归档状态(REALTIME/TIMELY 等远程归档在主库查询,状态应为 VALID) SELECT ARCH_TYPE, ARCH_DEST, ARCH_STATUS FROM V$ARCH_STATUS; -- 查看主备库日志 LSN(对比主备值判断同步进度) SELECT FILE_LSN, CUR_LSN FROM V$RLOG;

5.3 数据同步验证

-- 主库插入数据 SQL> CREATE TABLE T_SYNC_TEST(C1 INT); SQL> INSERT INTO T_SYNC_TEST VALUES(1); SQL> COMMIT; -- 备库查询(实时主备/读写分离备库应能查到该记录;读写分离下该查询应分发到备库执行) SQL> SELECT * FROM T_SYNC_TEST;

5.4 读写分离生效验证

通过 JDBC 连接串启用读写分离属性连接后,检查备库会话数增加(连接主库会同时建立到可用备库的连接),或开启 SVR_LOG=1 观察查询语句在备库执行,确认读写分离生效。

5.5 切换演练(可选,实时主备/读写分离)

在确认监视器内执行:

login
switchover <GRP>.<STANDBY_INS>   # 计划内主备切换
takeover <GRP>.<STANDBY_INS>     # 主库故障时强制接管(谨慎使用)

切换后再次执行 show 与 5.2 的 SQL,确认新主库可正常读写、原主库以 STANDBY 模式重新加入集群并追平 LSN。

6 注意事项

  1. 实例名长度:建议按“组名_守护环境_序号”命名,总长度不能超过 16 个字符。
  2. Mount 启动:配置守护期间实例必须以 Mount 方式启动;配置完成后由守护进程自动 Open。新初始化库首次启动不能使用 Mount 方式,需先正常启动并退出。
  3. 数据准备方式:备库必须通过备份还原(restore + recover + update db_magic)准备,不能分别初始化库或直接拷贝数据文件(永久魔数、加密密钥、DB_MAGIC 机制决定)。
  4. dmmal.ini 一致性:同一守护组所有节点的 dmmal.ini 必须完全一致;每增加一个节点,所有节点的 dmmal.ini 都要同步更新。
  5. OGUID 唯一性:OGUID 全系统唯一,数据库、守护进程、监视器的 OGUID 必须一致;端口规划同样避免与现有环境冲突。
  6. ALTER_MODE_STATUS:守护环境下配置为 0,禁止手工修改模式/状态/OGUID;手工修改模式时需先置 1,操作完成后置回 0。
  7. 启停顺序:启动 = 实例(先主后备)→ 守护进程(先主后备)→ 确认监视器;停止按相反顺序(监视器 → 守护先备后主 → 实例先主后备),不得颠倒。
  8. 确认监视器:同一守护组只能打开一个确认监视器;查看状态时可前台启动手动监视器(MON_DW_CONFIRM=0)。
  9. 归档空间:本地归档空间不足时系统会挂起等待,磁盘损坏导致归档写入失败时系统强制 HALT;删除归档需谨慎,勿删除尚未同步到备库的归档日志。
  10. 模式约束:实时/即时归档事务一致模式(ARCH_WAIT_APPLY=1)仅在守护自动切换模式下生效;配置实时归档的 DMDSC 守护不支持事务一致模式;同步归档不能与 Raft/Remote 归档共存。
  11. 异步备库:Normal 模式下配置的异步备库自动失效;异步备库需在源库打开 TIMER_INI=1 并保证 ARCH_TIMER_NAME 与 dmtimer.ini 定时器名称一致、IS_VALID=1。
  12. 备份方式:Normal 模式库必须使用脱机备份(避免联机备份后 LSN 增长导致主备数据不一致);建议联机备份的库已为 PRIMARY 模式。
  13. 故障切换后:原主库重新加入集群时,守护进程会自动将其恢复为备库并追平日志,期间勿手工干预数据库模式。
  14. 时钟同步:主备机器建议配置 NTP 时间同步,避免时间偏差影响日志时间戳与监控判断。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服