注册
DM9 新特性探索之redo日志扩展名专项测试方案【#达梦数据库 #达梦同行者征文】
专栏/技术分享/ 文章详情 /

DM9 新特性探索之redo日志扩展名专项测试方案【#达梦数据库 #达梦同行者征文】

羽书飞影 2026/09/04 167 5 0
摘要

一、测试概述

1.1 测试背景

金融行业客户在数据库管理系统(Oracle、DM 等)的部署和维护规范要求中提出:所有数据库需高效确保系统可维护性、可操作性和安全性;同时要求在所有新增及现有的数据库实例中,重做日志文件必须统一使用 .redo 作为文件扩展名。为确保此项规范在开发、部署、运维全流程中得到有效落实,且不影响现有业务的稳定运行,特进行本次专项测试。

1.2 测试目的

验证达梦9主备集群在使用 .redo 扩展名的环境下,以下四项核心能力正常:

  • 主备搭建全流程中 redo 日志文件名与路径的正确性
  • 联机日志切换时新文件是否延续 .redo 后缀
  • 数据持续写入场景下 redo 日志的稳定性(增长、切换、归档、主备同步)
  • 主备切换(Switchover / Takeover)后新主库日志命名合规

1.3 测试范围

后缀校验: 主备节点初始化后 redo 日志文件名是否符合 .redo 规范
联机日志切换: 手动/自动切换时新文件是否延续 .redo后缀
持续写入稳定性: 高并发写入下日志持续增长、无中断、无报错
主备归档同步: 归档日志(若开启)是否也遵循 .redo 命名
主备切换: Switchover / Takeover 后新主库日志是否正常

1.4 环境要求

最低 3节点(主 + 备 + 备),建议如下配置:
Node1 192.168.245.200 DM9DW_01 主库
Node2 192.168.245.200 DM9DW_02 备库
Node3 192.168.245.200 DM9DW_03 备库
数据库版本 9.1.0.26

二、集群搭建与 Redo 后缀校验

2.1 主库初始化(指定 .redo 后缀)

在3个节点上分别执行 dminit,使用 RLOG_POSTFIX_NAME=redo 参数:
主库初始化:

./dminit path=/dmdata/dm8/ DB_NAME=DM9_DW01 LOG_SIZE=256 RLOG_POSTFIX_NAME=redo SYSDBA_PWD=SYSDBA123qwe SYSAUDITOR_PWD=SYSDBA123qwe

image.png
2备库初始化(路径保持一致):

./dminit path=/dmdata/dm9/ DB_NAME=DM9_DW02 LOG_SIZE=256 RLOG_POSTFIX_NAME=redo SYSDBA_PWD=SYSDBA123qwe SYSAUDITOR_PWD=SYSDBA123qwe
./dminit path=/dmdata/dm9/ DB_NAME=DM9_DW03 LOG_SIZE=256 RLOG_POSTFIX_NAME=redo SYSDBA_PWD=SYSDBA123qwe SYSAUDITOR_PWD=SYSDBA123qwe

TestCase-01:初始化后后缀校验
验证步骤:
查看当前正在使用的日志文件:

SELECT FILE_NAME, FILE_SEQNO, STATUS$, GROUP_ID FROM V$RLOGFILE;

操作系统层面验证:

ls -la /dmdata/dm9/DM8_DW01/*.redo
ls -la /dmdata/dm9/DM8_DW02/*.redo
ls -la /dmdata/dm9/DM8_DW03/*.redo

校验标准:
V$RLOGFILE 中所有记录的 PATH 字段均以 .redo 结尾
物理文件系统下确实存在对应 .redo 文件
不存在遗留的 .log 文件
TestCase-02:主备搭建后校验
查询 redo 日志文件路径:

SELECT * FROM V$RLOGFILE;

image.png
校验标准:

  • 备库 redo 接收与应用延迟 ≤ 5s
  • 备库 V$RLOGFILE 同样为 .redo 后缀
  • 三、数据持续插入时 Redo 稳定性测试

TestCase-03:单线程批量插入测试
预置条件:创建测试表与序列

CREATE TABLE REDO_TEST (ID INT PRIMARY KEY, INSERT_TIME DATETIME, DATA VARCHAR(4000));
CREATE SEQUENCE SEQ_REDO;

image.png
执行步骤:
批量插入 100 万行数据,每 5000 行提交一次。

BEGIN FOR i IN 1..1000000 LOOP INSERT INTO REDO_TEST VALUES (i, SYSDATE, LPAD('A', 3900, 'A')); IF MOD(i, 5000)=0 THEN COMMIT; END IF; END LOOP; COMMIT; END;/

image.png
并发监控(另开会话执行):

SELECT COUNT(*) FROM V$LOG_HISTORY; —— 统计日志切换次数

image.png

SELECT NAME,FIRST_TIME,NEXT_TIME,ARCHIVED,STATUS,ARCH_TYPE FROM V$ARCHIVED_LOG; —— 查看归档

image.png
–生成redo结尾归档正常
image.png
校验标准:

  • 插入过程无报错,100 万行全部成功
  • redo 日志按 LOG_SIZE 满后自动切换到下一个 .redo 文件
  • V$LOG_HISTORY 记录正常递增
  • 无 REDO_LOG_BUFFER FULL 等待事件
    TestCase-04:大事务极端场景
    执行步骤:单事务插入 50 万行后回滚,验证大事务期间 redo 日志行为。
BEGIN FOR i IN 1..500000 LOOP INSERT INTO REDO_TEST VALUES (SEQ_REDO.NEXTVAL, SYSDATE, DBMS_RANDOM.STRING('U', 3600)); END LOOP; ROLLBACK; END;/

image.png
校验标准:

  • 大事务期间 redo 日志正常写入,不因日志满而阻塞
  • ROLLBACK 后 redo 日志空间正常释放(循环复用)
  • 备库不会因主库回滚出现异常

四、主备切换后 Redo 后缀验证

TestCase-05:Switchover 正常切换
执行步骤:
在主库执行切换:

 "switchover DAMENG_PRIM DAMENG_STBY"

切换后在新主库(原备库)查询:

SELECT FILE_NAME, STATUS$ FROM V$RLOGFILE;

在新备库(原主库)同样查询验证
–登录新的主备库查看redo生成情况

SELECT NAME,FIRST_TIME,NEXT_TIME,ARCHIVED,STATUS,ARCH_TYPE FROM V$ARCHIVED_LOG;

image.png
image.png
校验标准:

  • 切换后新主库 V$RLOGFILE 仍为 .redo 后缀
  • 新备库 redo 文件同样保持 .redo 后缀
  • 无 redo 文件损坏或丢失报错
    TestCase-06:Takeover 故障切换
    执行步骤:
  • 模拟主库故障(如 kill 主库进程)
  • 登录监视器执行强制切换:tackover
    切换后结果符合预期,查看redo、归档,生成正常
    image.png
    校验标准:
  • 强制切换后新主库 redo 日志后缀不变(仍为 .redo)
  • alert log 无 redo 损坏或异常信息
  • 应用可正常连接并写入数据

五、测试结果判定标准汇总

image.png

六、注意事项

  1. .redo 后缀仅在初始化时指定:dminit 的 RLOG_POSTFIX_NAME 参数在建库后不可修改,集群所有节点必须在初始化时统一指定。
  2. 扩容节点需保持一致:后续新增节点的 dminit 也必须带上 RLOG_POSTFIX_NAME=redo,否则集群日志命名不一致。
  3. 归档日志后缀独立控制:归档日志文件名由 ARCH_FILE_NAME_FORMAT 控制,如需归档也带 .redo 后缀需单独设置,不在本测试范围内。
  4. 压测期间需同时监控 OS 层:关注磁盘 IOPS、吞吐量,排除存储侧瓶颈导致的 redo 写入异常假象。
  5. 备库 apply 延时关注:如果压测过程中备库延时持续增长,需要排查网络带宽或备库写入性能瓶颈。

七、附录

关键视图
image.png

【#达梦数据库 #达梦同行者征文】

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服