3

MariaDB binlog压缩

 2 years ago
source link: https://ttys3.dev/post/mariadb-binlog-compress/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

MariaDB binlog压缩

2021-03-07

:: 荒野無燈

:: Mod 2021-03-21(9c572f9)

#mariadb  #binlog 

March 21, 2021

先 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/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK