mysqlbinlog日志管理工具,MySQL中的binlog相关命令和恢复技巧

一.概述

        
由于劳动器生成的二进制日志文件以二进制格式保存,所以只要要想检查那一个文件的文本格式,就能够用到mysqlbinlog日志处理工科具。
    mysqlbinlog的语法如下:
    mysqlbinlog [options] log-files log-files2…

    个中options有这些增选,常用如下:

选项

说明

-d, –database=name

指定数据库名称,只列出指定的数据库相关操作。

-o, –offset=#

忽略掉日志中的前n行命令

-r, –result-file=name

将输出的文本格式日志输出到指定文件

-s,–short-form

显示简单格式,省略掉一些信息

–set–charset=char-name

在输出为文本格式时,在文件第一行加上set names char-name.

— start-datetime=name-stop-datetime=name

指定日期间隔内的所有日志

–start-position=# –stop-position=#

指定位置间隔内的所有日志

  1.1 开启binlog日志

    暗中同意情状下是未打开binlog日志,能够透过以下几种艺术查看:

mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging
--或者这样查看
mysql> show variables like '%log_bin%    

    图片 1

  开启binlog日志,修改my.cnf文件重启mysql服务,如下所示:
    图片 2
   再次查询binlog日志状态:
    图片 3
    图片 4

操作命令:

二. 使用mysqlbinlog查看日志

--先在test表中插入一条数据退出。
mysql> insert into a values('testbinlog');

-- 查看binlog位置
[root@hsr mysql]# cd /var/lib/mysql
[root@hsr mysql]# ls
mysql-bin.000001  mysql-bin.index    

   2.1 使用mysqlbinlog查看日志 不加任何options参数

[root@hsr ~]# cd /usr/local/mysql/bin
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.000001    

    图片 5

     
  上面的日记文件除了创建表和删除表的sql外,操作数据库的语句都加密了。

  2.2 使用参数”–base64-output=decode-row
-v”查看具体的sql语句,如下命令

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001

    图片 6
    上海教室中 at 291是插入语句的初步地点, at
384是插入语句的完毕地点。若是一连该表数据错失,能够依据那五个地方施行恢复。也足以遵照开首时间和告竣时间来恢复生机,后边再讲日志时具体介绍。

  2.3  加-d选项,将只呈现对test数据库的操作日志

                   [root@hsr bin]# ./mysqlbinlog  
/var/lib/mysql/mysql-bin.000001 -d test

  2.4  加-o选项, 忽略掉日志中的前n个操作。演示下

-- 插入三条数据
INSERT INTO a VALUES('testbinlog2')
INSERT INTO a VALUES('testbinlog3')
INSERT INTO a VALUES('testbinlog4')

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -d test  -o 14

    图片 7
    上海教室展示日志生成后,从at 898行最初显得。
16个操作表示:日志呈现跳过十七个at。
  2.5 加-r选项
    将出口的文本格式日志输出到钦命文件,上边将文件结果输出到文件resultfile中。

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -r resultfile
[root@hsr bin]# more resultfile

    图片 8
图片 9

  2.6 加-s 将内容进行简短呈现

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001 -s

  图片 10

    如上海教室所示,简单突显后,未有了详尽的sql语句。
  2.7 加”–start-datetime–stop-datetime”显示9:00 ~12:00里边的日记

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001  
--start-datetime='2018/08/30 09:00:00' --stop-datetime='2018/08/30 12:00:00'

   图片 11
    如上图所示:最终呈现的年月截是1535五千91, 转变后是2018-08-30
11:34:51。 开首和竣事日期能够只写四个。
  2.8 加”–start-position=#和–stop-position=#”
和日期范围类似,然则更标准

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v  /var/lib/mysql/mysql-bin.000001  --start-position=944

    图片 12
  最终官方网址文书档案
mysqlbinlog
  

复制代码 代码如下:

show binlog events in ‘mysql-bin.000016’ limit 10;

reset master 删除全部的二进制日志
flush logs  发生三个新的binlog日志文件

show master logs; 可能 show binary logs; 查看二进制文件列表和文件大小

复制代码 代码如下:

./mysqlbinlog –start-datetime=”2012-05-21 15:30:00″
–stop-datetime=”2012-05-21 16:40:00″ /binlog/mysql-bin.000005 >
a.log

  1. 要想经过日记苏醒数据库,在你的 my.cnf
    文件里应该有如下的定义,log-bin=mysql-bin,那几个是必需的
    binlog-do-db=db_test
    ,这些是点名哪些数据库必要日志,每行三个,假若不钦点的话暗中认可正是兼具数据库.

复制代码 代码如下:

[mysqld]
 log-bin=mysql-bin
 binlog-do-db=db_test
 binlog-do-db=db_test2 

3.去除二进制日志:

复制代码 代码如下:

mysql> reset master  (清空全部的二进制日志文件)
purge master logs to ‘mysql-bin.000006’;
 (删除mysql-bin.000006在此之前的二进制日志文件)
purge master logs before ‘二零零七-08-10 04:07:00’  (删除该日期以前的日记)

在my.cnf 配置文件中[mysqld]中添加:

复制代码 代码如下:

expire_logs_day=3  设置日志的过期天数,过了点名的天数,会活动删除

4.底下正是复苏操作了
 特别提醒,mysql每趟运转都会重新生成一个看似 mysql-bin.000003
的文件,要是您的mysql每日都要重新开动一遍的话,那时候你将要特别注意不要选错日志文件了。

技巧1:
你可以透过–one-database
参数选择性的大张旗鼓单个数据库,example在底下,爽吧。
mysqlbinlog –stop-date=”2005-04-20 9:59:59″
/var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd –one-database
db_test

技巧2:
万一已经运用过
/usr/local/mysql5/bin/mysqlbinlog –start-date=”005-04-20 9:55:00″
/var/data/mysql5/mysql-bin.0* > /home/db/tt.sql
类似的口舌将日志导成了ASCII文本文件,那么您就能够直接在phpmyadmin里举行那一个文件,因为它本身正是三个正式的sql文件,比方想让文件之中的一些语句不实行,找到它们删除就能够,然后再放进去推行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注