MySQL学习笔记十:日志管理
1.错误日志文件
MySQL的错误日志文件记录错误信息,还会记录mysqld进程的关闭和启动的信息,但也不是什么错误信息都会记录,只记录mysqld进程运行过程中发生的关键性错误。
错误日志的启动,可以在启动mysqld进程时,通过log-error选项来指定错误日志文件名和存放位置,或者my.ini配置文件中配置log-error参数,如果没有指定文件名的话,会自动生成一个[hostname].err文件保存在{datadir}文件夹下。
在删除错误日志后,会把错误日志重建到[hostname].err.old的文件夹下。删除日志可以使用使用flush logs。
2.慢查询日志,有利于SQL语句调优
慢查询日志会记录所有查询语句执行时间大于系统变量long_query_time的值。默认情况下,慢查询日志功能是被禁止的。
mysql> show variables like 'slow%';
+---------------------+--------------------+
| Variable_name | Value |
+---------------------+--------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | LENOVO-PC-slow.log |
+---------------------+--------------------+
要开启慢查询日志功能,可以在my.ini配置文件中配置以下语句,或直接在客户端设置
slow-query-log=1 --0 关闭
slow_query_log_file="LENOVO-PC-slow.log"
long_query_time=10 --慢查询语句执行时间阀值 set global slow_query_log = on --开启
set global slow_query_log = off --禁止
要查看一个较大的慢查询日志,可以使用mysqldumpslow命令,或者第三方工具mysqlsla。
3.普通查询日志
普通查询日志(Qeneral Query Log),会记录mysqld进程几乎所有的操作,包括客户端的SQL语句查询,数据库和对象的管理操作等等。
普通查询日志的开启或关闭,可以在客户端进行,亦可以在配置文件中设置。
mysql> set global general_log=1;
Query OK, 0 rows affected (0.03 sec) mysql> show variables like 'general%';
+------------------+---------------+
| Variable_name | Value |
+------------------+---------------+
| general_log | ON |
| general_log_file | LENOVO-PC.log |
+------------------+---------------+
2 rows in set (0.00 sec)
如果要在某个会话开启/禁用普通查询日志,可以使用sql_log_off变量来设置。
set sql_log_off = N --1(on) 开启 0(off) 关闭
在mysql5.6版本之前,普通日志会记录用户更新密码的信息,会有安全隐患,不过在5.6版本在记录用户相关信息时会自动重写,将涉及密码的部分加密后再写入。
4.查询日志配置
设置查询日志的输出位置,可以在mysql服务启动时通过--log-output参数指定,也可以在服务运行时设置,如下所示
D:\MySQL\MySQL Server 5.5\bin> mysqld --log-output=Table,File --general_log
--log-output参数值有三个选项,Table,File,None
--Table,即将日志记录到日志表中,相对应的有general_log和slow_log表
--File,将日志记录到文件中
--None,不输出日志
启用普通查询日志和慢查询日志,并输出到表
--log-output=TABLE --general_log --slow_log
在服务运行中设置,主要有log_output,general_log,slow_query_log,sql_log_off等系统变量
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | NONE |
+---------------+-------+ mysql> set global log_output='TABLE';
Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.00 sec)
5.二进制日志文件
二进制日志记录数据库的修改事件,通过二进制日志,能够实现两个非常重要的功能,复制和恢复。
二进制日志的开启,方法1:在配置文件中开启 2:在服务启动时,使用--log-bin参数开启
[mysqld]
log-bin=mysql-bin D:\MySQL\MySQL Server 5.5\bin> mysqld --log-bin=mysql-bin
每次开启mysql服务时,都会新建一个二进制日志文件,其命名格式为[=base_name]-bin.000001,单个日志文件大小不是无限的,有max_binlog_size进行控制
mysql> show variables like 'max_binlog_size';
+-----------------+------------+
| Variable_name | Value |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+
1 row in set (0.00 sec)
开启二进制功能后,也可以通过sql_bin_log变量或者my.ini的binlog-do-db,binlog-ignore-db选项来限制某些语句或者数据库的修改生成二进制日志。
#需要备份数据,多个写多行
binlog-do-db=test
#不需要备份的数据库,多个写多行
binlog-ignore-db=mysql mysql> show variables like 'sql_log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec) mysql> set sql_log_bin=0
查看二进制日志文件,使用mysqlbinlog命令
PS D:\ProgramData\MySQL\MySQL Server 5.5\data> mysqlbinlog .\mysql-bin.000001
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150126 17:25:25 server id 3306 end_log_pos 107 Start: binlog v 4, ser
t startup
ROLLBACK/*!*/;
BINLOG '
查看二进制日志文件并用于数据库恢复
D:\ProgramData\MySQL\MySQL Server 5.5\data> mysqlbinlog .\mysql-bin.000001 | mysql -u root -p
默认情况下,二进制日志不是同步刷新到磁盘的,这就会有丢失数据的隐患,为此mysql提供了一个sync_binlog的系统变量,用来设置二进制日志同步到磁盘的频率。
mysql> set global sync_binlog = x
--当x=0时,二进制日志不与磁盘同步,即mysql不做同步刷新指令将binlog_cache中信息到磁盘 --当X=N时,当进行N次事务提交,并写入二进制日志,mysql将binlog_cache中的信息写入到磁盘;N为1时,系统最安全但性能损耗最大,因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。
MySQL学习笔记十:日志管理的更多相关文章
- MySQL学习笔记十五:优化(2)
一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...
- MySQL学习笔记十四:优化(1)
SQL优化 1.查看各种SQL执行的频率 mysql> show status like 'Com_select';--Com_insert,Com_delete,connections(试图连 ...
- MySQL学习笔记十二:数据备份与恢复
数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...
- MySQL学习笔记十六:锁机制
1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...
- MySQL学习笔记(十二)__连接查询(一)
连接查询含义:又称多表查询,当查询的字段来自多个表时,就会用到连接查询 笛卡尔乘积现象:表1 有 m 行,表2 有 n 行,结果 = m*n 行发生原因:没有有效的连接条件如何避免:添加有效的连接条件 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
- MySQL学习笔记-事务相关话题
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
随机推荐
- 求N个数的最大公约数和最小公倍数(转)
除了分解质因数,还有另一种适用于求几个较小数的最大公约数.最小公倍数的方法 下面是数学证明及算法实现 令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表 ...
- nfs配置注意点
#ip与括号之间不能有空格,不加rw参数时挂载的目录是只读的 /eqp/export/ 10.10.30.0/24(rw,sync,no_root_squash) #更改目录所属的组和所属的用户(nf ...
- 递归一题总结(OJ P1117倒牛奶)
题目: 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数,最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另 ...
- elasticsearch 之mapping
搭好elk 后,有时候会发现kibana 统计数据时,数据类型不对,这个时候就和elasticsearch的mapping有关,虽然我们可以用logstash修改传入es里的数据类型,比如 float ...
- centos 格式化分区
#格式化U盘,成fat32 fdisk -l #获取U盘设备信息 #Disk /dev/sdc: 16.0 GB, 16025387008 bytes, 31299584 sectors#Units ...
- Android分享一款漂亮的折叠书架菜单
一个Android折叠书架菜单,效果极佳,给人的视觉感觉很好,便于使用. FoldingMenu
- TestNG Assert 详解
org.testng.Assert 用来校验接口测试的结果,那么它提供哪些方法呢? 中心为Assert测试类,一级节点为方法例如assertEquals,二级结点为参数类型及参数个数,double 3 ...
- 打造程序员的高效生产力工具-mac篇
打造程序员的高效生产力工具-mac篇 1 概述 古语有云:“工欲善其事,必先利其器” [1] ,作为一个程序员,他最重要的生产资源是脑力知识,最重要的生产工具是什么?电脑. 在进行重要的脑力成果输 ...
- 日志系统实战(三)-分布式跟踪的Net实现
介绍 在大型系统开发调试中,跨系统之间联调开始变得不好使了.莫名其妙一个错误爆出来了,日志虽然有记录,但到底是哪里出问题了呢? 是Ios端参数传的不对?还是A系统或B系统提供的接口导致?相信有不少人遇 ...
- 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库
上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...