MySQL日志管理错误日志配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: show variables like '%log%error%'; 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。 一般查询日志配置方法: 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语句有关的信息
二进制日志记录了什么?已提交的数据记录,以事件的形式记录到二进制文件中 二进制记录格式一定要配置好二进制日志
开启二进制日志配置文件开启: 作用: 1、是否开启 2、二进制日志路径/data 3、二进制日志文件名前缀mysql-bin 4、文件名名以“前缀”.000001~N 设置二进制日志记录格式(建议是ROW)配置文件中修改: 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日志的查看方式查看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 如何截取binlog信息内容,按需求恢复(常规思路)(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 恢复,恢复的时候,在当前窗口临时关闭二进制日志记录 遇到的问题: 1、时间长 2、对生产数据有一定影响,有可能会出现冗余数据 好的解决方案: 1、flashback(闪回功能) 2、通过备份,延时从库 慢日志slow log是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件 通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。 调优过程中的工具日志,统计收集执行慢的语句 慢日志设置配置方法: vim /etc/my.cnf slow_query_log=NO slow_query_log_file=/tmp/slow.log
|
|
来自: 昵称54185769 > 《待分类》