MySQL的binlog知识梳理

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=xxbinlog_stmt_cache_size=xxmax_binlog_size=xxmax_binlog_cache_size=xxmax_binlog_stmt_cache_size=xx5、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/# syncmysql> PURGE BINARY LOGS TO 'mysql-bin.000009'另外 , 清除所有binlog(慎用)mysql> reset master;【MySQL的binlog知识梳理】 
MySQL的binlog知识梳理

文章插图




    推荐阅读