binlog简介

二进制日志,也称为二进制日志。记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中。

读>>写 的场景,binlog的启动大概会为mysql增加 1% 的负载。而在 写>>读 的场景,则大概增加 10% 的负载。因此在绝大多数情况下,binlog都不会成为mysql的性能瓶颈。


[TOC]

binlog启停

查看binglog是否开启

show variables like 'log_bin';

启用binlog

找到my.cnf 中 [mysqld] 配置如下参数,并重启mysql服务生效

[mysqld]
log-bin = mysql-bin
expire-logs-days = 14
server-id = 1393306

binlog清理

清理binlog

show binary logs;                                            #.查看当前的log
purge binary logs to 'mysql-bin.000842';                    #.清理指定binlog以前的日志

purge master logs before '2012-03-30 17:20:00';             #.删除指定日期以前的日志索引中binlog日志文件
purge master logs before DATE_SUB(NOW(), INTERVAL 3 DAY);   #.删除3天以前的binlog日志

reset master;                                                #.清空所有binlog文件
reset slave;                                                #.删除slave的中继日志

从库清理relay_log

host=127.0.0.1
port=3306
user=dba_admin
password=***
/usr/bin/purge_relay_logs --user=$user --password=$password --port=$port --host=$host

调整binlog最长保存期限

  • 修改binlog最长保存期限,再flush logs(改大则不需要flush),则会自动清理老的binlog文件。
#.改为最长保留2天
show variables like 'expire_logs_days';
set global expire_logs_days=2;
flush logs;

注:记得同时修改 my.cnf 设置 expire_logs_days=2

  • MySQL 8.0 对于binlog日志的自动清理参数:binlog_expire_logs_seconds(默认为604800秒,即7天)的优先级高于expire_log_days(默认为0,即不自动清理)。修改过参数之后,需要执行 flush logs; 使参数生效
#.改为最长保留2天
show variables like 'binlog_expire_logs_seconds';
set global binlog_expire_logs_seconds=3600*24*2;
flush logs;

注:记得同时修改 my.cnf 设置 binlog_expire_logs_seconds=172800

binglog维护

调整max_binlog_cache_size大小

遇到的错误:

Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again

调整 binlog cache size 大小,比如:binlog_cache_size改为8M、max_binlog_cache_size改为3GB:

set global binlog_cache_size=8388608;
set global max_binlog_cache_size=3221225472;
show global variables like '%binlog_cache%';

binlog分析

binlog不能直接用文本的方式打开,mysql提供了相应的查看工具:mysqlbinlog filename

查询binlog变动信息

show binlog events;

从指定位置查看binlog

show binlog events in 'mysql-bin.003425' from 2990 limit 10;
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2024-06-28 10:52:34

results matching ""

    No results matching ""