§ GreatSQL 高可用


针对 MGR 进行了大量改进和提升工作,支持地理标签、仲裁节点、读写动态 VIP、快速单主模式、智能选主等特性,并针对流控算法、事务认证队列清理算法、节点加入&退出机制、recovery 机制等多个 MGR 底层工作机制算法进行深度优化,进一步提升优化了 MGR 的高可用保障及性能稳定性。

  • 支持 地理标签 特性,提升多机房架构数据可靠性。
  • 支持 仲裁节点 特性,用更低的服务器成本实现更高可用。
  • 支持 读写动态 VIP 特性,高可用切换更便捷,更快实现读负载均衡。支持 当主节点切换时,主动关闭当前活跃连接,缩短应用端不可用时长。
  • 支持 快速单主模式,在单主模式下更快,性能更高。
  • 支持 智能选主 特性,高可用切换选主机制更合理。
  • 优化 流控算法,使得事务更平稳,避免剧烈抖动。
  • 支持 记录 MGR 网络通信开销超过阈值的事件,用于进一步分析和优化。
  • 支持在跨机房容灾场景中的 主主双向复制防止回路 机制。
  • 优化了节点加入、退出时可能导致性能剧烈抖动的问题。 GreatSQL 解决了事务加入、退出时性能抖动问题
  • 解决了个别节点上磁盘空间爆满时导致 MGR 集群整体被阻塞的问题。
  • 优化事务认证队列清理算法,高负载下不复存在每 60 秒性能抖动问题。 GreatSQL 解决了事务认证队列清理时每60秒性能抖动问题
  • 解决了长事务造成无法选主的问题。
  • 修复了 recover 过程中长时间等待的问题。
  • 优化了 MGR 大事务传输时压缩超过限制的处理机制。

在 MGR 中有大事务超过group_replication_compression_threshold阈值时会进行 LZ4 压缩,但由于 LZ4 自身限制,可能导致压缩失败报错,事务执行失败,报告类似下面的错误

[GCS] Gcs_packet's payload is too big. Only packets smaller than 2113929216 bytes can be compressed. Payload size is 2197817290
1

GreatSQL 对此机制进行调整优化,实现以下两点目标:

  1. 当事务大小超过group_replication_compression_threshold阈值则启动压缩。

  2. 但当事务大小超过 LZ4 压缩限制时不再报错,改成继续使用原始未压缩的事务数据进行传输,即类似设置group_replication_compression_threshold=0(不启用压缩)时的效果。

其他更多高可用的改进提升方面更详细的内容请参考:其他高可用优化提升

扫码关注微信公众号

greatsql-wx