- Published on
MariaDB binlog压缩
- Authors
- Name
- ttyS3
先 mark 记录一下。
log_bin_compress——这个配置决定了是否可以压缩二进制日志。这个增强功能是 MariaDB 独有的,因此 MySQL 不支持。
https://www.infoq.cn/article/mariadb-vs-mysql
binlog压缩 为了减小binlog的存储开销。在TenDB中,基于ZLIB算法实现了binlog压缩的功能。该功能可以在运行中开启和关闭,并且适用于statement,row,mixed格式。
压缩 开启Binlog压缩:
```shell
set global log_bin_compress=ON ```
Binlog压缩阈值:
```shell
set global log_bin_compress_min_len=256 ```
在开启压缩功能的前提下,binlog字段长度大于256的event,符合压缩条件。
经过测试,在通常情况下,启用binlog压缩功能,可以达到7-9的压缩比。是以CPU为代价缓解了IO压力的良好实践。
解压 有两种解压的方式可以选择:
让binlog在IO线程中解压:
```shell
set global relay_log_uncompress = ON ```
让binlog在sql线程中解压:
```shell
set global relay_log_uncompress = OFF ```
如果slave机器,relay-log空间够,可以set global relay_log_uncompress=ON(默认配置),在binlog在IO线程中解压。 如果slave机器,relay-log空间不够,可以set global relay_log_uncompress=OFF,让binlog在sql线程中解压,但是这样可能会导致sql线程变慢。 但slave都有并行同步能力,所以在sql线程解压一般不会对运行速度有很大影响。
兼容性
新增了4种事件类型: QUERY_COMPRESSED_EVENT表示statement格式下压缩后的DML事件; WRITE_ROWS_COMPRESSED_EVENT,UPDATE_ROWS_COMPRESSED_EVENT和DELETE_ROWS_COMPRESSED_EVENT分别表示row格式下插入,更新和删除在压缩后的事件。
推荐使用TenDB的mysqlbinlog工具进行binlog操作。
https://tendbcluster.com/book-cn/Documentation/tendb/binlog-compress.html
log_bin_compress https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#log_bin_compress
log_bin_compress_min_len https://mariadb.com/kb/en/replication-and-binary-log-system-variables/#log_bin_compress_min_len
https://mysql.wisborg.dk/2020/05/07/mysql-compressed-binary-logs/
https://mariadb.com/kb/en/authentication-plugins/
https://mariadb.com/kb/en/caching_sha2_password-authentication-plugin/