zoukankan      html  css  js  c++  java
  • mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

    一.概述

             由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到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%    

        

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

    二. 使用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    

        

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

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

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

        
        上图中 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

        
        上图显示日志生成后,从at 898行开始显示。 14个操作代表:日志显示跳过14个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

        

      2.6 加-s 将内容进行简单显示

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

      

        如上图所示,简单显示后,没有了详细的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'

       
        如上图所示:最后显示的时间截是1535600091, 转换后是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

        
      最后官网文档 mysqlbinlog
      

  • 相关阅读:
    方法功能从无参方法、含参方法到重载方法
    文件目录在Visual C++ 2005中使用 GNU Scientific Library
    数据库导出All about Oracle IMP/EXP
    初始化变量明明白白c++ 初始化
    内容组织高效项目方案是如何产生的 !
    函数矩阵OpenGL中glFrustum()和gluPerspective()的相互转换
    对象数组[置顶] java高级工程师JSON和XML的使用
    资源成员函数Android应用程序资源的查找过程分析
    事件复制[wxWidgets编程系列2]_[发送异步事件的注意项之字符串深浅复制]
    查找删除Code First Entity Framework基本与最佳添加(add/create),删除(delete/remove),修改(update/modify)操作
  • 原文地址:https://www.cnblogs.com/MrHSR/p/9555313.html
Copyright © 2011-2022 走看看