§ GreatSQL 高可用


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

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