mysql文件_MySQL中几个重要的文件

一、数据库层面

错误日志文件(error log)

二进制日志文件(binary log)

慢查询日志(slow log)

全量日志(general log):general log 会记录MySQL数据库所有操作的SQL语句,包含select和show。该功能默认是关闭的,因为log的量会非常庞大。

其中log_output参数,可以取FILE、TABLE、NONE三个值。若该参数指定为NONE,即使开启了general log也不会记录log。若该参数指定为TABLE,则会在mysql数据库下创建一个general_log 表。该参数不仅仅影响general log 的存储方式,还会影响到slow log的存储方式。一般是使用FILE的存储方式。

审计日志(audit log)

中继日志(relay log):relay log是主从复制中,从服务器上一个重要的文件。从服务器的I/O线程将主服务器的binary log 读取过来并记录到从服务器本地文件(relay log)中,然后从服务器的SQL线程会读取relay log的内容并应用到从服务器。

Pid文件:MySQL数据库是一个单进程多线程模型的数据库,实例启动后,会将自己为唯一进程号记录到自己的Pid文件中。Pid文件存放在数据目录(/data/mysql/)下,命名规则是将主机名作为前缀。

Socket文件:mysql数据库有两种连接方式,网络连接和本地连接,mysql.sock文件是服务器与本地客户端进行通信发UNIX套接字文件,其默认位置是/tmp/mysql.sock.

表结构文件:MySQL8.0之前把以.frm结尾的文件称为表结构文件。从8.0开始frm表的定义被消除,把文件中的表数据都写到了系统表空间,通过利用InnoDB存储引擎实现表DDL语句操作的原子性(在该版本之前是无法实现DDL语句的原子性的,如truncate是无法回滚的)。

二、存储引擎层面

在InnoDB存储引擎层面主要分为两种日志,一种是redo log 一种是undo log。InnoDB支持事物、支持MVCC多版本并发控制。InnoDB的多版本是通过undo 和回滚段来实现的。InnoDB是索引组织表,每行记录都包含DB_ROW_ID、DB_TRX_ID、DB_ROLL_PTR和DELETE_BIT几个隐藏字段。DB_TRX_ID:用来标识最近一次对本行记录做修改的事务的标识符,即最后一次修改本行记录的事务id。delete操作在内部来看是一次update操作,更新行中的删除标识位DELELE_BIT。

DB_ROLL_PTR:指向当前数据的undo log记录,回滚数据通过这个指针来寻找记录被更新之前的内容信息。DB_ROW_ID:包含一个随着新行插入而单调递增的行ID, 当由innodb自动产生聚集索引时,聚集索引会包括这个行ID的值,否则这个行ID不会出现在任何索引中。DELELE_BIT:用于标识该记录是否被删除。

redo log,又称重做日志,用于记录事物操作变化,记录的是事物被修改后的值,不管事物是否提交都会记录下来,在实例和介质失败时,如数据库掉电,就可以利用redo log 恢复到掉电前的时刻,以此来保证数据的完整性。

undo log,对记录的变更操作时不仅会产生redo记录,也会产生undo记录(insert、update、delete)。但undo只记录变更前的旧数据。通常可以使用undo日志来实现回滚操作,保证事务的一致性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值