MySQL slave_compressed_protocol 压缩率测试

slave_compressed_protocol 参数用于控制MySQL主从复制是否使用压缩协议,基于ROW格式的binlog,其数据量一直是一个比较大的问题,开启binlog复制压缩对于缓解binlog数据量大导致的网络带宽问题有一定的帮助,那么开启slave_compressed_protocol参数后,网络传输的binlog压缩效果如何?对其他性能是否会产生影响?本文通过实验进行验证。

1、测试环境:
  • 16核32G虚拟机
  • MySQL版本:5.7.19
  • 1主1从,异步复制
2、测试结果:
主库cpu从库cpu主库send主库recv从库send从库recv
未压缩22%20%6.18MB/s3.49MB/s108KB/s5.38MB/s
压缩22%20%3.64MB/s3.52MB/s88.5KB/s2.65MB/s

注:
开启或者关闭slave_compressed_protocol参数,需要重启复制,让该参数生效。

3、结论
  1. 开启slave_compressed_protocol参数,压缩效果明显,网络数据传输量约为未开启一半,压缩率50%。
  2. 开启slave_compressed_protocol参数,主从库cpu负载没有明显的增长。

注:
MySQL 5.7 和 8.0 的某些版本在slave_compressed_protocol=ON与半同步复制一起使用时,会触发Bug。具体见链接:

MySQL 5.7 Bug slave_compressed_protocol 与半同步复制同时开启,导致主库写入卡住

文章评论

0条评论