MySQL日志

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

任何一种数据库中,都有各种各样的日志。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,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
28天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
1月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
|
1月前
|
SQL 缓存 关系型数据库
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
66 0
|
2月前
|
存储 监控 关系型数据库
ELK架构监控MySQL慢日志
ELK架构监控MySQL慢日志
|
2月前
|
SQL 运维 关系型数据库
MySQL中常见的几种日志类型
MySQL中常见的几种日志类型
|
2月前
|
关系型数据库 MySQL 数据库
MySQL员工打卡日志表——数据库练习
MySQL员工打卡日志表——数据库练习
136 0
|
17天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
6天前
|
关系型数据库 MySQL 数据库
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
28 4
|
29天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 中apt 安装MySQL数据库
Ubuntu 中apt 安装MySQL数据库
69 0

热门文章

最新文章