MySQL日志类型简介
|
选项 |
文件名 |
程序 |
说明 |
表名称 |
||||
错误 |
--log-error |
host_name.err |
N/A |
记录MySQL启动、关闭和在运行 过程中出现的一些错误信息(默认开启) |
常规 |
--general_log |
host_name.log |
N/A |
记录常规日志,select,ddl,dml,dcl语句 (一般默认不会开启) |
general_log |
||||
慢速查询 |
--slow_query_log --long_query_time |
host_name-slow. log |
mysqldumpslow |
记录查询比较慢的日志信息 (默认开启) |
slow_log |
||||
二进制 |
--log-bin --expire-logs-days |
host_name-bin.000001 |
mysqlbinlog |
主要记录修改后的操作的日志, 备份恢复,高可用,主从复制用到 |
审计 |
--audit_log --audit_log_file ... |
audit.log |
N/A |
(默认关闭) |
MySQL错误日志配置及查看
配置方法:
[mysqld]
log-error=/data/mysql/mysql.log
查看配置方式
mysql> show variables like '%log%error%';
作用:
-- 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。
一般查询日志
配置方法:
[mysqld]
general_log=on
general_log_file=/data/mysql/server2.log
查看配置方式:
mysql> show variables like '%gen%';
作用:
记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启。
- 二进制日志都记录了什么?
- 已提交的数据记录,以event的形式记录到二进制文件中。 - 二进制记录格式有哪些?
- row:行模式,即数据行的变化过程,上图中Age=19修改成 Age=20的过程事件。
- statement:语句模式,上图中将update语句进行记录。
- mixed:以上两者的混合模式。 - 三总模式有什么优缺点?
statement:记录sql语句,如果sql中存在now()等时间函数,通过bin-log恢复数据时,就会出现时间差
row:记录的是数据行的变化的过程,数据量级比较大,但是安全性比较高。 - binlog的作用
- 备份恢复、复制
MySQL默认为statement,log_bin为关闭状态
mysql> show variables like '%binlog_format%';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+
1 row in set (0.00 sec)
开启二进制日志
mysql> set sql_log_bin=0 #在会话级别修改为临时关闭(1为开启,0为关闭),当进行备份恢复时,先关闭
vi /etc/my.cnf
[msyqld]
log-bin=/data/mysql/mysql-bin #在全局打开binlog
binlog-format=ROW
设置二进制日志记录格式(建议是ROW):
配置文件中修改:
binlog-format=ROW
命令行修改
mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';
查看binlog设置 show variables like '%binlog%';
mysql> show variables like '%binlog%';
+-----------------------------------------+----------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------+
| binlog_cache_size | 32768 |
| binlog_checksum | CRC32 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_error_action | IGNORE_ERROR |
| binlog_format | ROW |
| binlog_gtid_simple_recovery | OFF |
| binlog_max_flush_queue_time | 0 |
| binlog_order_commits | ON |
| binlog_row_image | FULL |
| binlog_rows_query_log_events | OFF |
| binlog_stmt_cache_size | 32768 |
| binlogging_impossible_mode | IGNORE_ERROR |
| innodb_api_enable_binlog | OFF |
| innodb_locks_unsafe_for_binlog | OFF |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| simplified_binlog_gtid_recovery | OFF |
| sync_binlog | 0 |
+-----------------------------------------+----------------------+
19 rows in set (0.01 sec)
#sync_binlog:1表示commit时写入binlog,0达到binlog-cache内存大小写入binlog (重要)
查看二进制信息
mysql> show binary logs; #查看所有二进制信息
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 120 |
+------------------+-----------+
1 row in set (0.00 sec)
mysql> SHOW MASTER STATUS; #查看当前正在使用的二进制信息
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

