Mysql binlog日志文件过大的解决
16lz
2021-12-09
命令
ls -l -h
可以通过设置my.cof配置文件的方式限制binlog文件的输出。
1、相关binlog配置
vim /etc/my.cof
[mysqld]expire_logs_days = 3#设置binlog清理时间max_binlog_size = 100m#binlog每个日志文件大小binlog_cache_size = 4m#binlog缓存大小max_binlog_cache_size = 512m#最大binlog缓存大小
2、binlog相关高级设置
2.1 改变binlog模式
binlog的模式也有三种:STATEMENT、ROW、MIXED 。下面对这三种格式分别加以说明:
STATMENT模式
基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。
优点:不需要记录每一条SQL语句与每行的数据变化,这样子binlog的日志也会比较少,减少了磁盘IO,提高性能。
缺点:在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
ROW模式
不记录每一条SQL语句的上下文信息,仅需记录哪条数据被修改了,修改成了什么样子了。
优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。
缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨。
MIXED模式
混合模式复制(mixed-based replication, MBR):以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
修改配置文件
[mysqld]binlog_format = mixed#设置日志格式
更多相关文章
- 2011.11.25——— android ndk 坑爹的cygwin
- Android(安卓)读取doc文件
- 如何去掉状态栏和内容视图之间的黑色阴影线
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- 读取android手机流量信息
- android 使用html5作布局文件: webview跟javascript交互
- Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
- android“设置”里的版本号