MySQL中文件存储形式(InnoDB/MyIsam)

与innodb文件格式相关的参数为

innodb_data_file_path、innodb_data_file_path、innodb_log_group_home_dir、innodb_open_files

1、独占表空间

下面进入MySQL数据存放目录,查看使用innodb时MySQL存储文件格式

[root@www ~]# cd /var/lib/mysql/
[root@www mysql]# ls –lrt
总用量 21352
drwx------. 2 mysql mysql
4096 11月
26 2017 test
drwx------. 2 mysql mysql
4096 11月
26 2017 mysql
-rw-rw----. 1 mysql mysql
765307 11月
26 2017 master-bin.000002
-rw-rw----. 1 mysql mysql
19742 11月
26 2017 master-bin.000001
-rw-rw----. 1 mysql mysql 5242880
11月
26 2017 ib_logfile1
drwx------. 2 mysql mysql
4096 11月
26 2017 testslave
-rw-rw----. 1 mysql mysql
764 11月
27 2017 master-bin.000003
-rw-rw----. 1 mysql mysql
599 11月
28 2017 master-bin.000004
drwx------. 2 mysql mysql
4096 11月
28 2017 hellodb
-rw-rw----. 1 mysql mysql
10270 11月
28 2017 master-bin.000005
-rw-rw----. 1 mysql mysql
125 4月20 21:34 master-bin.000006
-rw-rw----. 1 mysql mysql
596 4月25 00:23 master-bin.000007
-rw-rw----. 1 mysql mysql
367 4月28 20:08 master-bin.000008
srwxrwxrwx. 1 mysql mysql
0 6月8 17:34 mysql.sock
-rw-rw----. 1 mysql mysql
180 6月8 17:34 master-bin.index
drwx------. 2 mysql mysql
4096 6月8 18:36 mydb
-rw-rw----. 1 mysql mysql
1031 6月8 19:20 master-bin.000009
-rw-rw----. 1 mysql mysql 5242880
6月8 19:20 ib_logfile0
-rw-rw----. 1 mysql mysql 10485760 6月8 19:20 ibdata1

1)、日志组文件:

可以发现,./目录下数据存在日志组文件:

ib_logfile0和ib_logfile1,默认均为5M。

2)、表结构文件:*.frm

在MYSQL中建立任何一张数据表,在其数据存放目录对应的数据库目录下都有对应表的.frm文件,

.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,

在MySQL中,“.frm”文件跟数据库存储引擎无关,任何存储引擎的数据表结构文件都存储为.frm文件,

命名方式为“tablename.frm”,如scores.frm,.frm文件可以用来在数据库崩溃时恢复表结构。

[root@www mysql]# cd hellodb/
[root@www hellodb]# ls -lrt
总用量 824
-rw-rw----. 1 mysql mysql 8658
11月
28 2017 scores.frm
-rw-rw----. 1 mysql mysql
61 11月
28 2017 db.opt
-rw-rw----. 1 mysql mysql 8602
11月
28 2017 courses.frm
-rw-rw----. 1 mysql mysql 8630
11月
28 2017 coc.frm
-rw-rw----. 1 mysql mysql 8636
11月
28 2017 classes.frm
-rw-rw----. 1 mysql mysql 8622
11月
28 2017 toc.frm
-rw-rw----. 1 mysql mysql 8656
11月
28 2017 teachers.frm
-rw-rw----. 1 mysql mysql 98304
11月
28 2017 toc.ibd
-rw-rw----. 1 mysql mysql 98304
11月
28 2017 teachers.ibd
-rw-rw----. 1 mysql mysql 98304
11月
28 2017 scores.ibd
-rw-rw----. 1 mysql mysql 98304
11月
28 2017 courses.ibd
-rw-rw----. 1 mysql mysql 98304
11月
28 2017 classes.ibd
-rw-rw----. 1 mysql mysql 8736
11月
28 2017 students.frm
-rw-rw----. 1 mysql mysql
603 11月
28 2017 test.frm
-rw-rw----. 1 mysql mysql 131072 11月
28 2017 students.ibd
-rw-rw----. 1 mysql mysql 98304
6月8 19:20 coc.ibd

3)、独占表空间文件:*.ibd

在innodb_file_per_table配置为ON时设置为独占表空间,此时,系统将为每一个表单独存储为“.ibd”文件,

(如scores.ibd)在此文件中,存储与该表相关的数据、索引、表的内部数据字典信息。

4)、字符集和排序规则文件:db.opt

[root@www hellodb]# cat db.opt

default-character-set=utf8

default-collation=utf8_general_ci

文件中记录了该库的默认字符集编码和字符集排序规则。如果你创建数据库指定默认字符集和排序规则,

后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。

如果删除这个db.opt,MySQL在建表时将参照全局的字符设置,即default-character-set

这个影响是在建表的时候才会有体现,你不在那个库新建表,是没什么差异的。

字符集配置:

vim /etc/my.cnf

[client]

default-character-set = charset

(charset是mysql支持的字符集)

5)、binlog二进制日志文件:记录主数据库服务器的DDL和DML操作。

在主从复制时,二进制日志文件将通过Binlog Dump线程传递给从服务器的I/O线程,

I/O线程获取事件数据后传递给从服务器的relay

log,然后在从服务器重做一遍实行复制。

[root@www hellodb]# cd ..
[root@www mysql]# cat master-bin.000009
ºY[V󿾄@mydbcreate
table t3 like t1󗙛@mydbBEGIN󗙛^b@mydbinsert
into t3 value(1,'jones')󗙛iZ[D@mydbBEGINZ[^@mydbinsert
into t3 value(2,'jarry')Z[j>[[@mydbdrop table if exists
t4\[V
@mydbdrop table if exists t4 \[W= @mydbcreate table cid(id
int){f[@hellodbBEGIN{f[h