MySQL物理文件类型

MySQL物理文件类型有哪几种(笔试题会经常问)

一、日志文件类型有如下几种:
	1. 错误日志文件(error log):记录的是MySQL异常,或则MySQL链接有误
	
	2. 二进制日志(binarg log):用于数据恢复、数据库的主从配置

	3. 事务日志(rado undo log):事务的开启会存储到rado log日志以及撤销日志 undo log,稍后会刷入磁盘中

	4. 慢查询日志(slow query log):可用于查询项目中的哪些sql语句查询较慢。

	5. 查询日志(query log):用于查询缓慢的语句日志
二、数据库的文件:
	1. .frm文件:(MySQL表的引擎是MyISAM的,存储的是该引擎的创建表或则其他操作的语句)。
	2. .myd文件:(MySQL表的引擎是MyISAM的,存储的是该引擎的所有数据)。
	3. .myi文件:(MySQL表的引擎是MyISAM的,存储的是该引擎的所有索引)。
	4. .ibd和ibdata文件:(MySQL表的引擎是innodb的,存储的是该引擎的索引以及数据)。
1.1 错误日志文件:
	在MySQL数据库中,错误日志默认是开启的,默认情况下,错误日志默认情况存储在data目录下的。

在这里插入图片描述

	错误日志信息可以自己自定义的,错误日志记录所记录的是可以通过 log_error 和 log_warnings来操作的,其中log_error是查看错误日志是否有开启,log_warnings是开启如果有警告错误是否也要写入错误日志中。

show variabiles like “%log_error%” // 检测是否开启错误日志
show variables like ‘%log_warnings%’; // 是否开启警告日志写入错误日志中 1 是 0 否

在这里插入图片描述
在这里插入图片描述

1.2 二进制日志文件(用于数据恢复、数据库主从复制):
	* 二进制日志,也就是我们常说的binlog,二进制日志记录了MySQL所有修改数据库的操作,然后以二进制的形式记录到日志文件中,

	* 默认情况下二进制日志是没有开启,需要自己手动去MySQL配置文件中修改(启动:log_bin=[file_name]保存二进制日志的文件名。路径是自己定义的)

	* 使用命令检测是否开启二进制日志文件
		show variables like '%log_bin%';

	* 添加配置MySQL的my.ini或则my.cnf中,因为新版本数据库中存在bug,必须指定 server-id=1变量名自己随便设置
		server-id = 1
		log_bin = mysql-bin
	
	* 作用:
		以二进制形式记录更改数据库的sql语句(insert、update、delete、drop、create、alter)等操作都会被记录

	* 启动二进制日志会降低MySQL1%的性能,但保障数据的完整性,对于重要的数据库值得以性能换完整。

	* 二进制文件存储的路径一般存在(MySQL的data目录下):

在这里插入图片描述

查看二进制的基本命令:
	show binlog events\G; // 查看二进制日志文件详细信息
	show binary logs; // 查看二进制日志列表
	show master status;// 查看最新的二进制日志
实例:
在你的服务器上测试,先用该命令清除下原有的二进制日志记录
	flush logs // 清除二进制日志
	reset master; // 刷新二进制日志

1. 首先先创建一个表:
	CREATE TABLE `user` (
	  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
	  `user` varchar(255) DEFAULT NULL,
	  PRIMARY KEY (`id`)
	) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

2. 为这个表添加几条数据
	insert into user values(1,'123');
	insert into user values(2,'123');
	insert into user values(3,'123');

3. 将二进制日志文件中的数据备份一份导出来(一般这一步都是定时导出)
	/www/server/mysql/bin/mysqlbinlog /www/server/data/mysql-bin.000001 > /www/server/data/user_test.log;
	将二进制日志文件 导入到 data user_test.log 目录中,导出路径自己自定义

4. 然后模拟误删操作:
	delete from user;

5. 然后使用MySQL的命令恢复数据:
	/www/server/mysql/bin/mysql -uroot -p -e "source /www/server/data/user_test.log"; // 你导出的二进制日志文件

然后再查询数据库是否有数据,如果有数据就成功了

这里还有一些根据时间恢复、根据二进制日志文件id恢复,这就不多演示了。
2.3 慢查询日志:
查看是否开启了慢查询日志:
	show varaibles like '%log_slow_queries%';

查看慢查询的默认定义:
	show varaibles like '%slow_query_log%';

如果没有开启慢查询日志:到MySQL的配置文件中配置
	slow_query_log
	slow_query_log_file=[file_name]//慢查询日志保存路径
	long_query_time=2; // 最大等待时间
	

在这里插入图片描述

测试慢查询:
1. 先让MySQL查询语句睡眠4秒,超过最大等待时间,然后看看慢查询日志是否有该条查询慢的sql语句
select sleep(4);

select count(*) from user;

如果有的话,证明成功了。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值