Mysql 的错误日志 error log 记录
mysqld
服务进程启动/关闭或运行过遇到的错误日志。
错误日志默认开启(没有开启按照如下方式开启)
## 在配置文件 [mysqld] 标签内增加 log-error=/log/mysql/err.log
[root@Mysql ~]# vim /etc/my.cnf
[mysqld]
......
log-error=/log/mysql/err.log
## 创建对应目录与日志文件
[root@Mysql ~]# mkdir -p /log/mysql/
[root@Mysql ~]# touch /log/mysql/err.log
## 更改日志文件属主和属组为 mysql
[root@Mysql ~]# chown -R mysql.mysql /log/mysql/err.log
## 重启数据库生效
[root@Mysql ~]# systemctl restart mysqld
## 查看错误日志
[root@Mysql ~]# tailf /log/mysql/err.log
## 通过终端查看日志
mysql> show variables like "log_error%";
普通查询日志 general query log 记录客户端连接信息和执行的所有 SQL 语句信息, 默认关闭
开启普通查询日志
## 在配置文件 [mysqld] 标签内增加如下两条
[root@Mysql ~]# cat /etc/my.cnf
[mysqld]
......
general_log=ON
general_log_file=/log/mysql/select.log
## 创建对应目录与日志文件
[root@Mysql ~]# mkdir -p /log/mysql
[root@Mysql ~]# touch /log/mysql/select.log
## 更改日志文件属主和属组为 mysql
[root@Mysql ~]# chown mysql.mysql /log/mysql/select.log
## 重启数据库生效
[root@Mysql ~]# systemctl restart mysqld
## 查看普通查询日志
[root@Mysql ~]# cat /log/mysql/select.log
## 终端查询日志情况
mysql> show variables like ‘general_log%‘;
临时开启和关闭查询日志
## 临时开启查询日志
mysql> set global general_log = On;
## 临时关闭查询日志
mysql> set global general_log = Off;
慢查询日志 slow query log 记录执行过长的 SQL 语句, 可利用慢查询优化进行调试优化,不调试不建议开启
开启慢查询日志
## 在配置文件 [mysqld] 标签内增加如下几条
[root@Mysql ~]# cat /etc/my.cnf
[mysqld]
......
slow_query_log = on
slow_query_log_file=/log/mysql/slow.log
long_query_time=2 # 多长时间的查询语句记录到日志里面,单位为妙
log_queries_not_using_indexes # 没有启用索引的查询语句
## 创建对应目录与日志文件
[root@Mysql ~]# mkdir -p /log/mysql
[root@Mysql ~]# touch /log/mysql/slow.log
## 更改日志文件属主和属组为 mysql
[root@Mysql ~]# chown mysql.mysql /log/mysql/slow.log
## 重启数据库生效
[root@Mysql ~]# systemctl restart mysqld
执行过慢语句进行测试
mysql> select benchmark(50000000,2*3);
## 检查慢日志是否记录
[root@Mysql ~]# cat /log/mysql/slow.log
二进制日志,用于记录用户对数据库操作的SQL语句(除了数据查询语句)信息。可以使用
mysqlbinlog
命令查看二进制日志的内容。
binlog的格式也有三种模式
开启 binlog 二进制日志
## 在配置文件 [mysqld] 标签内增加如下几条
[root@Mysql ~]# cat /etc/my.cnf
[mysqld]
......
server-id = 1
binlog_format = mixed # 指定用什么模式
log-bin = /log/mysql/bin/mysql-bin
expire_logs_days = 30 # 多少天后的日志将会被自动删除
## 创建对应目录
[root@Mysql ~]# mkdir /log/mysql/bin
## 更改目录属主和属组为 mysql
[root@Mysql ~]# chown -R mysql.mysql /log/mysql/
## 重启数据库生效
[root@Mysql ~]# systemctl restart mysqld
## 查看 binlog 日志信息
[root@sql ~]# mysqlbinlog -v /log/mysql/bin/binlog.000001
## 终端查询日志情况
mysql> show variables like ‘%bin_log%‘;
mysqlbinlog
恢复日志
## 使用时间节点进行恢复
# mysqlbinlog mysql.000002 --start-datetime="2018-05-07 12:05:00"
# mysqlbinlog mysql.000002 --stop-datetime="2018-05-07 11:02:54"
# mysqlbinlog mysql.000002 --start-datetime="2018-12-05 10:02:56" -stop-datetime="2018-12-05 11:02:54"
## 使用位置点进行恢复
# mysqlbinlog mysql.000002 --start-position=124
# mysqlbinlog mysql.000002 --stop-position=124
# mysqlbinlog mysql.000002 --start-position=124 --stop-position=336
日志截断
原文:https://www.cnblogs.com/songguoyou/p/11883812.html