数据守护(Data Watch)是达梦数据库提供的一种集成化的高可用、高性能数据库解决方案,也是数据库异地容灾的首选方案。通过部署数据守护,可以在硬件故障、自然灾害等极端情况下保障数据安全,并实现数据库服务的快速恢复。
达梦数据守护的实现原理非常简洁:将主库(生产库)产生的Redo日志传输到备库,备库接收并重新应用(重演)这些日志,从而实现备库与主库的数据同步。
与传统的备份恢复技术相比,数据守护的最大优势在于恢复速度——通过数据守护恢复数据库服务只需数秒,而通过还原备份可能需要数小时甚至更长时间,且恢复时间基本不受数据规模影响。
达梦数据守护体系由五大核心组件构成,各组件协同工作,保障集群的稳定运行。
| 组件 | 部署位置 | 核心功能 |
|---|---|---|
| 主库(Primary) | 生产服务器 | 承担读写业务,产生Redo日志,是数据变更的源头 |
| 备库(Standby) | 容灾服务器 | 接收并重演Redo日志,保持与主库数据一致,可提供只读服务 |
| 守护进程(dmwatcher) | 数据库服务器 | 监控数据库状态,处理故障切换,是集群的“神经中枢” |
| 监视器(dmmonitor) | 独立服务器(推荐) | 提供全局集群视图,执行管理命令,支持自动/手动切换 |
| MAL通信系统 | 内置于数据库 | 基于TCP的节点间高速通信通道,负责Redo日志传输 |
数据守护的本质是“日志驱动的数据一致性保障”,核心流程分为三步:
LSN是保证一切有序和一致性的核心机制:
达梦支持多种归档模式,决定了日志同步时机和数据一致性级别:
| 模式 | 同步时机 | 一致性 | 性能 | 适用场景 |
|---|---|---|---|---|
| REALTIME(实时归档) | 日志写入联机日志文件前发送到备库 | 强一致(RPO≈0) | 中等 | 核心业务,要求数据零丢失 |
| TIMELY(即时归档) | 日志写入联机日志文件后发送到备库 | 强一致(RPO≈0) | 中等 | REALTIME的替代方案 |
| ASYNC(异步归档) | 主库归档后异步批量发送 | 最终一致(RPO>0) | 高 | 异地容灾、日志分析 |
| SYNC(同步归档) | 主库归档后同步发送 | 最终一致 | 较高 | 读写分离场景 |
REALTIME模式的KEEP_PKG机制:为防止主库在发送成功但未本地落盘时故障导致数据分歧,备库会缓存日志包,待收到下一个包确认主库正常后才重演前一个包。
达梦数据守护提供多种解决方案,用户可根据需求灵活选择:
| 方案类型 | 架构特点 | 主要用途 | 备库数量 |
|---|---|---|---|
| 实时主备 | 主库+实时备库,备库提供只读服务 | 保障可用性、提高数据安全性 | 1~8个 |
| 读写分离集群 | 主库+即时/实时备库,JDBC自动分流只读操作 | 提升系统吞吐量 | 1~8个 |
| MPP主备 | 为MPP集群每个节点配置主备系统 | 分布式数据库的高可用 | 按需 |
| DMDSC主备 | DMDSC集群与单节点互为主备 | 共享存储集群的高可用 | - |
实时主备的工作流程:主库生成Redo日志后,日志线程先将RLOG_PKG发送到备库;备库校验合法性后保留在内存中,加入Apply任务队列进行重演,并响应主库;主库收到所有备库的响应后才将日志写入联机日志文件。
读写分离集群的价值:通过配置事务一致模式保证主备数据一致性,配合JDBC、DPI等接口,将只读操作自动分流到备库,有效降低主库负载。
| 模式 | 配置要求 | 故障处理方式 | 适用场景 |
|---|---|---|---|
| 自动切换(AUTO) | 必须部署确认监视器 | 系统自动将备库切换为主库 | 对可用性要求高的生产环境 |
| 手动切换(MANUAL) | 可部署普通监视器 | 需人工执行切换命令 | 测试环境或需人工确认的场景 |
| 类型 | MON_DW_CONFIRM | 核心功能 | 部署要求 |
|---|---|---|---|
| 确认监视器 | 1 | 具备状态确认和自动接管功能 | 故障自动切换模式下必须部署 |
| 普通监视器 | 0 | 监控状态、执行切换命令 | 最多可同时启动10个 |
确认监视器的重要性:在自动切换模式下,必须部署确认监视器,否则出现数据库故障时会导致服务中断。
搭建数据守护集群需要配置以下核心文件:
| 文件 | 作用 | 关键参数 |
|---|---|---|
| dm.ini | 实例基本配置 | INSTANCE_NAME, PORT_NUM, MAL_INI, ARCH_INI |
| dmmal.ini | 节点间MAL通信配置 | MAL_HOST, MAL_PORT, MAL_DW_PORT |
| dmarch.ini | 归档配置 | ARCH_TYPE(REALTIME/TIMELY/ASYNC), ARCH_DEST |
| dmwatcher.ini | 守护进程配置 | DW_TYPE(GLOBAL/LOCAL), DW_MODE(AUTO/MANUAL) |
| dmmonitor.ini | 监视器配置 | MON_DW_CONFIRM(0普通/1确认) |
配置规范要点:
原主库修复后,会自动以备库身份重新加入集群,通过增量日志同步追赶新主库数据,无需人工重建实例。
bash
# 登录监视器
login
SYSDBA
******
# 执行主备切换
choose switchover GRP1
switchover 目标实例名
| 指标 | 达梦数据守护可实现的能力 |
|---|---|
| RPO(恢复点目标) | REALTIME/TIMELY模式下可达到0(零数据丢失) |
| RTO(恢复时间目标) | 秒级(通常数秒内完成切换) |
| 最大备库数 | 单主库最多可配置8个实时备库 |
| 故障检测时间 | 可配置(默认约20-30秒) |
达梦数据守护具备以下核心特性:
| 特性 | 说明 |
|---|---|
| 完整功能主库 | 主库提供完整数据库服务,功能限制极少 |
| 活动备库 | 备库在Open状态下执行数据同步,支持只读访问和临时表修改 |
| 多重数据保护 | 可同时配置多个备库,为数据安全提供全方位保护 |
| 高可用性 | 切换过程数秒内完成,配合VIP漂移实现客户端无感切换 |
| 故障自动重连 | 接口会自动将连接迁移到新主库,无需修改应用 |
| 故障库自动重加入 | 故障库恢复后自动转换为备库重新加入集群 |
| 历史数据自动同步 | 故障备库恢复后自动同步历史数据 |
| 滚动升级 | 可在不中断服务的情况下滚动升级数据库版本 |
达梦社区技术 https://eco.dameng.com
文章
阅读量
获赞
