PolarDB 物理复制刷脏约束问题和解决
💡
原文中文,约2900字,阅读约需7分钟。
📝
内容提要
本文讨论了物理复制中的刷脏约束问题及其解决方案,包括LogIndex和copy page机制、多版本和Aurora引擎。热点页是该问题的主要原因。
🎯
关键要点
- 物理复制中的刷脏约束问题导致ro节点无法恢复。
- 热点页是导致刷脏约束的主要原因。
- 当rw节点的最老页面超过parse buffer大小时,死锁形成。
- copy_page机制在刷脏时无效,需强行刷脏。
- 开启多版本LogIndex可以规避刷脏约束问题。
- LogIndex允许ro节点丢弃parse buffer,避免崩溃。
- 热点页场景是无法恢复的,且不一定是用户修改的页面。
- IO延迟影响redo和page的推进速度,导致刷脏约束问题。
- 多版本和Aurora通过去掉约束2解决了parse buffer满的问题。
- Aurora可以丢弃buffer pool中的页面,避免脏页积累。
➡️