wdcp mysql日志文_mysql的日志简单总结
事务日志
redo log
mysql的innodb引擎在开启事务后,中间的操作都会先在内存中进行。然后将这些数据先写入到redo log中--“日志先行”(Write-Ahead Logging),因为写入到rero log是磁盘某块区域的顺序写入,所以效率更高。事务提交后也不一定就立刻将redo日志里的数据写入磁盘,一般是慢慢刷新分批写入到磁盘,减轻数据库压力。如果数据库崩溃或者机器宕机,系统重启或恢复的时候,可以根据redo log中的日志信息,将已完成的事务操作写入到数据库中,而对未完成的事务则进行回滚。
undo log
uodo log只有负责数据的回滚,一般保存的是事务执行操作的前的状态。
相关变量
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_spin_cpu_abs_lwm | 80 |
| innodb_log_spin_cpu_pct_hwm | 50 |
| innodb_log_wait_for_flush_spin_hwm | 400 |
| innodb_log_write_ahead_size | 8192 |
+------------------------------------+----------+
10 rows in set (0.00 sec)
mysql> show variables like '%innodb_flush_log%';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout | 1 |
| innodb_flush_log_at_trx_commit | 1 | #事务提交策略,建议修改为2
+--------------------------------+-------+
2 rows in set (0.00 sec)
错误日志
记录mysqld启动,运行和结束中输出的错误或警告信息
相关变量
mysql> show variables like 'log_error%';
+----------------------------+----------------------------------------+
| Variable_name | Value |
+----------------------------+----------------------------------------+
| log_error | /var/log/mysqld.log | #错误日志存放路径
| log_error_services | log_filter_internal; log_sink_internal |
| log_error_suppression_list | |
| log_error_verbosity | 2 | #mysql5.7.2后出现的系统变量,代替原来的log_warnings,错误日志的详细等级,数值越高越详细,注意:mysql 8.0,3之后版本已经移除了log_warnings变量。
+----------------------------+----------------------------------------+
4 rows in set (0.00 sec)
通用日志
记录客户端对数据库的各种操作,包括sql语句执行记录等。
相关变量
mysql> show variables like 'general_log%';
+------------------+----------------------------+
| Variable_name | Value |
+------------------+----------------------------+
| general_log | OFF | #默认未启用状态
| general_log_file | /var/lib/mysql/centos7.log | #日志存放路径
+------------------+----------------------------+
2 rows in set (0.00 sec)
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE | #日志存放类型,有none,file,table三种类型。
+---------------+-------+
1 row in set (0.00 sec)
慢查询日志
记录执行时间超过long_query_time变量设置时间的查询,也可以记录一些没有使用索引的sql。
相关变量
mysql> show variables like 'slow_query%';
+---------------------+---------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------+
| slow_query_log | OFF | #默认未开启
| slow_query_log_file | /var/lib/mysql/centos7-slow.log | #日志存放路径
+---------------------+---------------------------------+
2 rows in set (0.01 sec)
mysql> show variables like 'long_query%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 | #超过这个时长的查询将会被记录
+-----------------+-----------+
1 row in set (0.00 sec)
mysql> show variables like 'log_queries%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF | #开启此项后,没有使用索引的sql也将被记录
+-------------------------------+-------+
1 row in set (0.00 sec)
慢查询相关分析工具
mysqldumpslow
profile
mysql> select @@profiling;
+-------------+
| @@profiling |
+-------------+
| 0 |
+-------------+
1 row in set, 1 warning (0.01 sec)
mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show tables;
ERROR 1046 (3D000): No database selected
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql> create tables t1(id int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tables t1(id int)' at line 1
mysql> show profiles;
+----------+------------+--------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------+
| 1 | 0.00010625 | show tables |
| 2 | 0.01226175 | show databases |
| 3 | 0.00008175 | create tables t1(id int) |
+----------+------------+--------------------------+
3 rows in set, 1 warning (0.00 sec)
mysql> show profile;
+---------------+----------+
| Status | Duration |
+---------------+----------+
| starting | 0.000062 |
| freeing items | 0.000014 |
| cleaning up | 0.000006 |
+---------------+----------+
3 rows in set, 1 warning (0.01 sec)
mysql> show profile for query 2;
+----------------------------+----------+
| Status | Duration |
+----------------------------+----------+
| starting | 0.008047 |
| checking permissions | 0.000024 |
| Opening tables | 0.001117 |
| init | 0.000585 |
| System lock | 0.000035 |
| optimizing | 0.000205 |
| statistics | 0.000504 |
| preparing | 0.000191 |
| Creating tmp table | 0.000337 |
| executing | 0.000841 |
| end | 0.000027 |
| query end | 0.000006 |
| waiting for handler commit | 0.000021 |
| removing tmp table | 0.000006 |
| waiting for handler commit | 0.000006 |
| closing tables | 0.000016 |
| freeing items | 0.000277 |
| cleaning up | 0.000020 |
+----------------------------+----------+
18 rows in set, 1 warning (0.00 sec)
mysql> show profile cpu for query 2;
+----------------------------+----------+----------+------------+
| Status | Duration | CPU_user | CPU_system |
+----------------------------+----------+----------+------------+
| starting | 0.008047 | 0.008023 | 0.000000 |
| checking permissions | 0.000024 | 0.000015 | 0.000000 |
| Opening tables | 0.001117 | 0.001128 | 0.000000 |
| init | 0.000585 | 0.000582 | 0.000000 |
| System lock | 0.000035 | 0.000027 | 0.000000 |
| optimizing | 0.000205 | 0.000208 | 0.000000 |
| statistics | 0.000504 | 0.000503 | 0.000000 |
| preparing | 0.000191 | 0.000191 | 0.000000 |
| Creating tmp table | 0.000337 | 0.000338 | 0.000000 |
| executing | 0.000841 | 0.000847 | 0.000000 |
| end | 0.000027 | 0.000016 | 0.000000 |
| query end | 0.000006 | 0.000006 | 0.000000 |
| waiting for handler commit | 0.000021 | 0.000020 | 0.000000 |
| removing tmp table | 0.000006 | 0.000007 | 0.000000 |
| waiting for handler commit | 0.000006 | 0.000006 | 0.000000 |
| closing tables | 0.000016 | 0.000016 | 0.000000 |
| freeing items | 0.000277 | 0.000279 | 0.000000 |
| cleaning up | 0.000020 | 0.000018 | 0.000000 |
+----------------------------+----------+----------+------------+
18 rows in set, 1 warning (0.00 sec)
二进制日志
记录会引起数据改变的SQL。多用于数据还原和主从复制
相关变量
sql_log_bin #是否开启二进制日志
log_bin #指定文件位置
binlog_format #默认格式statement,建议根据需求改为row和mixed
max_binlog_size #单个二进制日志最大体积,默认1G
expire_logs_days #二进制日志自动删除的天数,默认为0
二进制日志相关命令
# 查看二进制日志文件列表和大小
mysql> show master logs;
+----------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+----------------+-----------+-----------+
| bin-log.000001 | 32388 | No |
| bin-log.000002 | 156 | No |
+----------------+-----------+-----------+
2 rows in set (0.00 sec)
mysql> show binary logs;
+----------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+----------------+-----------+-----------+
| bin-log.000001 | 32388 | No |
| bin-log.000002 | 156 | No |
+----------------+-----------+-----------+
2 rows in set (0.00 sec)
# 查看正在使用的二进制日志文件
mysql> show master status;
+----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------+----------+--------------+------------------+-------------------+
| bin-log.000002 | 156 | | | |
+----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
# 查看二进制文件内容
mysql> show binlog events;
+----------------+-------+----------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
|
+----------------+-------+----------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| bin-log.000001 | 4 | Format_desc | 1 | 125 | Server ver: 8.0.21, Binlog ver: 4 |
| bin-log.000001 | 125 | Previous_gtids | 1 | 156 | |
| bin-log.000001 | 156 | Anonymous_Gtid | 1 | 235 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| bin-log.000001 | 235 | Query | 1 | 418 | CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */ /* xid=16 */ |
| bin-log.000001 | 418 | Anonymous_Gtid | 1 | 495 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| bin-log.000001 | 495 | Query | 1 | 634 | use `hellodb`; DROP TABLE IF EXISTS `classes` /* generated by server */ |
| bin-log.000001 | 634 | Anonymous_Gtid | 1 | 713 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
# 删除二进制文件
PURGE BINARY LOGS TO 'mysql-bin.00001';
PURGE BINARY LOGS BEFORE '2020-10-10 10:10:10';
RESET MASTER TO 1234;
SHOW BINARY LOGS;
+-------------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+-------------------+-----------+-----------+
| master-bin.001234 | 154 | No |
+-------------------+-----------+-----------+
#切换日志文件
flush logs;
二进制日志客户端查看工具
mysqlbinlog
[root@centos7 mysql]#mysqlbinlog bin-log.000002
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#201013 22:29:02 server id 1 end_log_pos 125 CRC32 0x8f94c3aa Start: binlog v 4, server v 8.0.21 created 201013 22:29:02 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
rrmFXw8BAAAAeQAAAH0AAAABAAQAOC4wLjIxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACuuYVfEwANAAgAAAAABAAEAAAAYQAEGggAAAAICAgCAAAACgoKKioAEjQA
CigBqsOUjw==
'/*!*/;
# at 125
#201013 22:29:02 server id 1 end_log_pos 156 CRC32 0x5873f06a Previous-GTIDs
# [empty]
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
wdcp mysql日志文_mysql的日志简单总结相关推荐
- mysql ib_logfile 数量_Mysql 事务日志(Ib_logfile)
mysql的innodb中事务日志ib_logfile(0/1) 概念: 事务日志或称redo日志,在mysql中默认以ib_logfile0,ib_logfile1名称存在,可以手工修改参数,调节开 ...
- mysql二进制日志特点_MySQL二进制日志分析-概述篇
MySQL从3.23版本开始引入了二进制日志,用于的数据复制, 二进制日志根据MySQL的版本不同,目前有4个版本: https://dev.mysql.com/doc/internals/en/bi ...
- mysql qpstps测试_mysql操作日志
关于 mysql操作日志的搜索结果 回答 增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64).增量备份要确保打开了二进制 ...
- mysql二进制日志管理_MYSQL二进制日志管理脚本
MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...
- linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志
mysql有以下几种日志: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-update 二进制 ...
- 开启mysql日志记录_Mysql开启日志记录
vim /etc/my.conf.d/server.cnf: #lower_case_tables_name = 1 #错误日志 log_error = /var/log/mysql_error.lo ...
- mysql二进制日志重置_MySQL二进制日志备份和恢复详解
原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...
- mysql 主从日志文件_mysql 主从日志文件mysql
[导读]默认情况下mysql会一直保留mysql-bin文件,这样到一定时候,磁盘可能会被撑满,这时候是否可以删除这些文件呢,是否可以安全删除,是个问题,不建议使用rm命令删除,这样有可能会不安全,正 ...
- mysql增加重做日志组_mysql重做日志
一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...
最新文章
- 计算机相关专业学习经验总结
- 初一模拟赛总结(2019.3.9)
- .net pdf转图片_pdf2image类库实现批量pdf转图片
- linux 安装libcurl4-gnutls-dev,curl / curl.h,libcurl,libcurl4-openssl-dev,libcurl4-nss-dev库之间的区别?...
- 有多少漏洞都会重来:从ElasticSearch到MongoDB和Redis
- Spring框架----切入点表达式的写法
- Selenium的定位元素
- Redhat7系统root用户密码破解
- 计算机b类核心期刊有哪些,cssci、A类、B类、C类、核心期刊都是什么等级的期刊?...
- VEH与SetUnhandledExceptionFilter
- 清明五一假期催热周边自驾游 迪庆州应势推出“杜鹃花之旅”
- 手写Bundle Adjustment
- 用putty连接虚拟机下ubuntu ssh
- 上班拧螺丝的时候不小心空手造了个RPC框架,赶紧记录一下
- 大小限制_微信传文件有大小限制怎么办?教你3秒把100MPPT压缩成10M
- 解决方案:h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器
- Linux 进程挂起、恢复相关命令
- source insight 4.0 选择后,相同单词全部高亮
- 中国财团买得了 Opera,买不了仙童半导体?
- Ubuntu18.04解决github提交代码Support for password authentication was removed 问题
热门文章
- 【elasticsearch】 Elasticsearch集群规模和容量规划的底层逻辑
- 【es】Elasticsearch:inverted index,doc_values及source
- 【java】java如何证明java发生了指令重排序
- Spark Structured : HIve jdbc方式访问待下划线的表,找不到表的错误
- 【Kafka】报错:Error while fetching metadata with correlation id 1 : {topic_lcc=LEADER_NOT_AVAILABLE}
- drools 7.x DSL领域语言入门
- SpringCloud集成Dubbo实现RPC调用
- 这一次搞懂 Spring 的 Bean 实例化原理
- SpringBoot 如何统计、监控 SQL运行情况?
- java多线程 游戏_java利用多线程和Socket实现猜拳游戏