首页 > 数据库 >12-Mysql的日志管理

12-Mysql的日志管理

时间:2023-12-27 14:55:39浏览次数:28  
标签:binlog 12 log 二进制 Mysql slow mysql 日志

一、mysql常见日志

image

二、错误日志

  • 配置方法:
[mysqld]
log-error=/data/mysql/mysql.log
  • 查看配置方式:
mysql> show variables like '%log%error%';
  • 作用:

记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志,默认在data目录下

三、一般查询日志

  • 配置方法:
[mysqld]
general_log=on
general_log_file=/data/mysql/server2.log
  • 查看配置方式:
show variables like '%gen%';
  • 作用:

记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启

四、二进制日志

image

  1. 二进制日志都记录了什么?

    已提交的数据记录,以event的形式记录到二进制文件中

  2. 二进制记录格式有哪些?

    • row:行模式,即数据行的变化过程,上图中Age=19修改成 Age=20的过程事件。
    • statement:语句模式,上图中将update语句进行记录。
    • mixed:以上两者的混合模式。
  3. 三总模式有什么优缺点?

row模式记录得数据修改得过程,缺点是量级比较大,优点是恢复得数据得一致性高,建议使用此模式

statement是记录事务得执行语句,优点是量级比较小,缺点是恢复数据得一致性不高,例如果语句中有函数,如以当前时间作为某个列得值,那么他在恢复的时候还是会执行同样得语句使用当前得时间,而不是我从创建语句时候得时间,系统默认得模式

mixed:以上两者的混合模式。

  1. binlog的作用备份恢复、复制

4.1 binlog的查看和配置方法

  1. 开启二进制日志
set sql_log_bin=0    --->在会话级别修改为临时关闭
vi /etc/my.cnf
log-bin=/data/mysql/mysql-bin  --->binlog的日志路径和打开binlog
sync_binlog=1 ---> 1表示每次事务提交都会刷新binlog日志到磁盘,0表示binglog-buffer满了才会刷新,建议是1
binlog_format=row  -->记录二进制的日志类型

2、设置二进制日志记录格式(建议是ROW):

  • 配置文件中修改:
binlog-format=ROW
  • 命令行修改
mysql> SET GLOBAL binlog_format = 'STATEMENT';
mysql> SET GLOBAL binlog_format = 'ROW';
mysql> SET GLOBAL binlog_format = 'MIXED';    
  1. 查看binlog设置
show variables like '%binlog%';

4.2 binlog实时点恢复

  1. 新建一个测试数据库和表,然后在表里插入数据
create database test1;

create table t1 (id int,name varchar(20));
mysql> use test1;
Database changed
mysql> 
mysql> create table t1 (id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)

mysql> 
mysql> insert into t1 values(1,'zhangsan');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t1 values(2,'zhangsan2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t1 values(3,'zhangsan4');
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)

  1. 查看二进制日志和正在使用的二进制日志
mysql> show  binary logs; #---> 查看二进制日志

mysql> show  master status; #---> 查看正在使用的二进制日志


show binlog events in 'my-bin.000002'; #--->查看二进制日志详情
+---------------+------+-------------+-----------+-------------+--------------------------------------------------------+
| Log_name      | Pos  | Event_type  | Server_id | End_log_pos | Info                                                   |
+---------------+------+-------------+-----------+-------------+--------------------------------------------------------+
| my-bin.000002 |    4 | Format_desc |        10 |         120 | Server ver: 5.6.36-log, Binlog ver: 4                  |
| my-bin.000002 |  120 | Query       |        10 |         192 | BEGIN                                                  |
| my-bin.000002 |  192 | Table_map   |        10 |         240 | table_id: 86 (test.t1)                                 |
| my-bin.000002 |  240 | Write_rows  |        10 |         290 | table_id: 86 flags: STMT_END_F       
            事件起始的position号码          事件结束的position号码    事件详情
  1. 模拟误操作,删除表中所有所有数据
delete from t1;
commit;
  1. 截取需要恢复事务的起始position号和结束的position号
mysqlbinlog  --base64-output=decode-rows -v my-bin.000002  #--->查看二进制日志的详细信息

mysqlbinlog --start-position=1170 --stop-position=1497   my-bin.000002> /tmp/binlog.sql  #---> 截取事务

source  /tmp/binlog.sql; #---> 恢复丢失的数据

4.3 二进制日志的其他操作

删除二进制:
默认情况下,不会删除旧的日志文件。
根据存在时间删除日志:

SET GLOBAL expire_logs_days = 90; --->自动删除90天以前的二进制日志
…或者…
PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; --->删除现在到前三天的日志
根据文件名删除日志:
PURGE BINARY LOGS TO 'mysql-bin.000010'; ---> 根据文件名删除
reset master; --> 清空所有二进制日志
flush logs  ---> 刷新二进制日志,生成新的日志文件

五、慢查询日志

5.1 慢日志的作用

slow-log,记录所有条件内的慢的SQL语句
优化的一种工具日志。帮我们定位问题。
是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件
通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。

5.2 慢日志设置
  • long_query_time 设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s

  • slow_query_log: 指定是否开启慢查询日志

  • slow_query_log_file: 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log

  • min_examined_row_limit:查询检查返回少于该参数指定行的SQL不被记录到慢查询日志

  • log_queries_not_using_indexes: 不使用索引的慢查询日志是否记录到索引

配置例子:

slow_query_log=1 #---> 开启慢日志功能
slow_query_log_file=/data/slow/slow.log  #--->慢日志存放路径
long_query_time=0.5  #--->指定慢日志的阈值
log_queries_not_using_indexes  #---> 不使用索引的被记录到慢日志
5.3 处理慢日志:

mysqldumpslow命令用于分析慢日志,帮助我们更快的找到需要优化的语句

mysqldumpslow -s c -t 10 /data/slow/slow.log ---执行次数最多的前十条语句
mysqldumpslow -s at -t 10 /data/slow/slow.log  ---查询时间最长的前十条语句

mysqldumpslow参数说明

-s
是表示按照何种方式排序
c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序。
ac、at、al、ar,表示相应的倒叙。
-t
是top n的意思,即为返回前面多少条的数据;

----------自己扩展
pt-query-diagest percona-toolkit
mysqlsla

5.4 创建模拟环境

create table city_bak select * from city;  --->创建一个和city表一样的city_bak表

insert into city_bak select * from city_bak; ---> 翻倍查询city_bak的数据
# 模拟慢日志

select sleep(5);
select * from city_bak; 
update city_bak set countrycode='chn'; --->

----------自己扩展

  • pt-query-diagest percona-toolkit
  • mysqlsla

标签:binlog,12,log,二进制,Mysql,slow,mysql,日志
From: https://www.cnblogs.com/ejjw/p/17930559.html

相关文章

  • 14-Mysql主从复制
    一、mysql复制原理1.1主从复制原理过程从库的I/Othread线程会读取masterinfo文件获取主库的user,passwordport信息然后还会获取上次获取主库二进制日志的位置如3640就是00003这个文件640这个位置,主库收到从库的请求后,会验证用户名密码等的合法性,然后问主库你有没有......
  • 04-Mysql多实例
    多实例就是多套线程和多各进程和多个预分配的内存结构配置思路启动多个mysqld进程规划多套数据规划多个端口规划多套日志路径配置例子1、创建多套目录mkdir-p/data/330{7,8,9}2、准备多套配置文件vi/data/3307/my.cnf[mysqld]basedir=/application/mysqldatadi......
  • 05-Mysql 用户管理
    一、MySQL用户管理用户定义:user主机范围使用某个用户从哪个(些)地址访问我的数据库用户的功能:1、用来登录mysql数据库2、用来管理数据库对象(库、表)权限功能:针对不同用户设置对不同对象管理能力selectupdatedeleteinsertcreatedrop。。。权限范围:......
  • 01-Mysql介绍及安装
    关系型数据库的特点二维表典型产品Oracle传统企业,MySQL是互联网企业数据存取是通过SQL最大特点,数据安全性方面强(ACID)•NoSQL:非关系型数据库(NotonlySQL)不是否定关系型数据库,做关系型数据库的的补充想做老大,先学会做老二•NoSQL特性总览–不是否定......
  • 在windows下安装mysql 8.1
    1、下载并解压官网下载mysql8,https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip解压到D:\mysql,以下称为根目录2、编写配置文件在根目录下新建my.ini文件,配置以下内容[mysqld]#设置3306端口port=3306#设置mysql的安装目录,一定要与上面的安装路......
  • 02-Mysql体系结构
    一、MySQL服务器连接模型2、应用程序如何连接到mysql2.1tcp/ip的方式mysql-uroot-poldboy123-h10.0.0.2002.2套接字的方式mysql-uroot-poldboy123-S/tmp/mysql.sock二、MySQL服务器构成——实例连接层sql层处理流程解析器(执行计划)--优化器(选择比......
  • 03-MySQL基本管理
    一、数据库连接管理mysql-uroot-poldboy123#隐藏条件-S默认socket方式mysql-uroot-poldboy123-h10.0.0.52-P3308#tcp/ip的方式mysql-uroot-poldboy123-S/application/mysql/tmp/mysql.sock#socket方式mysql-uroot-poldboy123-e"showvariableslike......
  • 完美解决SqlServer2012启动报错(cannot find one or more components.Please reinstall
    原因:默认安装在C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0文件夹,以支持sqlserver2012.(我之前不小心把这个文件夹删除了)。解决方案:下载了visualstudio2010Isolatedshell完美解决问题,下载后安装就能正常运行SqlServer2012了,其他SqlServer版本请下载visualstudio......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.27)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 事件时间日志,精准工作之道
    你好,我是刚哥。事件时间日志,是在李笑来《把时间当做朋友》中看到的,来源于柳比歇夫的日志,Event-timeLog。事件日志只记录事件的名称,而事件时间日志还记录了时间,比如:给斯拉瓦写信——二小时四十五分。李笑来在书中谈到了事件时间日志的好处:“它会使你对时间的感觉越来越精确。可......