MySQL数据库的文件结构

30 篇文章 0 订阅

1、初始化选项文件(配置文件)

可以启动的时候指定,更多的时候选择默认查询,windows查找顺序略,Linux查找顺序:

/etc/my.cnf

/etc/mysql/my.cnf

/SYSCONFDIR/my.cnf 通过CMake源码编译时指定的SYSCONFDIR参数指定

$MYSQL_HOME/my.cnf

~/.my.cnf

其他目录下时,通过参数defaults-file、defaults-extra-file指定

my.cnf 的配置

[group_name] 比如:[client] [mysqld] [mysqldump] [mysqlhotcopy]等,其实就是mysql命令行工具;group_name相当于指定参数的不同作用域

my.cnf里面的参数除了启动时指定外,部分参数还可以在运行过程中修改,分别作用于session、global,重启失效,配置my.cnf永久生效

 

2、错误日志

默认文件名:[host_name].err

默认目录:%datadir%下

相关参数:--log-warnings --syslog --syslog-tag

 

3、查询日志

慢查询日志(默认禁用)

执行时间(不包括初始化表锁开销)超过系统变量lang_query_time(默认10s)指定值,并且访问记录数超过系统变量min_examined_row_limit(默认0条)的语句,查询完毕并释放锁定资源后,相关sql写入慢查询日志,故日志中记录的顺序和执行顺序可能不一致。

关键参数:slow_query_log slow_query_log_file long_query_time

通用查询日志(默认关闭,主要作用:审计)

记录mysqld进程所做的几乎所有操作,有一定安全隐患,5.6之后,涉及用户操作语句的密码部分将被加密,但可通过--log-raw参数配置为不加密;记录顺序为mysqld接收顺序,不一定与执行顺序一致(比如受到阻塞影响等)

关键参数:general_log general_log_file

查询日志除记录到系统文件外,还能保存到数据库mysql中的同名表中,但系统开销更大,且会有诸多特点,诸如使用CSV或MyISAM引擎、不允许用户增删改、不写入二进制文件等。

输出位置参数:log_output

可选值:TABLE FILE NONE

 

4、二进制日志(类似于Oracle的归档日志)

前面三个文件可有可无,这个可必须得有,特别是对于主从复制

二进制日志:记录数据库中的修改事件

二进制日志文件:保存数据库中修改事件的文件

默认不启用,启用使用参数--log-bin,文件已000001递增序号结尾,每次重启或刷新日志时,创建新日志文件;

文件大小由max_binlog_size控制,如果达到或超过(事务性决定相关事件必须连续,故最后一个事件可能导致文件超过该参数值),则创建新文件。

为跟踪binlog文件状态,MySQL创建了一个与二进制日志文件同名,扩展名为index的索引文件,可通过--log-bin-index参数指定文件名和存储路径,不能在mysql服务运行过程中手动修改该文件

RESET MASTER 清空所有二进制文件

PURGE BINARY LOGS 删除指定日志文件

如何不记录日志:

1、super权限用户,在执行操作前,先执行set sql_log_bin=0,禁用其执行的语句生成二进制日志,隐蔽操作,无法察觉;

2、--binlog-do-db --binlog-ignore-db,指定某些数据库记录/不记录二进制日志,这两个参数一次只能指定一个值,需要指定多个值时,需指定多次

二进制日志文件需要使用mysqlbinlog命令解析,该命令还可进行恢复操作:

mysqlbinlog log_file | mysql -h server_name log_file里面的内容会被mysql重新执行

mysqlbinlog还可以查看slave端的relay_log

二进制日志记录事件格式:

基于行(row-based logging)、

基于语句(statement-based logging)、

混合模式(mixed-based logging)

不同模式下写入二进制文件的内容不同,解析时应指定的参数也不同

非事务表语句执行后即写入binlog

事务表则需要等到没有任何锁定或未提交信息才会写入binlog

当线程开始处理事务时,会按照binlog_cache_size值分配内存空间,缓存sql,如果语句需要的空间超出,该线程会打开一个临时文件保存该事务,事务结束自动删除临时文件。

binlog_cache_use 显示使用binlog_cache_size的事务数(含临时文件)

binlog_cache_disk_use 显示使用临时文件的事务数

binlog_cache_size 调优上述状态,尽量避免使用磁盘临时文件

max_binlog_cache_size(默认4G,也是最大值)限制事务使用的最大缓存区,超出则报错,事务回滚,最小值为4096

系统变量:show [global] variables

状态变量:show [global] status

sync_binlog设置二进制日志同步到磁盘的频率,设为1s安全级别最高,同时也是最慢的设置,但即便如此设置,也有可能存在数据丢失的情况,比如:写入了操作但还没写入提交时,系统重启,写入的操作将回滚,数据丢失。为解决此类问题,mysql提供了初始化参数--innodb_support_xa,设置为1,启用分布式事务支持,确保二进制日志和innodb数据文件的同步

 

5、中继日志及复制状态文件

中继日志文件 relay log 保存读取自Master二进制日志,由Slave节点的I/O线程负责维护

默认文件名[host_name]-relay-bin.000001,如果主机名修改,复制将会中断;如果一定要改主机名,可考虑使用软连接方式解决,调整后需重启slave服务

Master信息日志文件 master.info slave节点保存连接Master节点的配置信息,5.6之后也可保存到mysql.slave_master_info表中

中继日志信息日志文件 relay-log.info 保存处理进度及中继日志文件的位置,5.6之后也可保存到mysql.slave_relay_log_info

 

6、表对象数据文件

数据文件类型取决于存储引擎

frm文件 表对象结构定义文件,与引擎无关

ibd文件 InnoDB数据文件(含索引)

MYD文件 MyISAM数据文件

MYI文件 MyISAM索引文件

CSV文件 CSV引擎数据文件

ARZ文件 ARCHIVE引擎数据文件

 

7、其他文件

进程id文件 mysql.pid 文件内容为mysql服务的进程号,当使用mysqld_safe启动时,会生成并校验该文件,以判断mysql服务是否运行,避免重复启动;如果使用mysqld启动,不会关注该文件,可能导致重复启动;有时mysql.pid的存在会引起mysqld_safe的误判,删掉后重启即可。

套接字文件 mysql.sock 默认保存在/tmp下,可通过--socket选项指定,当Mysql客户端和服务端在同一台机器上时才会用到

自动配置文件 auto.cnf 默认保存在数据根目录,mysql自动生成,不能手动修改,记录UUID

5.6开始,每个mysql实例会拥有一个唯一的UUID,以避免slave应用错误的数据

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值