MySQL日志管理

mysql日志(默认存放在datadir):

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,查询日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。

  1. 错误日志 --错误日志,记录mysql服务端在运行时产生的错误信息 以及mysql启动和关闭时的日志信息
  2. 查询日志 --select * from xxx; show databases;记录建立的客户端连接和执行的语句
  3. 慢查询日志 --慢查询时间阀值,以秒为单位,如果超过这个阀值就是慢查询
  4. binlog二进制日志 --记录对数据库增、删、改的SQL操作,可以使用这个日志做增量备份
  5. 事务日志 --每次增、删、改的SQL操作时,会把操作SQL语句写在事务日志,只innodb存储引擎才支持事务日志
  6. relay-binlog --主从复制日志,从机器上从主机器复制过来日志,根据日志来同步数据。 记录所有更改数据的语句。还用于复制。

查询日志

# 查看mysql版本
mysql> show variables like '%version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| innodb_version | 5.6.37 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.6.37 |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
7 rows in set (0.01 sec)
# 查看查询日志系统变量
mysql> show variables like '%general%';
+------------------+-------------------------------------+
| Variable_name | Value |
+------------------+-------------------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/vagrant-centos65.log | #没有开启的情况下不会有这个文件
+------------------+-------------------------------------+
2 rows in set (0.00 sec) # 开启查询日志 mysql> set @@global.general_log=1;
Query OK, 0 rows affected (0.00 sec)
#查看查询日志
[root@vagrant-centos65 mysql]# cat vagrant-centos65.log
/usr/sbin/mysqld, Version: 5.6.37 (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
170929 15:37:08 20 Query show variables like '%general%'
170929 15:37:12 20 Query set @@global.general_log=0
/usr/sbin/mysqld, Version: 5.6.37 (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
170929 15:38:37 20 Query show databases
170929 15:38:38 20 Query SELECT DATABASE()
20 Init DB aaaa
20 Query show databases
20 Query show tables
20 Field List t1
20 Field List t2
20 Field List t3
170929 15:38:50 20 Query show tables
170929 15:38:54 20 Query select * from t1
170929 15:38:56 20 Query select * from t2
170929 15:38:59 20 Quit

错误日志:

mysql 启动和关闭 ,报错

mysql>  show variables like '%error%';
+--------------------+------------------------------+
| Variable_name | Value |
+--------------------+------------------------------+
| error_count | 0 |
| log_error | /data2/rhel6.example.com.err |
| max_connect_errors | 10 |
| max_error_count | 64 |
| slave_skip_errors | OFF |
+--------------------+------------------------------+
5 rows in set (0.00 sec) [root@rhel6 ~]# vim /data2/rhel6.example.com.err
[root@rhel6 ~]# : > /data2/rhel6.example.com.err
[root@rhel6 ~]# mysqladmin -uroot shutdown
[root@rhel6 mysql-glibc]# ./bin/mysqld_safe & 模拟故障:
[root@rhel6 data2]# mkdir bak
[root@rhel6 data2]# mv mysql bak/
[root@rhel6 mysql-glibc]# mysqladmin -uroot shutdown [root@rhel6 data2]# cd /opt/mysql-glibc/
[root@rhel6 mysql-glibc]# ./bin/mysqld_safe & [root@rhel6 mysql-glibc]# cat /data2/rhel6.example.com.err
[ERROR]
[root@rhel6 mysql-glibc]# cd /data2/
[root@rhel6 data2]# mv bak/mysql/ ./ [root@rhel6 mysql-glibc]# ./bin/mysqld_safe &

二进制日志(binlog日志):

二进制日志(又叫binlog日志)记录了所有增删改语句,但是不包括数据查询语句,语句是以“事件”的形式保存的,它描述数据更改的过程。该日志的两个主要功能是:数据的恢复与数据的复制。

  1. 数据的恢复:MySQL本身具备数据备份和恢复功能。比如,我们每天午夜12:00进行数据的备份。如果某天,下午13:00,数据库出现故障,导致数据库内容丢失。我们可以通过二进制日志解决这个问题。解决思路是,可以先将前一天午夜12:00的数据备份文件恢复到数据库,然后再使用二进制日志回复从前一天午夜12:00到当天13:00对数据库的操作。
  2. 数据复制:MySQL支持主从服务器间的数据复制功能,并通过该功能实现数据库的冗余机制以保证数据库的可用性和提高数据库德性能。MySQL正是通过二进制日志实现数据的传递。主服务器上的二进制日志内容会被发送到各个从服务器上,并在每个从服务器上执行,从而保证了主从服务器之间数据的一致性。
mysql> show variables like '%bin%'; #查看二进制日志的参数
+-----------------------------------------+----------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------+
| binlog_cache_size | 32768 | # 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存。
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | STATEMENT |
| binlog_stmt_cache_size | 32768 |
| innodb_locks_unsafe_for_binlog | OFF |
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size|18446744073709547520 |
| sql_log_bin | ON |
| sync_binlog | 0 |
+-----------------------------------------+----------------------+
12 rows in set (0.00 sec)

mysql> set global log_bin=on; ERROR 1238 (HY000): Variable 'log_bin' is a read only variable

开启二进制日志

​```shell

binary log

log-bin = mysqld-bin

log-bin-index = /abc/logs/binlog_index

注意在5.7之后的版本开启二进制日志还需要添加一个server_id参数,且如果存在主从数据库的情况下,主库的server_id值必须大于从库

server_id = 1


![](https://img2018.cnblogs.com/blog/1585980/201905/1585980-20190512212533290-1184589260.png) 重启一下mysql 二进制日志就已经开启了 ### 查看二进制日志: ![](https://img2018.cnblogs.com/blog/1585980/201905/1585980-20190512212733171-834969308.png) ### binlog日志属性: ```shell
mysqld-bin.000001 | 三种情况会产生新的日志 1.超过1G 2.关闭mysqld 3.截断日志
mysql> flush logs; --截断日志 会重新生成一个Binlog日志文件

注意: 最后一个日志就是当前使用的日志 二进制日志只记录 增删改, 不会记录查询的语句

二进制日志管理:

mysql> show binary logs;                    --查看当前所有的二进制日志
mysql> PURGE BINARY LOGS BEFORE '2012-03-26 16:21:00';
mysql> purge binary logs to 'mysqld.000005'; --删除mysqld.000005以前所有的日志,但不删除日志终结点
shell>mysqlbinlog /data2/mysqld.bin00001 --查看binlog文件中的内容
shell> mysqladmin -uroot -p456 flush-logs 截断日志
mysql> show master status --查询当前使用哪个二进制日志
mysql> flush logs; --截断二进制日志
mysql> flush master; --清空二进制日志 log_slow_queries=/mysql/logs/slow --慢查询日志
long-query-time=1 --只要超过1秒的查询将被记录下来,以便被做调优时做参考。

慢查询日志:

慢查询日志是记录所有执行时间超过参数long_query_time(单位:秒),的SQL语句日志。为了获得表锁,而等待的时间,不算执行时间。我们可以通过log-slow-queries=[file_name]选项来启动慢查询日志功能。和前面的日志一样,如果没有指定file_name,那么日志目录在datedir目录下,且默认的名字为host_name-slow.log。我们可以通过慢查询日志的分析,来优化我们的SQL语句和建立新的索引达到优化数据库的作用。

查询慢查询日志

开启慢查询日志

设置慢查询日志阈值

永久开启慢查询日志和

[root@rhel6 logs]# vim /etc/my.cnf
#slow log
slow_query_log=on
slow_query_log_file=/abc/logs/slow.log
long_query_time=1
---
/etc/init.d/mysqld stop
/etc/init.d/mysqld start

MySQL之表日志管理的更多相关文章

  1. 项目实战6—Mysql实现企业级日志管理、备份与恢复实战

    Mysql实现企业级日志管理.备份与恢复实战 环境背景:随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失 ...

  2. mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)

    日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...

  3. Mysql实现企业级日志管理、备份与恢复实战

    背景 随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基.一旦公司的数据错乱或者丢失,对于互联网公司而言就等于说是灭顶之灾,为防止系统 ...

  4. mysql学习------二进制日志管理

    MySQL二进制日志(Binary Log)   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库( ...

  5. Mysql实现企业级日志管理、备份与恢复

    数据备份形式 文件备份: 通过Linux的备份命令把文件统一打个包存起来,可存在本地和远程服务器,等到要恢复时,再用这些文件恢复到指定位置. 数据库数据备份: 在一些对数据可靠性要求很高的行业如银行. ...

  6. MySQL的表空间管理

    表空间: MySQL没有真正意义上的表空间管理. MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间. 一般来说,当数据量很小的时候建议使用共享表空间的管理方式. ...

  7. mysql之innodb日志管理

    本文从两个方面进行阐述,常规的日志文件(不区分存储引擎),第二就是讲innodb存储引擎的事务日志. 一.基本日志文件 1.1.基本日志文件分类:错误日志(error log)慢查询日志日志(slow ...

  8. MySQL 之 innodb 日志管理 -- 1. 基本日志文件

    1.基本日志文件分类 错误日志(error log) 慢查询日志日志(slow query log) 二进制日志(binlog) 查询日志(general log) 2.错误日志 主要包括mysql的 ...

  9. mysql常用表/视图管理语句

    查看所有表  show tables; 查看表/视图结构 desc 表名/视图名: 查看建表过程  show create table 表名: 查看建视图过程 show create view 视图名 ...

随机推荐

  1. 编程小白入门分享五:Vue的自定义组件

    前言 上篇博客简单介绍了vue,本篇博客要在对vue有一定了解后,才可以比较容易理解自定义组件.想要封装好一个组件,一定要熟练掌握这三个技能,父组件 -> 子组件传值(props).子组件 -& ...

  2. Dynamics CRM 数据数量限制更改

    1.在CRM2016中如果想要导出超过10000记录数据,更新 MaxRecordsForExportToExcel  这个字段的值. SELECT MaxRecordsForExportToExce ...

  3. if语句的嵌套:从键盘输入3个实数,求其最大值。

    #include<stdio.h>void main(){ float a,b,c,max; scanf("%f%f%f",&a,&b,&c); ...

  4. Centos7 虚拟机里查看IP并启动网卡

    输入ip查询命名 ip addr  也可以输入 ifconfig(centOs7没有ifconfig命令)查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值. 发现 ...

  5. BZOJ 4477: [Jsoi2015]字符串树 可持久化trie树

    这个是真——可持久化字典树..... code: #include <bits/stdc++.h> #define N 100006 #define setIO(s) freopen(s& ...

  6. H5视频播放小结(video.js不好用!!!)

    近期在做一个H5的视频课堂,遇到了H5播放的需求,因为原生的video的样式不太理想,尤其是封面无法压住控制条,这就需要我们自定义播放控件. 于是,找了很近的插件,找到了用户比较多的video.js插 ...

  7. learning scala someElements

    The Scala collections library provides specialised implementations for Sets of fewer than 5 values ( ...

  8. WinDbg常用命令系列---.write_cmd_hist (写命令历史记录)

    .write_cmd_hist 简介 .write_cmd_hist命令将调试器命令窗口的整个历史记录写入文件. 使用形式 .write_cmd_hist Filename 参数 Filename指定 ...

  9. 将 iTunes 降级到支持安装 .ipa 文件的版本

    将 iTunes 降级到支持安装 .ipa 文件的版本 新版的 iTunes 再也不支持安装 .ipa 文件了,但是 Apple 官网依旧保留了旧版 iTunes 的下载渠道.(点击进入) 安装完上面 ...

  10. koa 搭建模块化路由/层级路由

    搭建node项目目录以及基本的文件 初始化package.json文件 执行下面命令生成package.json文件 npm init --yes 创建项目目录 创建路由目录routes,存放静态资源 ...