MySQL Server 有四种类型的日志——Error Log、General Query Log、Binary Log 和 Slow Query Log。
Error Log:错误日志,记录 mysqld 的一些错误
General Query Log:一般查询日志,记录 mysqld 正在做的事情,比如客户端的连接和断开、来自客户端每条 Sql Statement 记录信息;如果你想准确知道客户端到底传了什么瞎 [哔哔] 玩意儿给服务端,这个日志就非常管用了,不过它非常影响性能。
Binlog:Mysql sever层维护的一种二进制日志,Binlog中包含了一些事件,这些事件描述了数据库的改动,如建表、数据改动等,也包括一些潜在改动,比如 DELETE FROM ran WHERE bing = luan,然而一条数据都没被删掉的这种情况。除非使用 Row-based logging,否则会包含所有改动数据的 SQL Statement。
mysql> show variables like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 7 | +------------------+-------+ 1 row in set (0.00 sec)
mysql> set global expire_logs_days=15; Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'expire_logs_days'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | expire_logs_days | 15 | +------------------+-------+ 1 row in set (0.00 sec)
mysql> show binary logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 154 | +------------------+-----------+ 1 row in set (0.00 sec)
mysql> show master logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | mysql-bin.000001 | 154 | +------------------+-----------+ 1 row in set (0.00 sec)
查看Binlog文件目录 [root@b04f945297ac mysql]# ls -alh . . . drwxr-x--- 1 mysql mysql 4.0K Apr 8 04:12 mysql -rw-r----- 1 mysql mysql 1.1K May 22 07:41 mysql-bin.000001 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000002 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000003 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000004 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000005 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000006 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000007 -rw-r----- 1 mysql mysql 201 May 22 07:41 mysql-bin.000008 -rw-r----- 1 mysql mysql 19K May 22 10:09 mysql-bin.000009 -rw-r----- 1 mysql mysql 471 May 23 01:28 mysql-bin.000010 -rw-r----- 1 mysql mysql 1.1K May 24 02:28 mysql-bin.000011 -rw-r----- 1 mysql mysql 177 May 24 02:28 mysql-bin.000012 -rw-r----- 1 mysql mysql 1.2K May 25 02:15 mysql-bin.000013 -rw-r----- 1 mysql mysql 2.0K May 25 06:36 mysql-bin.000014 -rw-r----- 1 mysql mysql 266 May 25 02:15 mysql-bin.index srwxrwxrwx 1 mysql mysql 0 May 25 02:15 mysql.sock -rw------- 1 mysql mysql 3 May 25 02:15 mysql.sock.lock . . .
删除之后的目录 [root@b04f945297ac mysql]# ls -alh total 313M . . . drwxr-x--- 1 mysql mysql 4.0K Apr 8 12:12 mysql -rw-r----- 1 mysql mysql 154 May 25 15:03 mysql-bin.000001 -rw-r----- 1 mysql mysql 19 May 25 15:03 mysql-bin.index srwxrwxrwx 1 mysql mysql 0 May 25 10:15 mysql.sock -rw------- 1 mysql mysql 3 May 25 10:15 mysql.sock.lock . . .
5.自动清理Binlog日志
如果堆积的binlog非常多,不要轻易设置改参数,可以使用purge命令 部分老化binlog
1 2
mysql> purge master logs before '2018-05-25 16:25:00';//删除指定日期前的日志索引中binlog日志文件 mysql> purge master logs to 'binlog.000001';//删除指定日志文件
mysql> show variables like 'binlog_format'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec)
设置Binlog日志格式
1 2 3 4 5 6 7 8 9 10 11 12 13
修改my.cnf log-bin=mysql-bin #binlog_format=STATEMENT #binlog_format=ROW binlog_format=MIXED 或者在运行时设置: mysql> SET SESSION binlog_format = 'STATEMENT'; mysql> SET SESSION binlog_format = 'ROW'; mysql> SET SESSION binlog_format = 'MIXED'; mysql> SET GLOBAL binlog_format = 'STATEMENT'; mysql> SET GLOBAL binlog_format = 'ROW'; mysql> SET GLOBAL binlog_format = 'MIXED';
[root@b04f945297ac mysql]# mysqlbinlog --no-defaults mysql-bin.000001 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #180525 16:02:24 server id 1 end_log_pos 123 CRC32 0x62d58cd0 Start: binlog v 4, server v 5.7.21-log created 180525 16:02:24 at startup # Warning: this binlog is either in use or was not closed properly. ROLLBACK/*!*/; BINLOG ' EMMHWw8BAAAAdwAAAHsAAAABAAQANS43LjIxLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAQwwdbEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA AdCM1WI= '/*!*/; # at 123 #180525 16:02:24 server id 1 end_log_pos 154 CRC32 0x57b5fe8d Previous-GTIDs # [empty] # at 154 #180525 16:02:48 server id 1 end_log_pos 219 CRC32 0xa3058217 Anonymous_GTID last_committed=0 sequence_number=1 rbr_only=yes /*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/; SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 219 #180525 16:02:48 server id 1 end_log_pos 302 CRC32 0xa849ecb0 Query thread_id=633 exec_time=0 error_code=0 SET TIMESTAMP=1527235368/*!*/; SET @@session.pseudo_thread_id=633/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=1073741824/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C utf8mb4 *//*!*/; SET @@session.character_set_client=224,@@session.collation_connection=224,@@session.collation_server=8/*!*/; SET @@session.time_zone='SYSTEM'/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; BEGIN /*!*/; # at 302 #180525 16:02:48 server id 1 end_log_pos 378 CRC32 0x66324940 Table_map: `tourism`.`user_tags` mapped to number 180 # at 378 #180525 16:02:48 server id 1 end_log_pos 445 CRC32 0x25589cf0 Write_rows: table id 180 flags: STMT_END_F
BINLOG ' KMMHWxMBAAAATAAAAHoBAAAAALQAAAAAAAEAB3RvdXJpc20ACXVzZXJfdGFncwALA/wPAQEPERER EREKAlAA/AMAAAAAAMAHQEkyZg== KMMHWx4BAAAAQwAAAL0BAAAAALQAAAAAAAEAAgAL///A/AMAAAAAAANjY2MBAAcAczowOiIiO1sI M6hbCDOo8JxYJQ== '/*!*/; # at 445 #180525 16:02:48 server id 1 end_log_pos 476 CRC32 0xd1963b7d Xid = 71618 COMMIT/*!*/; SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;