mysql binlog最大是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql binlog最大是多少相关的知识,希望对你有一定的参考价值。

之前有做过一个 binlog 压缩能节约多少空间的测试,效果上看还是比较理想的,可以节约一半以上的空间。但是这个又引出了一个新的问题,那就是这个功能对性能有多大影响呢?于是我又在测试环境试了一下,测试环境的物理配置如下。

根据之前的经验这套测试环境在 120 个表 + 240 个并发的情况,可以取得一个性能上的极大值;所以在这里就直接使用这个作为测试压力。

8.0.19 场景

第一步:安装。

dbma-cli-single-instance --port=3306 --max-mem=131072 \\--pkg=mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz install

第二步:创建测试用户。

create user sysbench@'%' identified by 'sysbench';create database tempdb;grant all on tempdb.* to sysbench@'%';

第三步:填充数据并进行压力测试。

sysbench --mysql-host=192.168.100.10  --mysql-port=3306 --mysql-user=sysbench \\--mysql-password=sysbench --tables=120 --table_size=100000 --mysql-db=tempdb \\--time=3600 --threads=240 oltp_point_select prepare
sysbench --mysql-host=192.168.100.10  --mysql-port=3306 --mysql-user=sysbench \\--mysql-password=sysbench --tables=120 --table_size=100000 --mysql-db=tempdb \\--time=3600 --threads=240 oltp_point_select run

性能表现。

资源消耗情况。

8.0.20 + binlog 压缩

第一步:安装。

dbma-cli-single-instance --port=3306 --max-mem=131072 \\--pkg=mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz install

第二步:创建测试用户。

create user sysbench@'%' identified by 'sysbench';create database tempdb;grant all on tempdb.* to sysbench@'%';
-- dbm-agent 默认会开启 binlog 压缩show global variables like 'binlog_transaction_compression%';+-------------------------------------------+-------+| Variable_name                             | Value |+-------------------------------------------+-------+| binlog_transaction_compression            | ON    || binlog_transaction_compression_level_zstd | 3     |+-------------------------------------------+-------+2 rows in set (0.00 sec)

第三步:填充数据并进行压力测试。

sysbench --mysql-host=192.168.100.10  --mysql-port=3306 --mysql-user=sysbench \\--mysql-password=sysbench --tables=120 --table_size=100000 --mysql-db=tempdb \\--time=3600 --threads=240 oltp_point_select prepare
sysbench --mysql-host=192.168.100.10  --mysql-port=3306 --mysql-user=sysbench \\--mysql-password=sysbench --tables=120 --table_size=100000 --mysql-db=tempdb \\--time=3600 --threads=240 oltp_point_select run

性能表现。

资源消耗情况。


8.0.20 + binlog 不压缩

第一步: 关闭 binlog 压缩功能。

set @@global.binlog_transaction_compression='OFF';
show global variables like 'binlog_transaction_compression%';+-------------------------------------------+-------+| Variable_name                             | Value |+-------------------------------------------+-------+| binlog_transaction_compression            | OFF   || binlog_transaction_compression_level_zstd | 3     |+-------------------------------------------+-------+2 rows in set (0.01 sec)

第二步:进行压力测试。

sysbench --mysql-host=192.168.100.10  --mysql-port=3306 --mysql-user=sysbench \\--mysql-password=sysbench --tables=120 --table_size=100000 --mysql-db=tempdb \\--time=3600 --threads=240 oltp_point_select run

性能表现。

资源消耗情况。

结论

开启 binlog 压缩会对性能有影响,大概会让性能下降 1%,cpu 多消耗 1%。

参考技术A 本来的log_file多大,查出来就多大。

shell> mysqlbinlog log_file
...
# at 218
#080828 15:03:08 server id 1 end_log_pos 258 Write_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ==
'/*!*/;
...
# at 302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
'/*!*/;
...
# at 400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows: table id 17 flags: STMT_END_F

BINLOG '
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP
'/*!*/;本回答被提问者采纳

mysql binlog 一直追加写,磁盘满了怎么办?

文章目录


mysql binlog用于记录mysql数据库所有变更(数据库的DDL、DML操作)包括用户执行的语句,以及底层引擎所执行的操作的二进制日志,主要用于数据库的主从复制和恢复。
但是binlog是追加写的方式,当一个binlog日志写满后,会另起一个继续追加,那么随着时间的推移,binlog文件会变得越来越庞大,占据越来越多的磁盘空间,降低系统效率,因此,需要制定一定的binlog清理策略。

mysql binlog 清理策略

1、设置binlog最大的文件数和文件大小

我们可以通过设置mysql配置文件中的max_binlog_filesmax_binlog_size参数来控制binlog文件的数量和大小。通过设置max_binlog_files可以指定允许存在的的binlog最大数,当达到指定数量后,mysql 会自动删除最旧的binlog文件。通过设置max_binlog_size可以限制每个binlog文件允许

以上是关于mysql binlog最大是多少的主要内容,如果未能解决你的问题,请参考以下文章

MySQL VARCHAR 的最大大小是多少?

mysql数据库最大能支持多少并发量

基于binlog来分析mysql的行记录修改情况(python脚本分析)

MYSQL 支持的最大并发线程数是多少

Mysql单表最大记录是多少

Mysql一个表中 最多能存多少文字? 一列中varchar最大值允许多少?