注册
浅谈达梦数据库的事务一致模式与高性能模式
培训园地/ 文章详情 /

浅谈达梦数据库的事务一致模式与高性能模式

Fan诚 2023/07/12 1258 0 0

一、前言
归档是实现数据守护系统的重要技术手段,根据功能与实现方式的不同,DM 数据库的 归档可以分为 5 类:本地归档、远程归档、实时归档、即时归档和异步归档。其中,本地 归档和远程归档日志的内容与写入时机与数据库模式相关;主库 Redo 日志写入联机日志文 件后,再进行本地归档和远程归档;备库收到主库产生的 Redo 日志后,直接进行本地归档 和远程归档,同时启动 Redo 日志重演。即时归档(Timely)在主库将 Redo 日志写入联机日志文件后,通过 MAL 系统将 Redo 日志发送到备库。即时归档与实时归档的主要区别是 Redo 日志的发送时机不同。一个主库 可以配置 1~8 个即时备库。 根据备库重演 Redo 日志和响应主库时机的不同,即时归档分为两种模式:事务一致模式和高性能模式。即时归档模式根据配置文件 dmarch.ini 中的 ARCH_WAIT_APPLY 配置项(默认值为 1)来确定,1 表示事务一致模式,0 表示高性能模式。
今天主要介绍即时归档的两种模式:事务一致模式,高性能模式。
二、事务一致模式与高性能模式
1.事务一致模式:
主库事务提交触发 Redo 日志刷盘和即时归档,备库收到主库发 送的 Redo 日志,并重演完成后再响应主库。主库收到备库响应消息后,再响应用户的提交 请求。事务一致模式下,同一个事务的 SELECT 语句无论是在主库执行,还是在备库执行, 查询结果都满足 READ COMMIT 隔离级要求。
image.png

2.高性能模式:
备库收到主库发送的 Redo 日志后,马上响应 主库,再启动日志重演。高性能模式下,备库与主库的数据同步存在一定延时(一般情况下 延迟时间非常短暂,用户几乎感觉不到),不能严格保证事务一致性。
image.png
三、事务一致模式与高性能模式的优缺点
事务一致模式:
优点:保证多个节点中数据的值是一致的,保证了数据的强一致,适合对数据强一致要求很高的场景。
缺点:实现复杂,牺牲了可用性,对性能影响较大,不适合高并发高性能场景。
高性能模式:
优点:保证了主库的高性能,能快速响应用户请求,适合高并发高性能场景
缺点:备库与主库的数据同步存在一定的延时情况时(一般情况下 延迟时间非常短暂,用户几乎感觉不到),不能严格保证事务一致性。如果主备数据有一定差异,会导致主备无法实时切换,需等待备库重演完成后,才能进行切换。如果发生网络中断的情况下,可能存在误切的情况,导致主备分裂。

对比:
事务一致模式是牺牲了性能,换取了主备库之间数据强一致要求。
高性能模式是牺牲了数据强一致要求,换取了性能上的提升。

四、常见问题
1.在事务一致模式下经常会遇到因各种原因导致备库运行缓慢,同时也会拖慢主库。前面提到事务一致模式下的特点就是会等待备库重演完redo日志后再响应主库,若备库的硬件条件不足,或者主库长时间处于高并发的场景时,会导致备库重演特别慢,因此无法即时响应主库,主库也无法提交完成,实际表现出来的现象类似主库负载明明不是很高,但是主库就是运行很缓慢,原因就在此处。
2. 即时归档中,主库在将 Redo 日志写入本地联机 Redo 日志文件之后,发送 Redo 日志到备库之前出现故障,导致主备库数据不一致,为了继续提供服务,执行备库强制接管。 此时,当故障主库重启后,就会引发组分裂。因此,推荐使用实时归档,实时归档也分为两种模式:事务一致模式和高性能模式,这两种模式的具体含义和即时归档中完全相同。

五、举例说明
1.环境准备
主库 备库
ip 192.168.255.138 192.168.255.137
归档状态 实时归档 实时归档

2.实际测试
1)搭建好主备库
2)修改dmarch.ini配置文件内的ARCH_WAIT_APPLY = 1参数为1(事务一致)
image.png
3)设置主备之间网络延迟
sudo tc qdisc add dev ens33 root netem delay 3s
image.png

4)启动sql脚本,批量插入数据
image.png
5)观察主备之间数据情况,在事务一致模式下,主备完全保持一致性
主库:
image.png
备库:
image.png
6)删除主备延迟
sudo tc qdisc del dev ens33 root

7)修改dmarch.ini配置文件内的ARCH_WAIT_APPLY = 0参数为0(高性能)
image.png
8)重启主备集群
su - dmdba
cd /home/dmdba/dm/dmdbms/bin
./dmserverd restart
./dmwatcherd restart

9)重复上面步骤3,4

10)观察主备之间数据情况,在高性能模式中,某些极端条件下,主备的数据不一致
主库:
image.png
备库:
image.png

3.结论
事务一致性模式下保证了主备库数据一致性,但是牺牲了部分性能
高性能模式下,提升了主备数据同步效率,但是不能保证主备库数据一致性

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服