1、binlog概念:
binlog是一个二进制格式的文件,用于记录“修改数据或可能引起数据变更”的SQL语句(查询的SQL不会记录)。
2、binlog功能:
(1)恢复: 利用binlog日志恢复数据库数据。(2)复制: 主从架构通过binlog同步数据。(3)审计: 可以用binlog中的信息进行审计,判断是否有对数据库进行注入攻击。
3、binlog的记录格式:
(1)statement: 基于"语句"记录,记录的是修改SQL语句。(2)row: 基于"行"记录,记录的是每行实际数据的变更。(3)mixed: statement和row模式的混合。
4、binlog的配置参数
(1)开关配置: sql_log_bin=1|0 用于控制会话级别二进制日志功能的开启与关闭 mysql> SET SQL_LOG_BIN=0; mysql> SOURCE somefile.sql; mysql> SET SQL_LOG_BIN=1;(2)文件路径: log_bin=/data/mysql3306/data/mysql-bin(3)记录格式: binlog_format=MIXED(4)过期时间: expire_logs_days=0 日志过期后会被自动清理(5)同步磁盘: sync_binlog=1|0: 事务提交时, 是否将事件从内存刷新至磁盘, 安全期间应该开启保证数据安全, 开启后会略微造成性能下降(至关重要)(6)cache相关: binlog_cache_size=xx binlog_stmt_cache_size=xx max_binlog_size=xx max_binlog_cache_size=xx max_binlog_stmt_cache_size=xx
5、binlog文件的管理:
二进制日志文件的构成:
索引文件: mysql-bin.index
日志文件: mysql-bin.000xxx
(1)查看二进制日志文件列表 mysql> SHOW MASTER LOGS; mysql> SHOW BINARY LOGS;
(2)查看正在使用中的二进制文件 mysql> SHOW MASTER STATUS;
(3)查看二进制文件内容: 方式一: mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001' LIMIT 5; mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000001' FROM 208 LIMIT 5, 10; 方式二: # mysqlbinlog --start-position='100' --stop-position='1000' ./mysql-bin.000001 # mysqlbinlog --start-datetime='2020-04-24 00:00:00' --stop-datetime='2020-04-24 17:00:00' ./mysql-bin.000001 查看mysqlbinlog使用帮助 # mysqlbinlog --help
(4)日志滚动: mysql> FLUSH LOGS; 避免日志文件太大,可生成新binlog文件
(5)清除二进制日志: 注意:只有做过备份的binlog才可以清除, 不可以手动直接删除文件。 mysql> PURGE BINARY LOGS BEFORE '2019-01-20 21:10:24'; mysql> PURGE BINARY LOGS TO 'mysql-bin.000xxx'; 说明: 删除mysql-bin.000xxx之前的文件 示例: 先做备份!!! # mkdir /data/backup/binlog/ # cp mysql-bin.00000[0-9] /data/backup/binlog/ # sync mysql> PURGE BINARY LOGS TO 'mysql-bin.000009' 另外,清除所有binlog(慎用) mysql> reset master;