可获得性
本特性自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的负载是否均衡。 |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




