修改mysql系统内核的文件_MySQL技术体系之核心文件

本文主要基于MySQL 5.7版本的数据库环境,总结不同类型文件用途,让更多的人对MySQL技术体系有更全面、更专业的深度了解。

一、参数文件

1、数据库的参数文件my.cnf,客户端、服务端的参数都在这里配置,MySQL实例启动时加载生效。

2、参数分为动态参数和静态参数,具体可以查看官方手册。

3、参数文件整体结构

其中服务端参数可以通过命令show variables like %参数名%来查看当前的参数配置,参数文件整体结构:

[client]

#客户端参数:端口号、字符编码等

[mysql]

#服务端参数:字符编码

[mysqlid]

#服务端参数:端口号、数据目录地址(datadir参数)、并发连接数、各种内存缓冲区大小、慢查询控制、刷盘策略、字符编码、二进制日志文件控制等

[mysqldump]

#服务端参数:备份操作

二、错误日志文件

1、数据库的错误日志文件默认存放在数据目录下,以error.log作为文件名称后缀。

2、记录MySQL启动、运行、关闭过程中出现的问题,常用来辅助定位问题。

3、Warning日志信息通过对一些优化工作有帮助,比如建议配置explicit_defaults_for_timestamp参数来决定TIMESTAMP类型行为。

三、二进制日志文件

1、数据库的二进制文件默认存放在数据目录下,默认以主机名称作为文件名称,可以设置文件名称前缀、后缀。

2、只会记录对数据真正进行修改的操作语句DML、DDL,比如select、show默认不会被记录,如果需要记录,则需要开启全量日志功能。

3、在主从架构环境中,记录master数据库上所有真正执行修改行为的操作记录,然后通过网络发送到slave数据库,完成主从复制。

4、宕机场景,通过mysqlbinlog命令,实现基于时间点和位置的恢复操作。

5、执行命令show binary logs可以查看当前binlog文件及值的大小。

6、执行命令show master status可以查看当前的日志文件名称及状态、文件的偏移量。

7、mysql-bin.index文件是二进制日志的索引文件,记录产生的二进制日志的序号。

8、主要参数:

max_binlog_size

binlog_cache_size、binlog_cache_disk_use、binlog_cache_use

binglog_format

sync_binlog

expire_logs_days

binlog_do_db

log_slave_updates

binlog_checksum

log_bin_use_v1_row_events

binlog_row_image

9、二进制文件不能直接使用命令cat、tail、head查看,需要通过mysqlbinlog命令查看二进制日志并做格式转换,然后输出到独立的文件bin.log后,使用vim等工具查看。

四、慢查询日志文件

1、数据库的慢查询日志文件默认存放在数据目录下,一般以low.log为文件名称的后缀。

2、默认是开启记录慢查询日志的。

3、记录超过参数long_query_time时间的所有SQL语句,从而辅助优化SQL语句。

4、慢查询日志文件逐渐增大,使用命令vim、cat,或使用命令mysqldumpslow都不方便,可以选择经过采集并发送到专业的分析平台方便查看。这方面的开源工具较多。

5、文件的主要内容:数据库名称、用户名称、语句及执行耗时情况

五、全量日志文件

1、数据库的全量日志文件general logs默认存放在数据目录下。

2、记录数据库所有操作的SQL语句,包含了select和show,因此文件将会较大。

3、默认是关闭状态,不会记录全量日志。

4、可能会选择临时开启,检测故障。

5、主要参数:log_output(影响general和show log的存储方式,推荐使用FILE方式存储)

六、审计日志文件

1、数据库的审计日志文件默认存放在数据目录下,一般以audit.log或audit.json为文件名称的后缀。

2、实时记录网络上的数据库活动,记录、分析、汇报用户访问数据库的行为,主要用于事故的追溯;

3、官方提供的审计组件需要收费,可以选择第三方开源组件。

七、中继日志文件(relay log)

1、数据库的中继日志文件默认存放在数据目录下。

2、主从复制场景中,salve服务器上的一个很重要的文件。

slave服务器I/O线程将master服务器的二进制日志读取并记录到slave服务器本地文件中,然后slave服务器的SQL线程会读取中继日志文件的内容并应用到slave服务器。

八、pid文件

1、数据库的pid文件默认存放在数据目录下,以主机名作为文件名称的前缀。

2、MySQL数据库是一个单进程多线程模型的数据库。

3、实例启动后,会将自己唯一的进程号写入到自己的pid文件。

九、socket文件

1、数据库的socket文件默认存放在/tmp/mysql.sock。

2、mysql.sock文件是服务器与本地客户端进行通信的UNIX套接字文件。

十、表结构文件

1、以.frm为文件名称的后缀,5.8版本之后,改有系统表空间来实现。

十一、InnoDB存储引擎文件

1、InnoDB支持事务,支持MVCC多版本并发控制。

2、InnoDB是索引组织表,每行记录都实现了三个隐藏字段:

DB_ROW_ID:

DB_TRX_ID:每行记录的事务ID

DB_ROLL_PTR:每行记录的回滚指针

3、InnoDB有一个全局的事务链表,每个事务的开始都会把事务ID放到链表中。DB_ROLL_PTR指针用于指向undo记录,构造多版本。

4、redo日志文件用于记录事务操作的变化,记录的是数据被修改之后的值。工作机制是刷新机制。

5、undo日志文件用于记录变更前的旧数据

欢迎关注我的个人公众号

68f724bad5a33d9a9f6bd2ca7369ecb7.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值