mysql都有哪些数据库日志_MySQL数据库之MySQL都有哪些日志?分别都代表什么
本文主要向大家介绍了MySQL数据库之MySQL都有哪些日志?分别都代表什么 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。
MySQL日志:主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志、中继日志;
日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。
错误日志
在mysql数据库中,错误日志功能是默认开启的。并且,错误日志无法被禁止。默认情况下,错误日志存储在mysql数据库的数据文件中。错误日志文件通常的名称为hostname.err。其中,hostname表示服务器主机名。
默认情况下错误日志大概记录以下几个方面的信息:服务器启动和关闭过程中的信息(未必是错误信息,如mysql如何启动InnoDB的表空间文件的、如何初始化自己的存储引擎的等等)、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息、在从服务器上启动服务器进程时产生的信息。
记录如下几类信息:
(1) mysqld启动和关闭过程中输出的信息;
(2) mysqld运行中产生的错误信息;
(3) event scheduler运行时产生的信息;
(4) 主从复制架构中,从服务器复制线程启动或关闭时产生的日志;
日志存储位置:
log_error= /var/log/mariadb/mariadb.log | OFF 注:# 给出文件路径,直接表示on。
log_warnings={ON|OFF} # 把警告的信息也记录下来,记录到同一个文件当中
mysql>show global variables like ‘log_error%‘;
mysql>show global variables like ‘log_warnings%‘;
+---------------+------------------------------+
| Variable_name| Value |
+---------------+------------------------------+
| log_error | /var/log/mariadb/mariadb.log|
| log_warnings| 1 |
+---------------+------------------------------+
查询日志
默认情况下查询日志是关闭的。由于查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会产生大量的信息从而导致不必要的磁盘IO,会影响mysql的性能的。如若不是为了调试数据库的目的建议不要开启查询日志。
日志存储位置:
文件:file # 自己指定的文件日志
表:table (mysql.general_log) # 数据库当听指定的数据日志表
desc general_log; # 里的各个字段的信息
general_log={ON|OFF} # 是否开启,默认是没有开启的
general_log_file=HOSTNAME.log # 如果不手动指定文件路径的话,会自动在当前的目录下创建一个以主机名为文件名的日志文件 如: general_log_file centos7.log
log_output={FILE|TABLE|NONE} # 日志是记录到数据库当中还是以文件的方式存储
file: 文件有效,表无效
table: 表有效,文件无效
none: 两者都无效,就算上面开启了记录日志的功能,也是无效的
mysql>show global variables like ‘log_out%‘;
mysql>show global variables like ‘general%‘;
mysql>set @@global.general_log=on; # 修改全局变量值,也可以修改当前会话的值-->session
mysql>set @@global.log_output=‘table‘;
+------------------+-------------+
| Variable_name | Value |
+------------------+-------------+
| general_log | OFF |
| general_log_file| centos7.log|
| log_output | FILE |
+------------------+-------------+
慢查询日志
慢查询日志是用来记录执行时间超过指定时间的查询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询语句。可以帮助我们定位性能问题的。
慢查询:运行时间超出指定时长的查询; # 默认为10s
long_query_time
日志存储位置:
文件:FILE
表:TABLE - - > mysql.slog_log
log_slow_queries={ON|OFF} # 是否启用
slow_query_log={ON|OFF} # 是否启用,mariadb默认使用 注:会根据版本的不同来指定
slow_query_log_file=
log_output={FILE|TABLE|NONE}
log_slow_filter=admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
注:定义过滤器的,如上面,基于管理的、排序、磁盘排序、全连接、查询等等(默认值)
log_slow_rate_limit
log_slow_verbosity
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| log_output | FILE |
| long_query_time | 10.000000 |
| slow_query_log | OFF |
| slow_query_log_file | centos7-slow.log |
| log_slow_queries | OFF | |
| log_slow_rate_limit | 1 | |
| log_slow_verbosity |
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,
query_cache,query_cache_miss,tmp_table,tmp_table_on_disk | |
+-----------------+-----------+
事务日志
事务型存储引擎innodb用于保证事务特性的日志文件,存储引擎在修改表的数据时只需要修改其内存拷贝,再把改修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的,我们通常称之为预写式日志,修改数据需要写两次磁盘。
如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具有的恢复方式则视存储引擎而定。
日志存储位置:
innodb_log_files_in_group # 至少要有2个
注:在数据库目录下 - -> ib_logfile0 、ib_logfile1
innodb_log_group_home_dir
innodb_log_file_size
innodb_mirrored_log_groups
注:能将信息存储的随机,变成顺序存储的一个过程(提升了读写性能),因为首先全部写入的事务日志,然后全部写入,并不是执行一个事务写入一次(数据存放的位置基于不固定)。
+---------------------------+---------+
| Variable_name | Value |
+---------------------------+---------+
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_mirrored_log_groups| 1 |
| innodb_log_file_size | 5242880 |
+---------------------------+---------+
二进制日志
用于记录引起数据改变或存在引起数据改变的潜在可能性的语句(STATEMENT)或改变后的结果(ROW),也可能是二者混合;
功用:“重放” # 读语句是不会记录的
二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。
二进制日志中常用的定义格式:
log_bin=/PATH/TO/BIN_LOG_FILE # 最好放在其它目录、磁盘上,万一数据库崩了,还要依靠二进制日志恢复
session.sql_log_bin={ON|OFF} # 是否开启二进制日志文件
max_binlog_size=1073741824 # 单位字节,单个文件最大值,超过自动滚动
sync_binlog={1|0} # 是否做同步(数据从内存同步到磁盘)
binlog_format={STATEMENT|ROW|MIXED}
1、语句(statement):默认的记录格式;
2、行(row):定义的并非数据本身而是这一行的数据是什么;
3、混合模式(mixed):交替使用行和语句、由mysql服务器自行判断。
其中基于行的定义格式数据量会大一些但是可以保证数据的精确性。
示例格式:
# at 553
#160831 9:56:08 server id 1 end_log_pos 624 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1472608568/*!*/;
BEGIN
/*!*/;
事件的起始位置:# at 553
事件发生的日期时间:#160831 9:56:08
事件发生的服务器id:server id 1 # 默认的都是1
事件的结束位置:end_log_pos 624
事件的类型:Query
事件发生时所在服务器执行此事件的线程的ID: thread_id=2
语句的时间戳与将其写入二进制日志文件中的时间差:exec_time=0 # 没有1秒都为0
错误代码:error_code=0
设定事件发生时的时间戳:SET TIMESTAMP=1472608568/*!*/;
事件内容:BEGIN
mysql>SHOW MASTER|BINARY LOGS; # 查看所有二进制日志文件信息
mysql>SHOW MASTER STATUS; # 查看当前的二进制日志文件信息(文件、节点位置)
mysql>SHOW BINLOG EVENTS IN ‘bin-log.000002‘; # 查看某个二进制日志文件当中详细信息
[root-xdg]# mysqlbinlog -j 223 bin-log.000002 # bash当中查看二进制日志命令,文件路径
中继日志
当要使用主-从复制的时候,就要使用到中继日志了,它是从主数据库服务器上记录下来二进制日志文件,再同步到自己的数据库服务器上的中继日志文件,然而读取中继日志文当中的内容来进行同步的功能;
主数据库服务器:会开启一个dump-thread的进程来响应
从数据库服务器:会开启一个io-thread的进程来请求,通过SQL-thread来执行中继日志当中的信息同步到本地
日志存储位置:
relay_log = /path/filename # 在配置文件当中开启记录中继日志
server_id = 2 # 主-从配置的时候,分别指定不同的设备名
+-----------------------+----------------+
| Variable_name | Value |
+-----------------------+----------------+
| relay_log | /app/relay-log |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_recovery | OFF |
| relay_log_space_limit | 0 |
| server_id | 2 |
+-----------------------+----------------+
以上就介绍了MySQL的相关知识,希望对MySQL有兴趣的朋友有所帮助。了解更多内容,请关注职坐标数据库MySQL频道!
mysql都有哪些数据库日志_MySQL数据库之MySQL都有哪些日志?分别都代表什么相关推荐
- mysql数据库回滚日志_Mysql数据库应急响应中日志排查
常见的数据库攻击包括弱口令.SQL注入.提升权限.窃取备份等.对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源. 0x01 Mysql日志分析 general query log ...
- mysql insert 不需要日志_MySQL数据库性能优化(1)「转」
1.MySQL概述 从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案.关系型数据库的选型将以创业公司.互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程 ...
- python操作数据库慢_MySQL数据库之python 拉取mysql 慢日志
本文主要向大家介绍了MySQL数据库之python 拉取mysql 慢日志 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. #!/usr/bin/env python #impo ...
- mysql r和n的区别_mysql数据库 r n
mysql集群的备份与还原 应用场景 当使用mysql集群数据库的时候,有时候会误删一些数据,那么数据就缺失了完整性,现在需要将数据进行备份,将误删的数据还原出来,这样保证数据的完整性. 操作步骤 注 ...
- mysql 数据库事务处理_MySQL数据库事务及其原理
基本概念 MySQL 事务主要用于处理操作量大,复杂度高的数据. 银行转账是经典的解释事务的例子.用户A给用户B转账5000元主要步骤可以概括为如下两步. 第一,账户A账户减去5000元: 第二,账户 ...
- mysql cluster 查看最大索引数_MySQL 数据库优化,看这篇就够了
3.优化表:使用OPTIMIZE关键字,如OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user; LOCAL|NO_WRITE_TO_BINLOG都是表示不写入 ...
- mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库 查看所有数据库:SHOW DATABASES 创建数据库:CREATE DA ...
- mysql数据库架构_MySQL数据库之互联网常用架构方案
一.数据库架构原则 高可用 高性能 可扩展 一致性 二.常见的架构方案 方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用 jdbc:mysql://vip:3306/xxdb 高可用分析: ...
- mysql数据库语言_mysql数据库sql语句基础知识
1.数据库操作 查看当前数据库 SELECT DATABASE(); 显示用户名,数据库版本 SELECT user(), version(); 创建库 CREATE DATABASE[ IF NOT ...
最新文章
- HDLBits 系列(21)LFSR(线性反馈移位寄存器)
- php中redis怎么使用,redis 怎么使用
- 系统程序员成长计划-组合的威力
- 机器学习数据集哪里找:最佳数据集来源盘点
- avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机控制8段LED数码管同时显示 - AVR单片机8位数码管显示的程序实现(两种方法介绍)...
- Android 自定义Dialog 去除阴影
- css 水印_Inpaint,一款简洁干净的去水印软件
- 一个黑客都要学习什么语言
- 8、Ndk开发小记一
- 富文本TinyMCE
- 无符号类型数字的加减
- 我希望进入大学时就能知道的一些事儿
- 倒计时 妙味课堂_妙味课堂——JavaScript基础课程笔记
- Java小程序--多彩时钟表盘的制作
- Rss Feed是什么
- 记在拿到cvte的offer之后
- 蓝牙耳机的LDAC、aptX指的都是什么?
- 英语知识系列:按发音规律重排的英语音标
- 2022hit计算机系统大作业
- 首篇NLP领域图神经网络综述:127页,从图构建到实际应用面面观
热门文章
- c语言排序算法_C语言写排序算法(二) —— 选择排序
- html和c的区别,tn-s系统与TN-C的区别是什么
- java -jar 怎么停止_图解Java日志体系
- 带滚动条html转pdf只有一页,关于html页面导出pdf滚动条以下显示不全的问题
- 北工大 研究生 计算机 导师,北京工业大学
- OpenShift 4 - 通过DaemonSet在指定Node上运行守护程序
- 使用.NET Core 3.0 预览版,Web API和Visual Studio 2019进行ASP.NET Core Blazor游戏开发
- odoo12 启动过程中出现的问题解决
- C# -- 在底图上动态生成文字和图片
- linux运行多个c文件路径,linux c的连接库和怎么同时编译多个源程序