达梦数据守护是一种基于数据库日志(REDO)的物理级高可用解决方案。其核心思想是:主库将其产生的所有物理日志同步到备库,备库通过重演(Apply)这些日志,使其数据状态与主库保持一致,从而实现数据的冗余和高可用。
switchover
)。它整合所有守护进程上报的信息,是集群管理的控制台。FILE_LSN
:已持久化到磁盘的日志的最大LSN,是数据持久化的关键标志。APPLY_LSN
(备库):备库已重演完成的最大LSN。通过对比主库的FILE_LSN
和备库的APPLY_LSN
,可以精确监控数据同步的进度和一致性。主库并非一条条地发送日志,而是将多条REDO日志打包成一个日志包(RLOG_PKG),以包为单位发送给备库,以此减少网络开销和提高效率。
数据守护支持多种归档模式,决定了日志的同步时机和数据一致性级别。
特性 | REALTIME (实时) | TIMELY (及时) | SYNC (同步) |
---|---|---|---|
核心机制 | 日志包先发往备库,再写入主库本地日志 | 先写入主库本地日志,再发往备库 | 日志在主库归档后,异步批量发送至备库 |
数据一致性 | 高 | 高 | 最终一致 |
性能影响 | 对主库性能有一定影响 | 对主库性能影响相对较小 | 对主库性能影响最小 |
故障处理 | 复杂,需KEEP_PKG 机制防止数据分歧 |
较复杂 | 简单,失败后自动异步重试 |
适用场景 | 要求高可用和强一致性的核心业务 | 要求高可用和强一致性的核心业务 | 异地容灾、读写分离、非核心业务 |
KEEP_PKG
机制:为防止主库在发送成功但未本地落盘时故障,导致主备数据分歧,备库会缓存一个日志包,待收到下一个包确认主库正常后,才重演前一个包。这是实现事务一致性模式的基础**。KEEP_PKG
机制。Suspend
状态,暂停数据同步流,并等待守护进程发起故障处理流程。有两个核心作为权衡的维度,从而决定了所选用的主备模式不同:
总览表:
对比维度 | 异步主备 | 同步主备 | 实时主备 (达梦) | 实时高性能主备 | Raft主备 |
---|---|---|---|---|---|
核心机制 | 主库事务提交后,异步发送日志到备库。不等待备库确认。 | 主库事务提交前,同步发送日志到备库并等待其写入磁盘。 | 指日志持续流式地从主库发送到备库。通常配置为异步或近似同步。 | 优化方向:在实时同步的基础上,通过硬件(RDMA/SSD)、网络(高速网卡)、软件算法极致优化同步效率。 | 基于共识算法。主库(Leader)需将日志复制到多数派节点后才能提交,自动选主。 |
数据一致性 | 最终一致 (RPO > 0, 有数据丢失风险) | 强一致 (RPO = 0, 理论上无数据丢失) | 最终一致 ~ 强一致 (取决于配置是ASYNC还是SYNC) | 强一致 (目标是让强一致的代价降到最低) | 强一致 (基于多数派决议,RPO = 0) |
性能 (吞吐量 & 延迟) | 最高 (主库性能无任何等待开销) | 最低 (延迟取决于最慢的备库IO和网络) | 高 ~ 中 (ASYNC模式性能接近异步,SYNC模式性能接近同步) | 非常高 (在强一致的前提下,追求极致的低延迟和高吞吐) | 中 (延迟取决于多数派节点的响应速度) |
可用性 (故障切换) | 自动或手动,但切换会丢失数据 | 通常依赖外部工具,切换逻辑复杂 | 高可用 (HA) 由dmwatcher守护进程自动切换 | 高可用 (HA) | 高可用 (HA) 内置自动选主,是架构一部分 |
优点 | 性能极高,对主库影响最小,网络距离影响小 | 数据安全性最高,强一致性 | 兼顾性能和数据实时性,支持自动故障转移 | 提供了强一致性和高性能的融合方案 | 内置高可用,自动容错,无单点故障,协议标准 |
缺点 | 数据不一致风险最高 | 性能开销大,备库/网络故障会阻塞主库 | 配置和管理比纯异步或同步复杂 | 成本和实现复杂度最高,严重依赖底层基础设施 | 资源开销大(至少3节点),写性能受限于多数派 |
典型场景 | 日志归档、非核心业务、读写分离的读库、异地容灾 | 核心交易系统(如银行转账)、对数据一致性要求极严的场景 | 通用OLTP系统、企业核心应用、追求高可用的业务 | 高频交易、实时数据分析、金融核心系统等土豪场景 | 分布式系统组件(Etcd, Consul)、NewSQL数据库(TiDB)、微服务治理 |
同步主备是一种非常保守且安全的数据冗余策略,其核心在于通过等待来保证数据的强一致性。
dmwatcher
)来监控主备状态和执行故障切换。异步主备是一种追求极致性能的策略,其核心是主库优先处理本地事务,数据同步是后台任务。
“实时”是指日志传输方式是持续流式的
SYNC
(近似同步) :主库需要等待备库确认收到日志(但不一定持久化到磁盘)后才提交。性能较低,数据更安全。ASYNC
(异步) :主库不等待备库确认。性能更高,数据有风险。目标是打造低延迟、高吞吐的强一致性系统。
Raft是一种分布式共识算法,它重新定义了主备模式,通过算法内置的民主机制实现强一致和高可用。
不同主备同步机制在资源消耗、RPO、RTO上表现各异,也就决定了它们的适用场景。
业务需求 | 推荐模式 | 理由 |
---|---|---|
绝对数据安全,不惜性能代价 | 同步主备 | RPO=0 是唯一目标 |
极致性能,可接受数据丢失 | 异步主备 | 资源消耗最低,对主库无影响 |
业务高可用,兼顾性能与数据安全 | 实时主备 (配置 SYNC ) |
在 RPO≈0 和 RTO很低 之间取得了最佳平衡 |
构建分布式系统,需要天然高可用 | Raft主备 | 内置强一致、自动容错和无中心化,是分布式系统的基石 |
文章
阅读量
获赞