文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

日志回放性能增强

可获得性

本特性自MogDB 5.0.2版本开始引入。

特性简介

MogDB提升了WAL日志回放功能。

客户价值

在主备部署下,可提升备机redo日志回放性能。在TPCC场景下(1000仓,100+并发,同/异步一主一备),备机表级并行回放性能提升50%,RTO时间缩短三分之一。

特性描述

在数据库主备系统中,备库从主库获取WAL日志,然后通过回放WAL日志的方式同步主库数据。当主库发生故障无法提供服务时,备库可以接管主库服务能力。在这个过程中,一般需要备库回放完主库发来的所有WAL日志才能升主然后提供服务。

目前备库回放性能不佳,导致故障转移时间过长,或者在主备切换演练时切换操作时间过长。一方面会导致数据库长时间无法提供服务,从而导致用户业务长时间停止;另一方面,这会导致备库数据相较主库数据延迟过长的时间,致使备库WAL文件堆积占用磁盘空间。

MogDB提供并行回放机制,使得在回放过程中多个线程同时工作(需设置recovery_max_workers = 4)。本特性主要对表级别并行回放进行优化,并提供回放性能观测视图,查看回放状态。具体优化点如下:

  • 增加starup线程移交WAL日志的批次,减小WAL记录流转导致的性能下降。
  • 更改表分发策略,使redo任务更均衡的分发到各个工作线程。
  • 观测视图:可查看redo过程各个阶段的耗时和各种WAL回放状态(仅在备机上有有效数据)。

相关页面

参数

序号 参数描述
1 enable_batch_dispatch:开启“批量优化+负载均衡优化”开关。
2 enable_time_report:是否统计redo_time_detail()所需的信息。
3 parallel_recovery_batch:在页级别并行恢复时,startup线程暂存wal记录的数量。
4 parallel_recovery_timeout:页级别并行恢复情况下,在一段时间内没有新wal到达时,立即分发目前在startup暂存的WAL记录。
5 parallel_recovery_dispatch_algorithm:页级别并行恢复情况下,startup 线程分发的算法。

函数视图

序号 函数描述
1 redo_stat_detail():用于查询在最近一段时间内,备库接受wal、flush wal、apply wal的速度。用户可以通过这个视图对备机的wal处理能力有一个直观的认知。
2 redo_time_detail():用于在客户现场出现redo慢问题时,为分析redo问题提供数据依据。
3 dispatch_stat_detail():用于查询各个worker线程的redo负载, 以此判断各个redo worker的负载是否均衡。
Copyright © 2011-2024 www.enmotech.com All rights reserved.