MySQL日志

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

任何一种数据库中,都有各种各样的日志。Mysql也不例外,在Mysql中有4种不同的日志,分别为错误日志、二进制日志、查询日志和慢查询日志。这些日志记录着Mysql数据库不同方面的踪迹。下文将介绍这4种不同的日志作用和用途。

二进制日志

二进制日志bin-log记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用。

mySQl所有数据库公用日志文件。

练习1:启动和设置二进制日志

默认情况下二进制日志是关闭的。可通过修改mySQL的配置文件来启动和设置二进制日志。

使用putty连接Ubuntu服务器,更改mySQL配置文件。

root@ubuntuServer:~# vi /etc/mysql/my.cnf

在配置文件的[mysql]下添加log-bin=mysql-bin

注释掉 'default-character-set=utf8

clip_image002

在[mysqld]下,添加log-bin=mysql-bin,指定日志文件。

Binlog-ignore-db=mysql 表示忽略mysql数据库

Binlog-ignore-db=information_schema 表示忽略information_schema数据库

clip_image003

重启mySQL,查看mySQL日志,从编号000001开始。

clip_image004

练习2:日志的读取

对数据库进行操作,创建一个表,插入几行记录。

root@mySQL1:~# mysql -u root -p

mysql> flush logs; 产生新日志文件

mysql> use schoolDB;

mysql> create table testlog (logid int);

mysql> insert into testlog values (1),(2),(3);

可以看到最新的日志,编号为mysql-bin.000002。

clip_image005

查看日志mysqlbinlog /var/lib/mysql/mysql-bin.000002

clip_image006

只查看schoolDB数据库日志。

clip_image007

加-s选项,将上面的内容进行简单显示。

mysqlbinlog /var/lib/mysql/mysql-bin.000002 -d schoolDB -s;

clip_image008

注意观察日志位置,日志中记录了对数据库的操作,使用pos记录操作的结束点。

clip_image009

练习3:日志删除

对于比较繁忙的mySQL,由于每天产生成的日志量大,这些人日志如果长时间不清除,将会对磁盘空间带来很大浪费。清除日志是DBA维护mySQL数据库的一个重要工作内容。

1. 通过reset master重新开始日志

做一下操作之前,需要给系统做快照,因为以下会演示使用不同方法删除日志,所以有日志的状态需要保存一份。

clip_image010

查看日志

clip_image011

clip_image012

2. 清除指定日志以前日志

还原到清除日志前的快照

clip_image013

purge master logs to 'mysql-bin.000002'; 清除日志

clip_image014

3. 清除日志指定时间以前的日志

还原到清除日志前的快照

clip_image013[1]

清除指定时间以前的日志

mysql> system ls -ltr /var/lib/mysql/mysql-bin*

mysql> purge master logs before '2012-08-21 11:24:00';

mysql> system ls -ltr /var/lib/mysql/mysql-bin*

clip_image015

4. 设置日志的过期天数

过期的日志自动删除,减少DBA管理日志的工作量。

回复快照,编辑mySQL配置文件,将过期时间改为3,更改日期,查看过期的日志是否被删除。

编辑mysql配置文件,增加expire log days = 3

clip_image016

重启mySQL

clip_image017

root@mySQL1:~# ls -l /var/lib/mysql/mysql-bin.*

root@mySQL1:~# date

root@mySQL1:~# date -s '20120828 15:32:00'

root@mySQL1:~# mysqladmin flush-logs -u root -p

root@mySQL1:~# ls -l /var/lib/mysql/mysql-bin.*

clip_image018

错误日志

练习4:查看mysql错误日志

错误日志在Mysql数据库中很重要,它记录着mysqld启动和停止,以及服务器在运行过程中发生的任何错误的相关信息。

1.配置信息

log-error=[file-name]用来指定错误日志存放的位置。

如果没有指定[file-name],默认hostname.err做为文件名,默认存放在DATADIR目录中。

也可以将log-error配置到my.cnf文件中,这样就省去了每次在启动mysqld时都手工指定--log-error.例如:

编辑mySQL配置文件。

vi /etc/mysql/my.cnf

可以看到错误日志文件路径

clip_image019

查看错误日志 root@mySQL1:#more /var/log/mysql/error.log

clip_image020

删除错误日志

root@mySQL1:~# mysqladmin -u root -p flush-logs

Enter password:

clip_image021

查询日志

查询日志记录了客户端的所有语句,二进制日志不包含查询数据的语句。

练习5:启用查询日志

编辑mySQL配置文件,启用查询日志。

clip_image022

重启mySQL

clip_image023

clip_image024

查看日志

clip_image025

删除查询日志

慢查日志

慢查日志记录了包含所有执行时间超过long_query_time(单位:秒)所设置的SQL语句日志,获得表锁定的时间不算作执行时间。

练习6:启用慢查日志

本练习更改配置文件,记录查询时间大于2秒的查询。

为了能够容易看到效果,将长查询时间设置为2秒。

clip_image026

重启mySQL

clip_image027

插入99999条学生记录

call addStudent(99999)

填成绩

call fillSore()

查询

select a.*,b.*,c.* from TStudent a join TScore b on a.studentid=b.studentid join

TSubject c on b.subjectid=c.subjectid order by cardid

clip_image028

查看慢查询 vi /var/log/mysql/mysql-slow.log

clip_image029

clip_image030

查看慢日志是否记录了耗时16ms的查询,查看日志

root@mySQL1:~# mysqldumpslow /var/log/mysql/mysql-slow.log

clip_image031

你自己随便创建一个简单查询,看看查询时间小于2秒的,是否在慢查日志中记录下来。



本文转自 onesthan 51CTO博客,原文链接:http://blog.51cto.com/91xueit/1138101,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
195 23
|
6月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
484 90
|
5月前
|
SQL 运维 关系型数据库
MySQL Binlog 日志查看方法及查看内容解析
本文介绍了 MySQL 的 Binlog(二进制日志)功能及其使用方法。Binlog 记录了数据库的所有数据变更操作,如 INSERT、UPDATE 和 DELETE,对数据恢复、主从复制和审计至关重要。文章详细说明了如何开启 Binlog 功能、查看当前日志文件及内容,并解析了常见的事件类型,包括 Format_desc、Query、Table_map、Write_rows、Update_rows 和 Delete_rows 等,帮助用户掌握数据库变化历史,提升维护和排障能力。
|
6月前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
125 16
|
6月前
|
存储 SQL 关系型数据库
mysql的undo log、redo log、bin log、buffer pool
MySQL的undo log、redo log、bin log和buffer pool是确保数据库高效、安全和可靠运行的关键组件。理解这些组件的工作原理和作用,对于优化数据库性能和保障数据安全具有重要意义。通过适当的配置和优化,可以显著提升MySQL的运行效率和数据可靠性。
100 4
|
7月前
|
关系型数据库 MySQL
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
167 3
|
7月前
|
关系型数据库 MySQL 数据库
MySQL日志
本文介绍了MySQL中三个重要的日志:binlog、redolog和undolog。binlog记录数据库更改操作,支持数据恢复、复制和审计;redolog保证事务的原子性和持久性,实现crash-safe;undolog用于事务回滚及MVCC的实现。每个日志都有其独特的作用和应用场景,确保数据库的稳定性和数据一致性。
123 1
|
6月前
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
621 0
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
638 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!

推荐镜像

更多