mysql的binlog太大太多占用大量磁盘的解决?
今天有个同事来问我,说mysql目录下有很多1.1G的mysql-bin.00000*文件,占用了100多G,占用磁盘空间非常大,这些文件都是msyql日志文件,从几m到几个G都有可通,要解决这个问题并不难,只要修改/etc/my.cnf文件里的#log-bin=mysql-bin和#binlog_format=mixed把这二行注释掉,重启数据库就可以了!
MySQL binlog三种模式区别?
MySQL的binlog(二进制日志)记录了对数据库执行的所有更改,主要用于主从复制和数据恢复。binlog有三种模式:Statement-Based Logging (SBL),Row-Based Logging (RBL) 和 Mixing-Based Logging (MBL)。以下是这三种模式的详细解释和它们之间的主要区别:
Statement-Based Logging (SBL)
工作原理: 记录的是SQL语句本身。
优点: 记录量较小,对I/O的影响较小。
缺点: 由于记录的是SQL语句,当SQL语句执行涉及到随机读取文件、未知的列值等时,可能会出现主从不同步的问题。
Row-Based Logging (RBL)
工作原理: 记录的是更改的数据行。
优点: 主从同步更可靠,不会因为某些SQL语句的执行而导致不同步。
缺点: 记录量较大,对I/O的影响较大。
Mixing-Based Logging (MBL)
工作原理: 结合了SBL和RBL的特点。对于已知的、简单的SQL语句,使用SBL;对于复杂的、可能导致数据不一致的SQL语句,使用RBL。
优点: 在可靠性和性能之间提供了一个折中的方案。
缺点: 需要更多的逻辑来判断何时使用SBL,何时使用RBL。
总结:
SBL适合于I/O资源有限但可以接受数据不一致风险的的环境。
RBL适合于需要高数据一致性的环境,如金融等关键业务。
MBL适合于需要在性能和数据一致性之间找到平衡的环境。
在选择binlog模式时,需要根据实际的应用需求和环境资源来决定。
MySQL 的 Binlog 有三种模式,分别是:STATEMENT、ROW、MIXED。它们的区别如下:
1. STATEMENT 模式:每一条 SQL 语句会被记录在 Binlog 中。
图片来源:网络
2. ROW 模式: Binlog 中会记录每一行数据的变化。
3. MIXED 模式:是 STATEMENT 和 ROW 的混合模式,对于某些语句使用 STATEMENT 模式,对于某些语句使用 ROW 模式。
这三种模式的区别,主要影响了 Binlog 的大小和对主从复制的性能影响。
如果使用 STATEMENT 模式,Binlog 中只记录 SQL 语句,因此 Binlog 文件相对较小,但是对于复杂的语句,可能会产生很多的 SQL 语句,导致 Binlog 文件很大。
如果使用 ROW 模式,Binlog 中会记录每一行数据的变化,因此 Binlog 文件相对较大,但是对于复杂的语句,产生的 Binlog 语句相对较少。
如果使用 MIXED 模式,则会根据语句的具体情况,选择使用 STATEMENT 模式或 ROW 模式。
在实际应用中,如果需要更高的数据安全性,可以使用 ROW 模式;如果需要更快的主从复制性能,可以使用 STATEMENT 模式。MIXED 模式则是一种折中的方案。