mariadb-日志

mariadb日志

mariadb日志:
    1、查询日志:query log;
    2、慢查询日志:slow query log
    3、错误日志:error log
    4、二进制日志:binary log
    5、中继日志:reley log
    6、事务日志:transaction log

查询日志

    记录查询操作:
            文件:file
             表:   table

        general_log=ON|OFF
        general_log_file=HOSTNAME.log   # 使用相对路径,存储在定义的mysql数据存放路径下
        log_output=TABLE|FILE|NONE

        不记录日志的方式有两种:
            1、general_log=off不会记录
            2、general_log=on但把log_output=NONE也不会记录日志

        查询日志一般是不开启,额外会产生太多的压力,而且更重要的是查询语句并非每一个都有记录下来的价值

慢查询日志

    指的是查询时长超出指定时长的查询操作:
            不是所有的慢查询,都是因为查询语句自行真正执行太慢而导致,而是查询操作所依赖的表被其它语句锁定导致当前语句被阻塞,尽管如此依然判定这是个慢查询

        slow_query_log=ON|OFF
        slow_query_log_file=HOSTNAME-slow.log

        log_slow_filter     # 慢查询日志过滤器
        admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk

        过滤器主要作用:
            用来定义慢查询在进行记录时如何进行记录的,比如说这里的filter表示哪一种查询导致的不与记录,哪一种查询导致的才进行记录等等。

        log_slow_queries= OFF # 从mariadb-10.0和mysql-5.6.1开始就被抛弃了,取而代之是slow_query_log
        log_slow_rate_limit  1  # 指明记录速率
        log_slow_verbosity  详细级别

        默认的慢查询时长:
        MariaDB [hellodb]> show global variables like '%long_query%';
        +-----------------+-----------+
        | Variable_name   | Value     |
        +-----------------+-----------+
        | long_query_time | 10.000000 |
        +-----------------+-----------+
        也可以使用select来查询,如果是用户自定义变量使用一个@,服务器变量使用2个@
        MariaDB [hellodb]> select @@global.long_query_time;
        +--------------------------+
        | @@global.long_query_time |
        +--------------------------+
        |                10.000000 |
        +--------------------------+
        自定义修改慢查询时长:
            1、修改session会话级别
                MariaDB [hellodb]> set long_query_time=5;
                Query OK, 0 rows affected (0.01 sec)

                MariaDB [hellodb]> show variables like '%long_query%';
                +-----------------+----------+
                | Variable_name   | Value    |
                +-----------------+----------+
                | long_query_time | 5.000000 |
                +-----------------+----------+
            2、修改global全局设置,修改session和global设置,global只需要在set后面加上global即可,而session不需要加直接在set后面跟上变量即可;
                MariaDB [hellodb]> set global long_query_time=5;
                Query OK, 0 rows affected (0.00 sec)

                MariaDB [hellodb]> show global variables like '%long_query%';
                +-----------------+----------+
                | Variable_name   | Value    |
                +-----------------+----------+
                | long_query_time | 5.000000 |
                +-----------------+----------+

错误日志

    1、记录的不完全是错误日志,记录的是多种信息,包括MySQL服务器启动、关闭过程中所产生的事件也会记录到错误日志里面去,但它们未必是真正的错误日志信息。
    2、错误日志默认也是没开启的,但在centos7发行版商是被开启的
    3、记录哪几种日志信息:
        3.1、mysqld启动和关闭过程中输出的事件信息;
        3.2、mysqld运行中产生的错误信息;
        3.3、event scheduler (事件调度器) 运行一个event时产生的日志信息;
        3.4、在主从复制架构中的从服务器上启动从服务器线程时产生的信息;

        log_error=/var/log/mariadb/mariadb.log
        log_warnings=1|0:是否记录警告信息至错误日志文件中,1表示记录、0表示不记录

二进制日志:

    记录导致数据改变或潜在导致数据改变的SQL语句;
    功能:用于通过“重放”日志文件中的事件来生成数据副本;

    而且更重要的是这个SQL语句在文件中保存是以二进制格式保存的而非是文本类型保存

    SHOW {BINARY | MASTER} LOGS:查看mariadb自行管理使用中的二进制日志文件列表;
    SHOW MASTER STATUS:查看使用中的二进制日志文件;
    SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

    二进制日志记录格式:
        基于“语句”记录:startement
        基于“行”记录:row
        混合模式:mixed,让系统自行判定该基于哪种方式进行;
    要记录精确数据使用哪种方式:
        基于“行”,记录数据的
        基于“语句”,记录语句的
        基于行会产生较大的数据量
        混合模式,应用折中、语句不会产生混淆,不会导致两次记录、两次执行数据不一样,就基于语句并且节约空间,否则就基于行

    二进制日志文件的构成:
        两类文件
            日志文件:mysql-bin.文件名后缀,二进制
            索引文件:mysql-bin.index,文本
                mysql-bin.index:是用来追踪mysql或mariadb正在使用中的或者是我们仍然在追踪中可用二进制日志文件序列有哪些

    服务器变量:
        sql_log_bin=ON|OFF:是否记录二进制日志;
        log_bin=/PATH/TO/BIN_LOG_FILE:记录的文件位置;通常为ON;二进制日志默认通过滚动方式来进行记录的
        binlog_format=STATEMENT|ROW|MIXED:二进制日志记录的格式;
        max_binlog_size=1073741824:单个二进制日志文件的最大体积,默认为1G,
            注意:
                1、到达最大值之后自动会滚动
                2、文件达到上限的大小未必为指定的精确值

        sync_binlog=1|0:设定是否启动二进制日志同步功能:

    mysqlbinlog:客户端命令工具
        mysqlbinlog [options] log_file
            --start-position
            从指定起始号开始显示:
            [root@node7 /data/mysql]#mysqlbinlog --start-position=499 mysql-bin.000002
            --stop-position
            从指定位置开始到指定结束位置
            [root@node7 /data/mysql]#mysqlbinlog --start-position=328 --stop-position=457 mysql-n.000002 

            --start-datetime=
            --stop-datetime=
                时间格式:
                    YYYY-MM-DD hh:mm:ss

    二进制日志事件的格式
        # at 499
        #181014 21:30:29 server id 1  end_log_pos 604 CRC32 0x5c77d4d7  Query   thread_id=1 exec_time=0      error_code=0
        use `mydb`/*!*/;
        SET TIMESTAMP=1539523829/*!*/;
        create table tb1(id int,name char(30))
        /*!*/;

            事件的起始位置:        at 499
            事件发生的日期和时间: 181014 21:30:29
            事件发生的服务器标识: server id 1
            事件的结束位置:        end_log_pos 604
            事件的类型:          Query
            事件发生时所在服务器执行此事件的线程的id:thread_id=1
            语句的时间戳与将其写入二进制文件中的时间差;exec_time=0
            错误代码:               error_code=0
            事件内容:
                use `mydb`/*!*/;
                SET TIMESTAMP=1539523829/*!*/;
                create table tb1(id int,name char(30))
                /*!*/;

            GTID:全局事务ID号(global transaction id):
                专属属性:GTID
                说明在同一个复制集群中,每一个服务器上执行任何一个事务,都有一个唯一的标识符、无论是执行过多少个事务、在本次集群运行过程中一定不会有任何其它事务与当前事务重名的
--------------------------------------------------------------------------------------------------------------------------------------------------------
查看数据库日志的操作:
    使用file命令来查看mysql-bin.000001 为哪个类型的文件,不能使用cat去查看mysql-bin.000001文件否则显示的结构为乱码
        [root@node7 /data/mysql]#file mysql-bin.000001
        mysql-bin.000001: MySQL replication log

查看当前mysql服务器中可管理的二进制日志文件有哪些
    MariaDB [hellodb]> show binary logs;
    +-------------------------+-------------+
    | Log_name             | File_size   |
    +------------------------+---------------+
    | mysql-bin.000001 |      1675     |
    | mysql-bin.000002 |     15764    |
    | mysql-bin.000003 |      3429     |
    | mysql-bin.000004 |       740      |
    | mysql-bin.000005 |     10606    |
    | mysql-bin.000006 |  26983604 |
    | mysql-bin.000007 |      6098     |
    +------------------------+---------------+
也可使用show master logs查看,跟show binary logs是一样的
    MariaDB [hellodb]> show master logs;
    +------------------------+----------------+
    | Log_name            | File_size      |
    +------------------------+----------------+
    | mysql-bin.000001 |      1675      |
    | mysql-bin.000002 |     15764     |
    | mysql-bin.000003 |      3429      |
    | mysql-bin.000004 |       740       |
    | mysql-bin.000005 |     10606     |
    | mysql-bin.000006 |  26983604  |
    | mysql-bin.000007 |      6098      |
    +------------------------+----------------+

查看当前系统上正在使用的二进制日志文件


查看二进制日志文件的事件

字段解释:
     Log_name :          日志文件名
     Pos:                        起始点
     Event_type:            事件的类型
     Server_id:             服务器编号
     End_log_pos:        结束位置
     Info:                      记录事件本身的内容

中继日志

    复制架构中,从服务器用于保存从主服务器的二进制日志中读取到的事件;

事务日志

    事务日志:transaction log
        事务型存储引擎自行管理和使用;

        redo log:重做日志
        undo log:撤销日志
    事务日志不宜太大,根据业务来定义;

mysql错误日志/var/log/mariadb/mariadb.log,二进制日志的更多相关文章

  1. MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...

  2. MySQL备份方案-->(利用mysqldump以及binlog二进制日志)

                                                         MySQL备份方案-->(利用mysqldump以及binlog二进制日志) 随着数据不 ...

  3. mysql 在row模式下truncate 与 delete 二进制日志记录的差异

    二进行日志的格式为row mysql> show variables like 'binlog_format'; +---------------+-------+ | Variable_nam ...

  4. MySQL/MariaDB数据库的各种日志管理

    MySQL/MariaDB数据库的各种日志管理 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.事务日志 (transaction log) 1>.Innodb事务日志相 ...

  5. MySQL 二进制日志(Binary Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分. MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志能够帮助我们定位mysqld ...

  6. MySQL二进制日志(binary log)总结

    本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...

  7. MySQL中redo log、undo log、binlog关系以及区别

    MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...

  8. MySQL二进制日志总结

    二进制日志简单介绍 MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句.二进制日志(binary log)中记录了对MySQL数据 ...

  9. MySQL二进制日志备份和恢复详解

    原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...

  10. mysql二进制日志详解

    一.什么是二进制日志 二进制日志主要记录mysql数据库的变化,二进制日志包含所有更新了数据或者潜在更新了数据(如没有匹配到任何行的delete语句),语句以时间的形式保存,描述了数据的更改.二进制日 ...

随机推荐

  1. CentOS 5.x上配置JBoss6.x步骤图解教程

    1.如何远程连接CentOS和文件上传下载 使用工具Xmanager下的Xbroswer 首先在Xbroswer下的Xshell下新建文件夹JavaPlatServer,新建一个Xshell Sess ...

  2. TP5:使用了INPUT函数来接收参数了,还需再过滤SQL注入吗

    TP5:使用了INPUT函数来接收参数了,还需再过滤SQL注入吗,默认的INPUT函数都做了哪些动作啊 有了PDO参数绑定 基本上不需要考虑sql注入的问题(除非自己拼接SQL),需要考虑的是XSS方 ...

  3. Servlet的一点小结

    1.什么是servlet servlet是一个Java applet,一个帮助程序.用于帮助浏览器从服务器中获取资源.浏览器-servlet-服务器三者的关系如图所示. 2.servlet的生命周期 ...

  4. js数组乱序输出 数组乱序排列

    网上看的数组乱序输出,要么不合实际,要么代码繁琐.自己试了下,希望能给大家带来帮助. 重要思想也是Math.random*arr.length随机下标,然后删除取到的元素,继续随机下标. //将数组乱 ...

  5. 不定期更新的IDEA功能整理

    目录 不定期更新的IDEA功能整理 idea 命令 Preferences 和 Project Structure Keymap HTTP Proxy Postfix Completion 插件 插件 ...

  6. CentOS6启动流程(含详细流程图)

    参考:Linux启动流程和grub详解(作者:好笔记运维) 为什么把这位的参考放在前面,主要是这位大佬的流程图太详细了.虽说不一定要了解这么详细,但还是很佩服啊.不多说,上图(在新标签中打开图片) 下 ...

  7. iOS 11开发教程(十)iOS11无线连接手机真机测试

    iOS 11开发教程(十)iOS11无线连接手机真机测试 在Xcode 9.0中,已经可以通过无线连接手机进行真机测试了.具体的操作步骤如下: (1)首先需要使用数据线将手机连接到苹果电脑上. (2) ...

  8. python中%r和%s的区别

    %r用rper()方法处理对象 %s用str()方法处理对象 有些情况下,两者处理的结果是一样的,比如说处理int型对象. 例一: print "I am %d years old.&quo ...

  9. NandFlash_control

    驱动:编写任何设备的驱动程序,都需要对该设备的原理有一定了解和认识.对于外部设备的访问总是需要通过一个控制器来间接访问,对于这个控制器的控制程序称为驱动程序 Nandflash 原理: 一:角色分析 ...

  10. #pragma region、{}

    定义一个region,这个region内部的代码你可以把它折叠起来是用于组织代码的,没有其他特别重要的意义. 而{}定义了作用域 { int a = 0; } { int a = 0; }