目录
2、通用查询日志(The General Query Log)
1、错误日志(The Error Log)
详细解释(MySQL :: MySQL 5.7 Reference Manual :: 5.4.2 The Error Log)
mysql> show variables like 'log_error';
+---------------+---------------------+
| Variable_name | Value |
+---------------+---------------------+
| log_error | /var/log/mysqld.log |
+---------------+---------------------+
1 row in set (0.01 sec)
可根据修改/etc/my.cnf中的log-error来设置存放路径比如以下三种,如果没有给定存放路径MySQL会分配在哪里存放。
2、通用查询日志(The General Query Log)
详细参考(MySQL :: MySQL 5.7 Reference Manual :: 5.4.3 The General Query Log)
mysql> show variables like 'general_log%';
+------------------+--------------------------+
| Variable_name | Value |
+------------------+--------------------------+
| general_log | ON |
| general_log_file | /var/lib/mysql/host1.log |
+------------------+--------------------------+
2 rows in set (0.00 sec)
2.1 临时开启
mysql> set global general_log=on;
Query OK, 0 rows affected (0.01 sec)
2.2 临时关闭
mysql> set global general_log=off;
Query OK, 0 rows affected (0.00 sec)
使用[root@host1 mysql]# tail -f host1.log
可以看到在mysql中的操作
3、慢查询日志(The Slow Query Log)
详细参考(MySQL :: MySQL 5.7 Reference Manual :: 5.4.5 The Slow Query Log)
mysql> show global variables like 'slow_query%';
+---------------------+-------------------------------+
| Variable_name | Value |
+---------------------+-------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/host1-slow.log |
+---------------------+-------------------------------+
2 rows in set (0.00 sec)
mysql> show global variables like 'long_query%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
3.1 设置永久开启
vim /etc/my.cnf添加以下三行内容
接着重启数据库
此时再查看发现value发生改变
3.2 开启之后查询语句
mysqldumpslow 后跟日志路径
[root@host1 mysql]# mysqldumpslow /var/lib/mysql/host1-slow.log
4、二进制日志(The Binary Log)
mysql> show global variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_basename | |
| log_bin_index | |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+-------+
5 rows in set (0.01 sec)
4.1 永久开启方法
配置/etc/my.cnf,在最后添加两行之后重启mysql
log_bin=mysql-bin
server_id=10
#id号自定
此时查看就出现了mysql-bin文件
[root@host1 mysql]# pwd
/var/lib/mysql
[root@host1 mysql]# ll mysql-bin.*
-rw-r-----. 1 mysql mysql 154 Apr 17 11:09 mysql-bin.000001
-rw-r-----. 1 mysql mysql 19 Apr 17 11:09 mysql-bin.index
4.2 mysqlbinlog读取需要的日志内容
[root@host1 mysql]# mysqlbinlog mysql-bin.000001
4.3 查看有哪些二进制文件
mysql> show binary logs;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: *** NONE ***
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.01 sec)
4.4 查看当前使用的是哪个二进制文件
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
4.5 刷新日志方法
当刷新日志时会产生一个新的logs,并且此时使用最新的同时/var/lib/mysql也会产生新的mysql-bin
mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.01 sec)
4.6 在数据库中查看二进制日志内容
4.7 二进制日志的管理
设置binlog
vim /etc/my.cnf
最后一行添加
max_binlog_size=200M
接着重启数据库
这样就可以限制二进制日志最大尺寸为200M,超过200M后进行滚动。MySQL的滚动方式与其他日志不太一样,滚动时会创建一个新的编号大1的日志用于记录最新的日志,而原日志名字不会被改变。
每次重启MySQL服务,日志都会自动滚动一次。
4.8 删除日志方法
二进制日志文件不能直接删除,因此是不可以直接使用rm等命令的。
PURGE { BINARY | MASTER } LOGS { TO 'Log_name' |
BEFORE datetime_expr }
删除所有日志reset master
指定编号删除日志 purge master logs to 'Log_name'
eg:删除日志2之前的
mysql> purge master logs to 'mysql-bin.000002'; Query OK, 0 rows affected (0.00 sec)
4.9 设置日志保存天数
vim /etc/my.cnf
在最后一行添加
expire_logs_days=7 #几天这里数字就写几
接着重启mysql