mysql表日志_MySQL之表日志管理

MySQL日志管理

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

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

错误日志 --错误日志,记录mysql服务端在运行时产生的错误信息 以及mysql启动和关闭时的日志信息

查询日志 --select * from xxx; show databases;记录建立的客户端连接和执行的语句

慢查询日志 --慢查询时间阀值,以秒为单位,如果超过这个阀值就是慢查询

binlog二进制日志 --记录对数据库增、删、改的SQL操作,可以使用这个日志做增量备份

事务日志 --每次增、删、改的SQL操作时,会把操作SQL语句写在事务日志,只innodb存储引擎才支持事务日志

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日志)记录了所有增删改语句,但是不包括数据查询语句,语句是以“事件”的形式保存的,它描述数据更改的过程。该日志的两个主要功能是:数据的恢复与数据的复制。

数据的恢复:MySQL本身具备数据备份和恢复功能。比如,我们每天午夜12:00进行数据的备份。如果某天,下午13:00,数据库出现故障,导致数据库内容丢失。我们可以通过二进制日志解决这个问题。解决思路是,可以先将前一天午夜12:00的数据备份文件恢复到数据库,然后再使用二进制日志回复从前一天午夜12:00到当天13:00对数据库的操作。

数据复制: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日志文件

c9f440f5744567c84d24c8fa0a4df739.png

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

二进制日志管理:

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语句和建立新的索引达到优化数据库的作用。

查询慢查询日志

5deff6b2f839366a5acc7cb810de987e.png

开启慢查询日志

2e3a8c77967f253376c4157c8f8f422e.png

设置慢查询日志阈值

f918add421e6fd4edef00c28e1d9f65b.png

永久开启慢查询日志和

[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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值