一、介绍
binlog是二进制日志,记录了mysql上所有的改变,并以二进制的方式保存在磁盘中,binlog日志可以查询数据库的变更历史、可以作为增量备份文件、可以用作数据恢复、还可作为主从的复制
二、binlog的实际操作(数据库内)
2.1列出所有binlog日志文件
show master logs;
show binary logs;
2.2查看当前使用的binlog日志文件
show master status;
2.3查看binlog日志文件的内容
show binlog events in 'mysql-bin.000001';
2.4关闭binlog日志功能
set sql_log_bin=0
2.5开启binlog日志功能
set sql_log_bin=1
2.6查看binlog状态
show variables like 'log_%';
2.7生成新的binlog日志文件
flush logs;
2.8清空所有binlog日志
reset master;
三、binlog实际操作(命令方式,以下binlog文件均需指定路径)
3.1binlog日志文件导出指定的库内容
mysqlbinlog -d test mysql-bin.000001 > /opt/test.sql
3.2binlog日志文件导出所有内容
mysqlbinlog mysql-bin.000001 > /opt/bin001.sql
3.3查看binlog内容
mysqlbinlog mysql-bin.000001
3.4筛选binlog内容(可通过此定位出需要恢复的pos位置)
mysqlbinlog mysql-bin.000001 |grep -i -A 3 -B 8 drop #-A为输出drop内容之后3行 -B为输出drop内容之前8行
3.5截取binlog日志导出(pos点方式,适用于一个binlog文件)
mysqlbinlog --start-position=918 --stop-position=2801 mysql-bin.000001 > /opt/test.sql
3.6涉及到多个binlog日志导出(时间戳方式,适用于多个binlog文件)
mysqlbinlog --start-datetime="2020-05-08 17:11:23" --stop-datetime="2020-05-11 17:14:01" mysql-bin.000005 mysql-bin.000006 mysql-bin.000007 mysql-bin.000008 > /opt/test.sql
3.7导入binlog区间指定库内容到数据库
mysqlbinlog --start-position=934 --stop-position=2063 --database=数据库 mysql-bin.000002 | mysql -uroot -p密码 -v数据库