达梦公开《DEM 使用手册》和微信公众号将该产品类型称为“自治容灾集群 DMAFC”,本文按常用写法简称 AFC。
DMAFC 面向数据库多副本与容灾场景:多个数据库实例通过专用通信和 RAFT 归档形成一个副本组,运行时选出一个 Leader,其余节点作为 Follower 保存副本。节点状态、任期和归档有效性共同决定集群是否形成稳定服务。
图 1 三副本 DM AFC 集群架构示意图(图源 DM9 安装目录下白皮书)
数据冗余:同一逻辑数据库保存多份副本,降低单节点介质或主机故障带来的数据风险。
自动选主:当前 Leader 不可用时,其余满足条件的节点通过选举产生新 Leader。
一致性控制:写入日志由 Leader 组织复制,副本按提交顺序应用,从而维护副本状态。
故障域规划:官方管理平台支持按地域、数据中心和容错域组织 AFC 节点,生产环境应避免同一副本组落在同一故障域。
可观察性:可通过 RAFT、归档和实例动态视图检查角色、任期、提交进度及有效状态。
注: AFC 提供数据库层多副本能力,但不能替代应用连接切换、网络冗余、存储备份、异地灾备和容量规划。RPO、RTO 与切换时间不能脱离版本、拓扑、负载和接入方式给出绝对值。
表 1-1 三类部署方式的实践关注点
| 方式 | 核心关系 | 主要配置 | 部署关注点 |
|---|---|---|---|
| 单实例 | 一个数据库实例 | dm.ini、可选本地归档 | 主机或实例故障时没有同组副本接管 |
| 传统数据守护 | 主库/备库与守护、监视组件 | dmarch.ini、dmmal.ini、dmwatcher.ini、dmmonitor.ini | 主备模式、守护进程和监视器配置 |
| DMAFC | RAFT 多副本,动态选举 Leader | dm.ini、dmarch.ini 中 XMAL/RAFT/LOCAL | 多数派、唯一节点 ID、选举超时和归档目标 |
表 2-1 RAFT 状态及其含义
| 状态 | 含义 | 运维观察 |
|---|---|---|
| Leader | 当前任期内组织日志复制并对外承担主角色 | 稳定集群中应只有一个 |
| Follower | 接收 Leader 心跳和日志,必要时参与投票 | 三副本稳定时通常有两个 |
| Candidate | 心跳超时后发起新一轮选举的候选状态 | 短暂出现可属于选举过程;长期存在需排查 |
| Term | 选举任期号,用于区分不同时期的 Leader | 发生新选举时递增;稳定后各有效节点应收敛 |
通用 RAFT 模型中,Follower 在选举超时内未收到有效 Leader 心跳,会增加 Term、转为 Candidate 并请求投票;同一任期获得超过半数选票的 Candidate 成为 Leader。若看到更高 Term 的有效消息,旧 Leader 或 Candidate 应退回 Follower。
多数派计算为 Q = floor(N / 2) + 1。N=3 时 Q=2,因此三副本最多容忍一个节点失效;N=5 时 Q=3,最多容忍两个节点失效。这个结论来自 RAFT 多数派规则,是算法推论,不等同于某个具体版本的性能承诺。
表 2-2 多数派与容错关系
| 副本数 N | 多数派 Q | 最多容忍失效数 | 是否推荐偶数副本 |
|---|---|---|---|
| 3 | 2 | 1 | 否 |
| 5 | 3 | 2 | 否 |
| 7 | 4 | 3 | 否 |
理解要点 少数分区即使仍有进程运行,也不能仅凭自身形成合法多数派。多数派的目的,是避免网络分区时出现两个同时有效的 Leader。
Leader 周期性发送心跳,维持当前任期的领导关系。
Follower 超过选举超时未收到有效心跳后转为 Candidate,并发起投票。
Candidate 获得多数票后成为 Leader,随后继续发送心跳和日志。
业务产生的 REDO/日志由 Leader 组织复制到副本;满足提交条件后推进提交位置。
恢复节点先重新建立通信,再追赶缺失日志;追赶过程中可观察到 INVALID 或 ASYNC_SEND,最终应恢复 VALID。
注: 本文用通用 RAFT 模型解释状态,但 DM 的具体提交、恢复和状态机实现应以当前版本官方手册为准。
表 2-3 配置对象与职责
| 对象 | 职责 | 关键检查 |
|---|---|---|
| XMAL | 副本间选举、心跳和消息通信通道 | 本地 IP/端口唯一,端口不得与 PORT_NUM 相同 |
| RAFT 归档 | Leader 向另外两个副本同步日志的目标关系 | 目标实例名、IP、端口、ID 交叉一致 |
| LOCAL 归档 | 本节点本地归档,辅助恢复与日志管理 | 每个 RAFT 配置至少保留一路 LOCAL |
官方 DEM 文档明确说明 AFC 的 dmarch.ini 配置步骤与 DMDPC 多副本一致。本文据此采用相同的 RAFT/XMAL 配置规则。
表 3-1 三副本节点规划(所有地址均为占位符)
| 节点 | 主机名 | 实例 | 业务端点 | XMAL 端点 | SELF_ID |
|---|---|---|---|---|---|
| A | afc-node-1 | RAFT_01 | <BIZ_IP_A>:<DB_PORT_A> |
<XMAL_IP_A>:<XMAL_PORT_A> |
1 |
| B | afc-node-2 | RAFT_02 | <BIZ_IP_B>:<DB_PORT_B> |
<XMAL_IP_B>:<XMAL_PORT_B> |
2 |
| C | afc-node-3 | RAFT_03 | <BIZ_IP_C>:<DB_PORT_C> |
<XMAL_IP_C>:<XMAL_PORT_C> |
3 |
关系说明:RAFT_01、RAFT_02、RAFT_03 属于同一副本组;每个节点在 dmarch.ini 中配置另外两个节点为 RAFT 目标,并配置一条本地 LOCAL 归档。
表 3-2 网络平面与用途
| 网络 | 用途 | 部署检查 |
|---|---|---|
| 管理网 | SSH、软件安装、文件传输、监控和时间同步 | 三节点可管理,默认路由和 DNS 正确 |
| XMAL/内部网 | RAFT 心跳、选举和日志复制 | 节点两两互通,端口未占用且不与 DB 端口重复 |
| 业务网 | 客户端或应用连接数据库 | 访问策略与 Leader 变化相匹配 |
表 3-3 目录规划
| 对象 | 节点 A | 节点 B | 节点 C |
|---|---|---|---|
| 数据库根目录 | /dmdata/afc_lab/raft_01 | /dmdata/afc_lab/raft_02 | /dmdata/afc_lab/raft_03 |
| 配置与数据 | …/raft_01/DAMENG | …/raft_02/DAMENG | …/raft_03/DAMENG |
| 本地归档 | …/raft_01/DAMENG/arch | …/raft_02/DAMENG/arch | …/raft_03/DAMENG/arch |
| 离线备份 | /dmdata/afc_lab/backup/RAFT_01_FULL | 同一备份集副本 | 同一备份集副本 |
<DM_HOME>、<SYSDBA_PASSWORD>、<SYSAUDITOR_PASSWORD> 以及所有 <..._IP_...>、<..._PORT_...> 都是占位符,执行前需按当前环境进行替换。
命令 4-1 三节点基础检查
hostnamectl
ip -br addr
ip route
lsblk -f
df -hT /dmdata
timedatectl
ulimit -a
ss -lntp
# DM 版本必须在三节点一致
<DM_HOME>/bin/dmserver help | head
<DM_HOME>/bin/dminit help | head
表 4-1 前置验收标准
| 检查项 | 通过标准 |
|---|---|
| 软件版本 | 三节点 DM Build 和授权能力一致 |
| 时间 | 时区一致,chrony/NTP 正常,无明显漂移 |
| 网络 | 管理、XMAL、业务网络按规划互通 |
| 端口 | DB 与 XMAL 端口未被占用,且同节点不重复 |
| 存储 | 数据库、归档、备份空间满足容量估算 |
| 权限 | 服务账号对自身目录有读写权限,其他账号无越权写入 |
命令 4-2 创建目录与权限
# root 在对应节点执行;只创建本次部署目录
mkdir -p /dmdata/afc_lab/{raft_01,raft_02,raft_03,backup,logs}
chown -R dmdba:dinstall /dmdata/afc_lab
chmod 750 /dmdata/afc_lab
# 服务账号验证
sudo -u dmdba test -w /dmdata/afc_lab && echo writable
命令 4-3 时间与端口检查
chronyc tracking
chronyc sources -v
date '+%F %T.%3N %z'
# 启动前确认端口未占用
ss -lnt | grep -E '(<DB_PORT_A>|<XMAL_PORT_A>)' || true
# 数据库启动后再从对端验证 XMAL 监听
nc -zv <XMAL_IP_A> <XMAL_PORT_A>
关键修正 三个目标目录都必须先通过 dminit 生成自己的 dm.ini 和文件路径体系。不能只初始化 RAFT_01 后就直接向不存在的 RAFT_02/RAFT_03 dm.ini 执行 RESTORE,也不能用 RAFT_01 的 dm.ini 覆盖另外两个节点。
三个节点的页大小、簇大小、字符集、大小写敏感等不可变初始化参数必须一致;日志文件规格也建议按同一规划初始化。仅 PATH、INSTANCE_NAME、PORT_NUM 等节点标识不同。
命令 5-1 节点 A 初始化模板
# dmdba@afc-node-1
<DM_HOME>/bin/dminit \
PATH=/dmdata/afc_lab/raft_01 \
DB_NAME=DAMENG \
INSTANCE_NAME=RAFT_01 \
PORT_NUM=<DB_PORT_A> \
PAGE_SIZE=<PAGE_SIZE> \
EXTENT_SIZE=<EXTENT_SIZE> \
LOG_SIZE=<LOG_SIZE> \
CHARSET=<CHARSET> \
CASE_SENSITIVE=<Y_OR_N> \
SYSDBA_PWD='<SYSDBA_PASSWORD>' \
SYSAUDITOR_PWD='<SYSAUDITOR_PASSWORD>'
命令 5-2 节点 B/C 同构初始化模板
# 节点 B:替换路径、实例名、端口
<DM_HOME>/bin/dminit PATH=/dmdata/afc_lab/raft_02 \
DB_NAME=DAMENG INSTANCE_NAME=RAFT_02 PORT_NUM=<DB_PORT_B> \
PAGE_SIZE=<PAGE_SIZE> EXTENT_SIZE=<EXTENT_SIZE> \
LOG_SIZE=<LOG_SIZE> CHARSET=<CHARSET> CASE_SENSITIVE=<Y_OR_N> \
SYSDBA_PWD='<SYSDBA_PASSWORD>' SYSAUDITOR_PWD='<SYSAUDITOR_PASSWORD>'
# 节点 C:替换路径、实例名、端口
<DM_HOME>/bin/dminit PATH=/dmdata/afc_lab/raft_03 \
DB_NAME=DAMENG INSTANCE_NAME=RAFT_03 PORT_NUM=<DB_PORT_C> \
PAGE_SIZE=<PAGE_SIZE> EXTENT_SIZE=<EXTENT_SIZE> \
LOG_SIZE=<LOG_SIZE> CHARSET=<CHARSET> CASE_SENSITIVE=<Y_OR_N> \
SYSDBA_PWD='<SYSDBA_PASSWORD>' SYSAUDITOR_PWD='<SYSAUDITOR_PASSWORD>'
命令 5-3 检查目标配置与路径
# 三节点分别执行
grep -nE '^[[:space:]]*(INSTANCE_NAME|PORT_NUM|CTL_PATH|SYSTEM_PATH|CONFIG_PATH|BAK_PATH)[[:space:]]*=' \
/dmdata/afc_lab/raft_0X/DAMENG/dm.ini
ls -lh /dmdata/afc_lab/raft_0X/DAMENG
# B/C 的所有路径必须分别指向 raft_02 / raft_03
在 RAFT_01 的 dm.ini 中先设置 ARCH_INI=1、ALTER_MODE_STATUS=0;dmarch.ini 暂时只写 LOCAL 归档,避免基线尚未建立时提前发起 RAFT 选举。
命令 6-0 创建 RAFT_01 本地归档目录
# root@afc-node-1
mkdir -p /dmdata/afc_lab/raft_01/DAMENG/arch
chown dmdba:dinstall /dmdata/afc_lab/raft_01/DAMENG/arch
chmod 750 /dmdata/afc_lab/raft_01/DAMENG/arch
sudo -u dmdba test -w /dmdata/afc_lab/raft_01/DAMENG/arch && echo writable
配置 6-1 RAFT_01 首次启动前的 dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/afc_lab/raft_01/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
命令 6-1 首次启动、检查并正常关闭
nohup <DM_HOME>/bin/dmserver \
/dmdata/afc_lab/raft_01/DAMENG/dm.ini \
> /dmdata/afc_lab/logs/raft_01_first_boot.log 2>&1 &
tail -f /dmdata/afc_lab/logs/raft_01_first_boot.log
# 看到 SYSTEM IS READY 后,使用交互式 disql 登录并执行:
# SELECT INSTANCE_NAME, STATUS$ FROM V$INSTANCE;
# SHUTDOWN IMMEDIATE;
检查点 离线全备前必须确认 RAFT_01 已正常关闭,不能在 dmserver 仍占用数据文件时执行脱机流程。
命令 6-2 生成全备
<DM_HOME>/bin/dmrman \
CTLSTMT="BACKUP DATABASE \
'/dmdata/afc_lab/raft_01/DAMENG/dm.ini' \
FULL TO RAFT01_FULL \
BACKUPSET '/dmdata/afc_lab/backup/RAFT_01_FULL'" \
USE_AP=2
USE_AP=2 和备份名是本次已核对实验用法,不应写成所有版本的强制值。执行前通过当前版本 dmrman help 或随安装文档确认。
命令 6-3 生成清单并复制到节点 B/C
cd /dmdata/afc_lab/backup
find RAFT_01_FULL -type f -exec sha256sum '{}' + | sort -k2 \
> RAFT_01_FULL.SHA256SUMS
rsync -a RAFT_01_FULL RAFT_01_FULL.SHA256SUMS \
dmdba@<MGMT_IP_B>:/dmdata/afc_lab/backup/
rsync -a RAFT_01_FULL RAFT_01_FULL.SHA256SUMS \
dmdba@<MGMT_IP_C>:/dmdata/afc_lab/backup/
# 若只能使用其他传输账号,B/C 由 root 修正属主后再切回 dmdba:
# chown -R dmdba:dinstall /dmdata/afc_lab/backup/RAFT_01_FULL*
# B/C 由 dmdba 分别执行
cd /dmdata/afc_lab/backup
sha256sum -c RAFT_01_FULL.SHA256SUMS
命令 7-1 RESTORE、按需 RECOVER 与 UPDATE DB_MAGIC
# 整段作为同一脚本执行;进程仍在时不会进入恢复分支
if pgrep -af 'dmserver.*raft_02/DAMENG/dm.ini'; then
echo 'RAFT_02 is still running; stop it before restore.' >&2
else
<DM_HOME>/bin/dmrman CTLSTMT="RESTORE DATABASE \
'/dmdata/afc_lab/raft_02/DAMENG/dm.ini' FROM BACKUPSET \
'/dmdata/afc_lab/backup/RAFT_01_FULL'" USE_AP=2
# 仅当备份集需要重做恢复时,取消下面三行注释后执行
# <DM_HOME>/bin/dmrman CTLSTMT="RECOVER DATABASE \
# '/dmdata/afc_lab/raft_02/DAMENG/dm.ini' FROM BACKUPSET \
# '/dmdata/afc_lab/backup/RAFT_01_FULL'" USE_AP=2
<DM_HOME>/bin/dmrman CTLSTMT="RECOVER DATABASE \
'/dmdata/afc_lab/raft_02/DAMENG/dm.ini' UPDATE DB_MAGIC" USE_AP=2
fi
把命令7-1中的 raft_02 替换为 raft_03 后,在节点 C 同构执行。本地原始记录采用 RESTORE → RECOVER FROM BACKUPSET → UPDATE DB_MAGIC 三步;中间 RECOVER 是否必需,取决于备份集是否需要重做恢复以及当前版本要求。实施时以 DMRMAN 输出、当前版本帮助和随安装手册为准,不机械省略,也不机械强制执行。
RAFT_02 保留自己初始化生成的路径体系,INSTANCE_NAME=RAFT_02,PORT_NUM=<DB_PORT_B>。
RAFT_03 保留自己初始化生成的路径体系,INSTANCE_NAME=RAFT_03,PORT_NUM=<DB_PORT_C>。
检查 CTL、SYSTEM、CONFIG、BAK 等路径不含其他节点目录。
三节点均设置 ARCH_INI=1、ALTER_MODE_STATUS=0,再配置 AFC 相关参数。
为什么更新 DB_MAGIC 三个物理副本来自同一数据基线,但仍需各自可识别的数据库标识。UPDATE DB_MAGIC 必须在目标实例停库且恢复完成后执行。
配置 8-1 三节点 dm.ini 模板
# 节点唯一项
INSTANCE_NAME = RAFT_0X
PORT_NUM = <DB_PORT_X>
# 本次实验共同值
MAX_SESSIONS = 100
RLOG_RAFT_NEED_WAIT = 3
RLOG_RAFT_WAIT_TIME = 1000
RAFT_RECOVER_MODE = 1
ALTER_MODE_STATUS = 0
MAL_INI = 0
ARCH_INI = 1
表 8-1 关键参数解释与边界
| 参数 | 本次值 | 说明 |
|---|---|---|
| RLOG_RAFT_NEED_WAIT | 3 | 有效备库存在日志堆积时,主库按等待参数暂缓日志包发送 |
| RLOG_RAFT_WAIT_TIME | 1000 ms | RAFT 主库延迟发送等待时间;本次取值与官方缺省说明一致 |
| RAFT_RECOVER_MODE | 1 | 本次实测配置保留;公开页未核实完整定义,以当前版本手册为准 |
| ALTER_MODE_STATUS | 0 | 本次配置不允许通过普通 SQL 随意改变模式状态 |
| MAL_INI | 0 | 本次 AFC 不加载传统 MAL 配置;副本通信使用 dmarch.ini 中 XMAL |
| ARCH_INI | 1 | 启用 dmarch.ini 归档配置 |
配置 8-2 RAFT_01
XMAL_HB_INTERVAL = 5
RAFT_HB_INTERVAL = 150
RAFT_VOTE_INTERVAL = 3000
XMAL_IP = <XMAL_IP_A>
XMAL_PORT = <XMAL_PORT_A>
RAFT_SELF_ID = 1
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_02
ARCH_DEST_IP = <XMAL_IP_B>
ARCH_DEST_PORT = <XMAL_PORT_B>
ARCH_DEST_ID = 2
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_03
ARCH_DEST_IP = <XMAL_IP_C>
ARCH_DEST_PORT = <XMAL_PORT_C>
ARCH_DEST_ID = 3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/afc_lab/raft_01/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置 8-3 RAFT_02
XMAL_HB_INTERVAL = 5
RAFT_HB_INTERVAL = 150
RAFT_VOTE_INTERVAL = 5000
XMAL_IP = <XMAL_IP_B>
XMAL_PORT = <XMAL_PORT_B>
RAFT_SELF_ID = 2
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_01
ARCH_DEST_IP = <XMAL_IP_A>
ARCH_DEST_PORT = <XMAL_PORT_A>
ARCH_DEST_ID = 1
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_03
ARCH_DEST_IP = <XMAL_IP_C>
ARCH_DEST_PORT = <XMAL_PORT_C>
ARCH_DEST_ID = 3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/afc_lab/raft_02/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
配置 8-4 RAFT_03
XMAL_HB_INTERVAL = 5
RAFT_HB_INTERVAL = 150
RAFT_VOTE_INTERVAL = 7000
XMAL_IP = <XMAL_IP_C>
XMAL_PORT = <XMAL_PORT_C>
RAFT_SELF_ID = 3
[ARCHIVE_RAFT1]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_01
ARCH_DEST_IP = <XMAL_IP_A>
ARCH_DEST_PORT = <XMAL_PORT_A>
ARCH_DEST_ID = 1
[ARCHIVE_RAFT2]
ARCH_TYPE = RAFT
ARCH_DEST = RAFT_02
ARCH_DEST_IP = <XMAL_IP_B>
ARCH_DEST_PORT = <XMAL_PORT_B>
ARCH_DEST_ID = 2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/afc_lab/raft_03/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
参数关系 三个节点的 XMAL_HB_INTERVAL、RAFT_HB_INTERVAL 应保持一致;RAFT_VOTE_INTERVAL 至少为心跳间隔的两倍,并可错开以降低同时参选概率。3000/5000/7000 是本次实验值,不是所有环境的固定答案。
归档容量风险 ARCH_SPACE_LIMIT=0 是本次实验值,表示不设置空间上限。生产环境不得直接照抄:应依据归档保留策略和磁盘容量设置上限、清理机制与告警阈值,防止归档写满磁盘。
本地材料没有证明三节点存在强制启动先后顺序。可在各节点分别以 mount 方式启动,由 RAFT 自动完成选主与状态转换;不要把 RAFT_01 写成固定 Leader。第 6.1 节中 RAFT_01 为建立初始基线而进行的首次普通启动与正常关闭,是单独步骤。
命令 9-0 三节点创建并验证 LOCAL 归档目录
# 三节点分别由 root 执行,把 0X 替换为 01、02、03
mkdir -p /dmdata/afc_lab/raft_0X/DAMENG/arch
chown dmdba:dinstall /dmdata/afc_lab/raft_0X/DAMENG/arch
chmod 750 /dmdata/afc_lab/raft_0X/DAMENG/arch
sudo -u dmdba test -w /dmdata/afc_lab/raft_0X/DAMENG/arch && echo writable
命令 9-1 各节点 mount 启动模板
nohup <DM_HOME>/bin/dmserver \ /dmdata/afc_lab/raft_0X/DAMENG/dm.ini mount \ > /dmdata/afc_lab/logs/raft_0X.log 2>&1 & tail -n 100 /dmdata/afc_lab/logs/raft_0X.log
SQL 9-1 集群状态检查
SELECT INSTANCE_NAME, RAFT_STAT, TERM_ID,
SYS_MODE, SYS_STATUS, ARCH_STATUS
FROM V$GLOBAL_RAFT_INFO;
DESC V$RLOG_RAFT_INFO;
SELECT * FROM V$RLOG_RAFT_INFO;
SELECT * FROM V$ARCH_STATUS;
SELECT * FROM V$DM_ARCH_INI;
视图列边界 不要假设 V$RLOG_RAFT_INFO 含 INSTANCE_NAME。应先 DESC 再按当前版本实际列查询;错误列导致的 -2111 是监控 SQL 错误,不是集群状态故障。
表 9-1 部署验收清单
| 维度 | 通过标准 | 不通过时处理 |
|---|---|---|
| 节点可见性 | V$GLOBAL_RAFT_INFO 可见三个正常通信节点 | 先查 XMAL 网络、端口和日志 |
| 角色 | 恰好一个 Leader,两个 Follower | 若长期 Candidate,检查选举与多数派 |
| 任期 | 有效节点 Term 已稳定收敛 | 持续增长时检查心跳和网络抖动 |
| 实例状态 | Leader PRIMARY/OPEN,Follower STANDBY/OPEN | 检查启动日志和模式状态 |
| 归档状态 | Leader 的 LOCAL 与两条 RAFT 归档均 VALID | 检查归档目标、ID、路径和权限 |
| 配置加载 | V$DM_ARCH_INI 与配置文件一致 | 确认 ARCH_INI=1、文件名和路径 |
[1] 达梦《DEM 使用手册》,6.3.4 自治容灾集群 DMAFC;AFC 监控与维护章节:https://eco.dameng.com/document/dm/zh-cn/pm/dem_user_manual.html
[2] 达梦《DMDPC 配置》,6.1.4 RAFT/XMAL 归档配置规则:https://eco.dameng.com/document/dm/zh-cn/pm/dpc-dispose.html
[3] 达梦《DMDPC 集群部署》,7.2.6~7.2.8 多副本初始化、恢复与配置流程:https://eco.dameng.com/document/dm/zh-cn/pm/dpc-cluster-deploy.html
[4] 达梦《相关系统表和动态视图》,VRLOG_RAFT_INFO、VARCH_STATUS、VDM_ARCH_INI、VGLOBAL_RAFT_INFO:https://eco.dameng.com/document/dm/zh-cn/pm/dpc-system_table-dynamic_view.html
[5] 达梦《DM 物理存储结构》,RAFT 日志等待参数与归档类型:https://eco.dameng.com/document/dm/zh-cn/pm/physical-storage
[6] Ongaro & Ousterhout, In Search of an Understandable Consensus Algorithm,Leader election、log replication、safety:https://raft.github.io/raft.pdf
达梦社区地址:https://eco.dameng.com
文章
阅读量
获赞
