b、从头删到指定的文件位置
c、按照时间删除
mysql> PURGE MASTER LOGS BEFORE'2016-08-28 13:00:00'; Query OK, 0 rows affected (0.02 sec) mysql> system ls -l/data/3306/mysql-bin* -rw-rw---- 1 mysql mysql 15881 8月 28 19:16 /data/3306/mysql-bin.000006 -rw-rw---- 1 mysql mysql 28 8月 28 19:28 /data/3306/mysql-bin.index mysql> PURGE MASTER LOGS BEFOREDATE_SUB(NOW( ), INTERVAL 3 DAY); Query OK, 0 rows affected (0.00 sec) mysql> system ls -l/data/3306/mysql-bin* -rw-rw---- 1 mysql mysql 15881 8月 28 19:16 /data/3306/mysql-bin.000006 -rw-rw---- 1 mysql mysql 28 8月 28 19:28 /data/3306/mysql-bin.index Mysql binlog的三种模式 statement level (默认语句模式)每一条被修改数据的sql都会记录到master的bin-log中。slave在复制的时候sql进程会解析成和原来master端执行过的相同sql来再次执行。
例如: 100w: update nfsnobody setname=’tingting’ bin-log里面: 只记录一条:update nfsnobody setname=’tingting’
优点:statementlevel下的有点首先就是解决了row level下的缺点,不需要记录每一行数据变化,减少bin-log日志量,节约磁盘IO,提高性能。因为他只要记录在master上所执行的语句的细节,以及执行语句时候的上下文信息。
缺点:容易出现主从不一致。
日志中会记录成每一行数据被修改的情况,然后在slave端再对数据进行修改。
例如: 100w: update nfsnobody setname=’tingting’ bin-log里面: 100w条:update nfsnobody set name=’tingting’
优点:主从一致,逐行记录,记录很细。
缺点:占用大量磁盘空间,降低磁盘性能,消耗磁盘IO。
实际上就是前两种模式的结合,在mixed模式下mysql会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在statement和row之间选择一种。
例如: 智能模式 100w: update nfsnobody setname=’tingting’ bin-log里面: 只记录一条:update nfsnobody setname=’tingting’使用语句模式 函数,触发器,存储过程:使用row-level
a、互联网公司,使用mysql的功能相对少(存储过程、触发器、函数)
选择默认的语句模式,statement(默认)。
b、公司如果用到使用mysql的特殊功能(存储过程、触发器、函数)
则选择mixed模式。
c、公司如果用到使用mysql的特殊功能(存储过程、触发器、函数),又希望数据最大化一致
此时最好的选择:row-level模式。