一、bin-log介绍
MySQL的二进制日志可以说是MySQL最重要的日志了,它事件形式记录了所有的DDL和DML更新数据语句,以及所执行消耗的时间,MySQL的二进制日志是事务安全型的。
二、Binlog的开启
show global variables like '%binlog_format%';
2、root用户下直接修改bin-log级别
#STATEMENT MIXED
SET GLOBAL binlog_format = 'ROW';
3、查看log相关属性
show variables like 'log_%';
+----------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------+--------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
4、查看所有binlog日志列表
show master logs;
5、查看master状态,展示最近一个binlog操作日志文件名,及其对应事件position值
show master status;
6、刷新log日志,自此刻开始产生一个新编号的binlog日志文件
flush logs;
注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
7、重置(清空)所有binlog日志
reset master;
8、查看某个binlog日志内容,通常有两种方式:
1、使用mysqlbinlog自带查看命令法:
注: binlog是二进制文件,普通文件查看器cat more vi等都无法打开,必须使用自带的 mysqlbinlog 命令查看
binlog日志与数据库文件在同目录中(我的环境配置安装是选择在/usr/local/mysql/data中)
在MySQL5.5以下版本使用mysqlbinlog命令时如果报错,就加上 “--no-defaults”选项
mysqlbinlog /var/lib/mysql/mysql-bin.000002
2、在mysql下的格式化展示
show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
说明:
IN 'log_name' 指定要查询的binlog文件名(不指定就是第一个binlog文件)
FROM pos 指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
LIMIT [offset,] 偏移量(不指定就是0)
row_count 查询总条数(不指定就是所有行)
如:
show binlog events in 'mysql-bin.000001' from 0;
9、数据恢复
恢复语法格式: mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名 常用选项: --start-position=953 起始pos点 --stop-position=1437 结束pos点 --start-datetime="2013-11-29 13:18:54" 起始时间点 --stop-datetime="2013-11-29 13:21:53" 结束时间点 --database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)总结:所谓恢复,就是让mysql将保存在binlog日志中指定段落区间的sql语句逐个重新执行一次而已。
参考文献
来源:CSDN
作者:.破晓.
链接:https://blog.csdn.net/qq_34901049/article/details/103069982