• 数据库的常用日志


    本章内容:

    1. 查询日志
    2. 慢查询日志 ***
    3. 错误日志
    4. 二进制日志 *****
    5. 中继日志
    6. 事务日志 ****

    mariadb 日志文件默认路径:/var/lib/mysql


    查询日志

    1. 数据库的查询日志记录了每一条sql语句;
    2. 访问量较大时建议不开启,因为设想一下如果同时又几百万个用户同时访问数据库,查询日志的记录就会占用大量的系统开销,直接影响服务器性能;

    开启方式

    vim /etc/my.cnf.d/server.cnf 
    	general_log = ON| OFF            #查询日志开关
    	general_log_file localhost.log            #查询日志的文件名字(/var/lib/mysql)
    	log_output TABLE | FILE | NONE       #查询日志的存储形式
    

    慢查询日志* * * *

    1. 它用来记录在mariadb中响应时间超过阀值的语句。具体指运行时间超过long_query_time值的SQL语句,则会被记录到慢查询日志中。
    2. 慢查询日志是做数据优化可查的分析项
    slow_query_log = OFF|ON           #开启慢查询日志
    slow_query_log_file = LOCALHOST-SLOW.log        #慢查询日志的文件路径
    long_query_time               #慢查询时长;默认是10s
    log_slow_rate_limit           #如果要记录的慢查询日志非常多的话,会按照速率来记录,默认1秒记录一个
    log_slow_verbosity=full | query_plan         #记录的详细级别
    

    第一步:查看默认设置

    MariaDB [mysql]> show variables like '%slow_query%';
    +---------------------+--------------------+
    | Variable_name       | Value              |
    +---------------------+--------------------+
    | slow_query_log      | OFF                |
    | slow_query_log_file | localhost-slow.log |
    +---------------------+--------------------+
    
    

    查看默认等待时长

    MariaDB [(none)]> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    
    

    第二步:编辑配置文件开启慢查询日志

    ╭─root@localhost.localdomain ~  
    ╰─➤  vim /etc/my.cnf.d/server.cnf 
    
    [server]
    slow_query_log=1
    long_query_time=3
    
    

    第三步:可以用测试命令:select sleep(4)


    错误日志

    1. 错误日志包含了mariadb 启动和关闭的次数.
    2. 包含了错误,警告,和注释的相关诊断信息.
    3. mariadb 在运行时,如果你的mariadb 中的表需要自动检查或者修复.这些信息都会写入到error log 里面.
    4. 在主从复制架构中的从服务器上启动从服务器线程时产生的信息
    5. event scheduler 运行一个event时产生的日志信息
    log_error = /var/log/mysql_error.log#指定错误日志的输出位置
    log_warnings 为0, 表示不记录告警信息。
    log_warnings 为1, 表示告警信息写入错误日志。
    log_warnings 大于1, 表示各类告警信息,例如有关网络故障的信息和重新连接信息写入错误日志。(默认为2)
    
    MariaDB [mysql]> show variables like '%log_warning%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_warnings  | 2     |
    +---------------+-------+
    

    二进制日志* * * * *

    1. 二进制日志:记录着所有更改数据的语句,可以用于数据的恢复,并且是针对时间点还原
    2. 二进制日志:是在数据库中起着至关重要的作用(主从架构,数据备份,数据恢复等)
    log_bin = OFF | ON
    log_bin_basename = /var/lib/mysql/mysql-bin	
    sql_log_bin=1|0    #是否启用二进制日志
    log_bin_index=PATH    #二进制日志索引位置
    sync_binlog=1|0     #设定是否启动二进制日志同步功能
    max_binlog_size=SIZE      #单个二进制文件最大体积,默认为1G
    expire_logs_days=0       #超过多少天就清除二进制日志,默认为0,代表不启用此功能
    binlog_format=STATEMENT|ROW|MIXED       
    #二进制记录格式(STATEMENT:基于“语句”记录; ROW:基于“行”记录 ;MIXED:让系统自行判定该基于哪种方式进行)
    

    开启二进制日志

    ╭─root@localhost.localdomain ~  
    ╰─➤  vim /etc/my.cnf.d/server.cnf
    
    [server]
    log_bin=mysql-bin
    
    

    二进制日志文件内容查询

    用数据库自带的日志查看工具mysqlbinlog

    ╭─root@localhost.localdomain /var/lib/mysql  
    ╰─➤  mysqlbinlog mysql-bin.000001 
    
    

    查看position(数据的位置)

    #手动滚动二进制日志文件
    
    MariaDB [mysql]> flush logs;
    Query OK, 0 rows affected (0.006 sec)
    
    
    #查看所有二进制日志文件
    
    MariaDB [mysql]> show master logs;
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000001 |       375 |
    | mysql-bin.000002 |       371 |
    +------------------+-----------+
    
    #查看当前位置
    
    MariaDB [mysql]> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000002 |      371 |              |                  |
    +------------------+----------+--------------+------------------+
    
    

    二进制日志文件滚动

    1. flush logs;
    2. 文件超出指定大小
    3. service mariadb restart

    客户端命令工具:mysqlbinlog

    通过二进制日志恢复还原数据库文件

    mysqlbinlog [options] log_file ...
    --start-datetime=
    --stop-datetime=
    		
    		
    --start-position=
    --stop-position=
    

    中继日志

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


    事务日志* * * *

    InnoDB的事务日志主要分为redo log(重做日志,提供前滚操作)和undo log(回滚日志,提供回滚操作),为了最大程度上减少数据写入时io问题,在存储引擎修改表的数据时,会将数据从磁盘拷贝到内存中,然后修改内存中的数据拷贝,再将修改行为持久化到磁盘中(先写redo log buffer(日志缓冲区)(PS:这块我会在下文详细说明),再定期批量写入),而不用每次将修改的数据本身持久化到硬盘中.

    事务日志参数

    innodb_buffer_pool_size        			一般设置成为物理内存的3/4,或者4/5
    innodb_log_files_in_group = 2  			事务日志文件的个数,默认为2个事务日志文件
    innodb_log_file_size = 50331648(48m)	事务日志文件的单个大小48m
    innodb_log_group_home_dir = ./ 			事务日志文件的所在路径,默认mariadb的数据目录/var/lib/mysql
    

    查看

    MariaDB [mysql]> show variables like '%innodb_log%';
    +-----------------------------+----------+
    | Variable_name               | Value    |
    +-----------------------------+----------+
    | innodb_log_buffer_size      | 16777216 |
    | innodb_log_checksums        | ON       |
    | innodb_log_compressed_pages | ON       |
    | innodb_log_file_size        | 50331648 |
    | innodb_log_files_in_group   | 2        |
    | innodb_log_group_home_dir   | ./       |
    | innodb_log_optimize_ddl     | ON       |
    | innodb_log_write_ahead_size | 8192     |
    +-----------------------------+----------+
    8 rows in set (0.002 sec)
    
    # -- 缓冲池(buffer_pool)大小非常重要
    
    MariaDB [mysql]> show variables like '%innodb_buffer_pool_size%';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |
    +-------------------------+-----------+
    1 row in set (0.001 sec)
    
    

    事务日志推荐文章:https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html

  • 相关阅读:
    SSH公/私秘钥的生成及使用
    使用docker-compose部署Kafka集群
    使用docker或者docker-compose部署Zookeeper集群
    zookeeper相关概念
    redis相关概念
    mq-rabbitmq
    mysql事务隔离级别
    新自动化测试框架+微信机器人构建思路
    当eclipse调用tomcat的时候发生了什么?
    .net 获取配置项
  • 原文地址:https://www.cnblogs.com/du-z/p/11164232.html
Copyright © 2020-2023  润新知