热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql的日志(binlog日志和慢日志)

一、查看mysql数据所占的大小selecttable_name,data_length,index_length,(data_lengthindex_length)aslengt

一、查看mysql数据所占的大小


select table_name,data_length,index_length,(data_length+index_length) as length,table_rows,concat(round((data_length+index_length)/1024/1024/1024,3),'GB') as totalSize FROM information_schema.tables
WHERE table_schema = 'pt_query'
ORDER BY length DESC;

二、二进制文件(binlog日志)


1、介绍
二进制日志也叫作变更日志,主要用于记录修改数据或有可能引起数据改变的mysql语句,并且记录了语句发生时间、执行时长、操作的数据等等。所以说通过二进制日志可以查询mysql数据库中进行了哪些变化。一般大小体积上限为1G。

a、DDL

----Data Definition Language 数据库定义语言

主要的命令有create、alter、drop等,ddl主要是用在定义或改变表(table)的结构,数据类型,表之间的连接和约束等初始工作上,他们大多在建表时候使用。

b、DML

----Data Manipulation Language 数据操纵语言

主要命令是slect,update,insert,delete,就像它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

2、binlog日志文件的配置

查看binlog日志的信息:

show global variables like "%log_bin%";

未开启binlog日志

+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF | 用于控制会话级别二进制日志功能的开启或关闭
| log_bin_basename | | 二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句select)语句事件。
| log_bin_index | |二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件。
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+-------+

如果要开启binlog日志可以在my.cnf文件中添加(一般在/etc 目录下,加完之后需重启mysql)

#指定二进制日志生成的路径
log-bin=/data/mysql/mysql-bin
#开启binlog日志
server-id=1
#指定二进制日志的类型,默认为MIXED,加入此参数才能记录到insert语句
binlog_format=MIXED

加完开启binlog日志之后
在这里插入图片描述

3、查看binlog文件

#查看所有binlog日志列表
show master logs;
#查看master状态,即最后(最新)一个binlog日志的编号名称,
#及其最后一个操作事件pos结束点(Position)值。
show master status;

在这里插入图片描述

在mysql执行一条更改语句
在这里插入图片描述
去mysql 的bin目录下,查看对应执行语句

./mysqlbinlog /data/mysql/mysql-bin.000001

在这里插入图片描述
更推荐

show binlog events in 'mysql-bin.000001';
show binlog events in 'mysql-bin.000001' from 6599 limit 5;

在这里插入图片描述

show binlog events in 'mysql-bin.000003'/G;

在这里插入图片描述

4、flush 刷新log日志,自此刻开始产生一个新编号的binlog日志文件;
 flush logs;
注意:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqlddump备份数据时加-F选项也会刷新binlog日志;

5、重置(清空)所有binlog日志
reset master;

6、通过binlog恢复其数据

思路:
mysql数据的恢复需要依赖与在之前备份的数据,通过备份数据,执行相同的操作来进行恢复数据。无法根据现有数据,反推得到误删数据。

演示:

a、展示现有数据(测试数据库为data_recover)
在这里插入图片描述

在这里插入图片描述

b、在此基础上进行数据备份

./mysqldump -uroot -proot -B data_recover -F -R -x --master-data=2 |gzip >/tmp/data_recover_$(date +%F).sql.gz

命令的语法格式:
mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3…]:备份一个或多个库
mysqldump [OPTIONS] --all-databases [OPTIONS]:备份所有库

-A, --all-databases 备份所有表

-x, --lock-all-tables:锁定所有表

-l, --lock-tables:锁定备份的表

–single-transaction:启动一个大的单一事务实现备份

-B, --databases db_name1 db_name2 …:备份指定的数据库

-C, --compress:压缩传输;

-E, --events:备份指定库的事件调度器;
-R, --routines:备份存储过程和存储函数;
–master-data[=#]:
1:记录CHANGE MASTER TO语句;此语句未被注释;
2:记录为注释语句;

–flush-logs, -F:锁定表之后执行flush logs命令;(这个需要注意,这个时候binlog日志更新一个新的一份)

在这里插入图片描述

c、在此基础上进行增删查改
在这里插入图片描述

进行增删查改之后的数据为:
在这里插入图片描述
我们利用之前备份数据,恢复到目前数据(假设delete from tb_areas where id=2; 为误操作)

d、对新的binlog日志进行备份,防止新的数据产生影响
在这里插入图片描述
e、对之前的备份的压缩文件进行解压

gzip -d /tmp/data_recover_2019-10-11.sql.gz

f、恢复到备份时候的情况(如果真实环境可以修改数据库名字,等数据完全恢复正常在切换新的数据库)

./mysql -uroot -S /tmp/mysql.sock -proot

可以看到数据已经恢复为备份时候的数据了
在这里插入图片描述

g、恢复数据

show binlog events in 'mysql-bin.000003'/G;

可以在这里插入图片描述

可以看到我们想要恢复的数据,但不想要删除那个语句。(恢复时候不执行 1371~1523)

./mysqlbinlog --stop-position=1276 --database=data_recover /data/mysql/mysql-bin.000003 | ./mysql -uroot -proot -S /tmp/mysql.sock -v
./mysqlbinlog --start-position=1523 --database=data_recover /data/mysql/mysql-bin.000003 | ./mysql -uroot -proot -S /tmp/mysql.sock -v

可以看到数据已经恢复正常
在这里插入图片描述

三、慢查询日志


show global variables like '%log%';

| slow_query_log | ON | 查询日志的开关
| slow_query_log_file | /data/mysql/query-slow.log | 慢查询日志的路径

如果查询日志并没有打开需要添加

#日志查询超过两秒记录
long_query_time=2
#开启慢查询
slow_query_log=1
#慢查询文件目录
slow_query_log_file=/data/mysql/query-slow.log
#记录未使用索引的sql
#log_queries_not_using_indexes=1

如果使用慢查询,有个关于慢查询的工具 t-query-digest
这里将其使用方法贴出来来参考
http://xiaohost.com/1250.html


推荐阅读
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
author-avatar
mobiledu2502881683
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有