配置方法:mysql
vim /etc/my.cnf
[mysqld]
log-error=/tmp/mysql.log
查看配置方式:sql
show variables like '%log%error%';
做用:数据库
记录mysql数据库的通常状态信息及报错信息,是咱们对于数据库常规报错处理的经常使用日志。
配置方法:vim
vim /etc/my.cnf [mysqld] general_log=on general_log_file=/data/mysql/server2.log
查看配置方式:服务器
show variables like '%gen%';
做用:函数
记录mysql全部执行成功的SQL语句信息,能够作审计用,可是咱们不多开启;
能够做为审计功能,通常状况下这个日志不会开,除非有特殊要求 例如:ELK
建议刚部署mysql数据库的时候就开启二进制日志工具
二进制日志不依赖于存储引擎的,依赖于sql层,记录和sql语句有关的信息性能
已提交的数据记录,以事件的形式记录到二进制文件中测试
必定要配置好二进制日志spa
配置文件开启:
vim /etc/my.cnf log-bin=/data/mysql-bin ---- 在全局打开,二进制日志的“总闸” 命令行开启: set sql_log_bin=1/0; ---- 在会话级别临时生效 二进制日志的“分开关”,只有总闸开启才有意义(默认打开),有时候会临时关闭掉,只影响当前会话
做用:
一、是否开启
二、二进制日志路径/data
三、二进制日志文件名前缀mysql-bin
四、文件名名以“前缀”.000001~N
配置文件中修改:
vim /etc/my.cnf 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%';
查看binlog原始信息
mysqlbin mysql-bin.000002
在row模式下,翻译成语句
mysqlbinlog --base64-output='decode-rows' -v mysql-bin.000002
查看binlog事件
show binary logs; 全部在使用的binlog信息,查看全部存在的二进制日志文件 show binlog events in ''; 查看文件内容 show master status; 查看当前正在使用的二进制日志文件
默认状况下,不会删除旧的日志文件。
根据存在时间删除日志:
SET GLOBAL expire_logs_days = 7; 或者PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; reset master; 将全部binlog日志删除,并从新生成,从000001开始
根据文件名删除日志:
PURGE BINARY LOGS TO 'mysql-bin.000010';
flush logs
mysqlbinlog --start-position=XX --stop-position=XX >a.sql
(1)、使用show binary logs; show master status; 查看当前正在使用的文件
(2)、show binlog events in ''; 从后往前看,找到误操做的事务,判断事务开启position和结束position
(3)、把误操做的剔除掉,留下正常操做到两个脚本中 :mysqlbinlog --start-position=XX --stop-position=XX 二进制日志文件 >/tmp/in.sql
(4)、先测试库操做,把误操做的数据导出,而后生产库恢复 ### 使用:source 恢复,恢复的时候,在当前窗口临时关闭二进制日志记录
遇到的问题:
一、时间长
二、对生产数据有必定影响,有可能会出现冗余数据
好的解决方案:
一、flashback(闪回功能)
二、经过备份,延时从库
是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件
经过对这些特殊的SQL语句分析,改进以达到提升数据库性能的目的。
调优过程当中的工具日志,统计收集执行慢的语句
配置方法:
vim /etc/my.cnf slow_query_log=NO slow_query_log_file=/tmp/slow.log