MySQL体系结构与参数文件及查询优化器详解(3)

比如在服务器上的mysql-bin.000015为一个二进制日志文件,mysql-bin.index文件为二进制的索引文件,用来存储过往产生的二进制日志序号 

MySQL体系结构与参数文件及查询优化器详解

 影响二进制日志文件的其他参数:

Max_binlog_size:指定了单个二进制日志文件的最大值,如果超过该值,则产生新的二进制日志文件,后缀名+1,并记录到.index文件中,默认是1G

binlog_cache_size:对InnoDB来说,所有未提交的事务的二进制日志都会先写入到缓存中,只有当事务提交时将缓存中的二进制日志写入到日志文件中。而缓存的大小由binlog_cache_size决定,默认是32K。当一个线程开启一个事务时,会自动分配32K的大小的binlog缓存空间,当事务的记录大于32K大小的时候,则会把缓存中的日志写入到临时文件中,可以通过查询binlog_cache_disk_use参数查看写入到临时文件的次数

MySQL体系结构与参数文件及查询优化器详解

在默认情况下由于缓存的存在,所以每个事务并不是在发起的时候写入到二进制日志中,所以当数据库在事务执行过程中宕机,则会有部分二进制日志未写入到文件的情况,参数sync_binlog=[N]用来控制此行为。 N参数表示每写多少次缓存就同步数据到磁盘,如果设置为1,则表示将缓存的内容同步写入到磁盘中 

sync_binlog默认取值为1 在5.7.x 
5.6 版本好像是0

binlog_do_db和binlog_ignore_db表示需要写入和忽略哪些库的二进制日志的写入,默认是空,表示所有数据库的二进制日志都要写入

Log_slave_update参数用来将从master上取得并执行的二进制日志写入到自己的二进制日志文件中去,通常在需要搭建master=>slave=>slave (一主多从,多主多从)架构的复制时,需要设置该参数

Binlog_format参数决定了二进制日志文件的内容格式,其取值可以是statement,row或者是mixed

2.3 MySQL 套接字文件

套接字文件:在unix系统下本地连接MySQL可以采用unix域套接字方式,这种方式需要一个套接字(socket)文件,其位置和名称由参数socket控制,一般在/tmp目录下,名为mysql.sock

show variables like 'socket'; 

对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器, 发起本地连接时可用。

例如你无须定义连接host的具体IP地址,只要为空或localhost就可以。 在此种情况下,即使你改变mysql的外部port也是一样可能正常连接

2.4 MySQL进程文件

Pid文件:当MySQL实例启动时,会将自己的进程ID写入到一个文件中,该文件由参数pid_file控制,默认是在数据库目录下,文件名为主机名.pid

show variables like 'pid_file';

2.5 MySQL 表结构文件

表结构定义文件:MySQL无论表采用哪种存储引擎,都会产生一个以frm为后缀名的文件,这个文件记录了该表的表结构定义

frm还用来存放视图定义,该文件是文本文件,可以直接使用cat命令来查看视图定义

只有视图的的frm 可以直接查看该结构的文件

2.6 MySQL存储引擎文件

InnoDB存储引擎文件包括以下几种: 
表空间文件: 

分为共享表空间文件(ibdata1)和独立表空间 
由innodb_data_file_path参数控制,所有基于InnoDB存储引擎的表的数据都会记录到该共享表空间中 
而如果设置了innodb_file_per_table参数,则每个innodb表都会产生一个独立的表空间,独立表空间的命令规则为表名.ibd,通过这种方式,用户不用将所有数据都存放在默认表空间中。 

需要说明的是独立表空间文件仅存储该表的数据、索引等信息,其余信息还是存放在共享表空间中, 
例如undo_log ,buffer,Innodb表的元数据都放在ibdata1 里面 等等

InnoDB存储引擎文件包括以下几种: 

重做日志文件:默认情况下,在InnoDB存储引擎的数据目录下会有两个名ib_logfile0和ib_logfile1的文件,叫重做日志文件,记录列对于InnoDB存储引擎的事务日志,当数据库实例重启时,InnoDB存储引擎会使用重做日志恢复到重启前的时刻,以此来保证数据的完整性

重做日志和二进制日志的区别在于: 

二进制日志会记录所有MySQL数据库有关的日志记录,而重做日志仅记录有关InnoDB存储引擎本身的事务日志

二进制日志的内容是每个事务的具体操作内容,而重做日志文件记录的是关于每个数据页的更改情况

MySQL体系结构与参数文件及查询优化器详解

3 InnoDB 体系结构

MySQL体系结构与参数文件及查询优化器详解

4 Mysql 后台线程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0c2f98b28341b5ab270e2668fc9c4d8.html