数据库的常用日志

本章内容:

  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 |
+-----------------+-----------+

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

╭─[email protected] ~  
╰─➤  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:让系统自行判定该基于哪种方式进行)

开启二进制日志

╭─[email protected] ~  
╰─➤  vim /etc/my.cnf.d/server.cnf

[server]
log_bin=mysql-bin

二进制日志文件内容查询

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

╭─[email protected] /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

数据库的常用日志_第1张图片

转载于:https://www.cnblogs.com/du-z/p/11164232.html

你可能感兴趣的:(数据库的常用日志)