查看datadir下的所有文件
[root@lzl mysql3308]# ls -lrt
total 122932
-rw-r----- 1 mysql mysql 50331648 Aug 3 16:47 ib_logfile1
-rw-r----- 1 mysql mysql 56 Aug 3 16:47 auto.cnf
drwxr-x--- 2 mysql mysql 4096 Aug 3 16:47 performance_schema
drwxr-x--- 2 mysql mysql 12288 Aug 3 16:47 sys
drwxr-x--- 2 mysql mysql 4096 Aug 5 18:22 mysql
-rw-r----- 1 mysql mysql 384 Aug 7 15:24 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Aug 7 15:24 ibtmp1
drwxr-x--- 2 mysql mysql 4096 Aug 7 18:19 lzldb
-rw-r----- 1 mysql mysql 12582912 Aug 7 18:20 ibdata1
-rw-r----- 1 mysql mysql 50331648 Aug 7 18:20 ib_logfile0
-rw-r----- 1 mysql mysql 295 Aug 10 11:58 slave-relay-bin.000018
-rw-r----- 1 mysql mysql 409 Aug 10 11:58 slave-relay-bin.000019
-rw-r----- 1 mysql mysql 50 Aug 10 11:58 slave-relay-bin.index
-rw-r----- 1 mysql mysql 62 Aug 10 11:58 relay-log.info
-rw-r----- 1 mysql mysql 130 Aug 16 15:16 master.info
带ib的,都跟innodb相关
1 ib_logfile
logfile指的是redo logfile,物理redo日志
logfile大小由innodb_log_file_size控制,默认是48m(oracle是50m)
ib_logfile数量由innodb_log_files_in_group控制,默认为2(oracle是3组)。
ib logfile顺序循环写,默认文件为ib_logfile0,ib_logfile1,当前我的环境明显正在写的是ib_logfile1。
mysql> show variables like '%log_file%';
+---------------------------+------------------------------+
| Variable_name | Value |
+---------------------------+------------------------------+
| general_log_file | /data/mysql3308/lzl.log |
| innodb_log_file_size | 50331648 |
| innodb_log_files_in_group | 2 |
| slow_query_log_file | /data/mysql3308/lzl-slow.log |
+---------------------------+------------------------------+
4 rows in set (0.00 sec)
mysql> select 50331648/1024/1024 mb ;
+-------------+
| mb |
+-------------+
| 48.00000000 |
+-------------+
1 row in set (0.00 sec)
redo log只是记录所有innodb表数据的变化。
redo log只是记录正在执行中的dml以及ddl语句。
redo log可以作为异常down机或者介质故障后的数据恢复使用
2 auto.cnf
在没有指定uuid的时候,mysql会自动生成一个uuid并存放在auto.cnf中
[root@lzl mysql3308]# cat auto.cnf
[auto]
server-uuid=fdd256b7-d565-11ea-b1f7-08002792ac2c
3 performance_schema,sys,mysql,lzldb
这几个目录都是schema数据存储目录,performance_schema,sys,mysql都是系统自带的,其他都是自建的
4 ib_buffer_pool文件
在理解ib_buffer_pool文件前需要理解innodb buffer pool和innodb缓冲池预热
innodb buffer pool是innodb的数据缓冲区(类似oracle的数据高速缓冲区)
mysql> show variables like '%buffer%pool%';
+-------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size | 134217728 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 134217728 |
+-------------------------------------+----------------+
10 rows in set (0.00 sec)
innodb_buffer_pool_instances默认为1,表示innoDB缓冲池的区域chunk个数,多个pool可以提升innodb并发性能
innodb_buffer_pool_chunk_size,每个chunk的大小
innodb_buffer_pool_dump_at_shutdown:默认on,关闭mysql时,buffer中的数据会存放dump在磁盘上,也就是我们看到的文件ib_buffer_pool(由innodb_buffer_pool_filename参数控制),dump大小默认为25%(由innodb_buffer_pool_dump_pct参数控制)
innodb_buffer_pool_load_at_startup:在打开mysql时,加载上次关闭的时dump下来的ib_buffer_pool数据到buffer pool中
innodb_buffer_pool_size为buffer pool的大小,默认128m(mysql5.7)
innodb_buffer_pool_load_abort中断缓冲池预热任务,由innodb_buffer_pool_load_at_startup 和innodb_buffer_pool_load_now发起的任务
innodb_buffer_pool_dump_now立即dump buffer pool到磁盘上,一般跟innodb_buffer_pool_load_now一起使用
innodb_buffer_pool_load_now立即开启缓冲池预热
5 ibtmp1
ibtmp1是innodb临时表空间的数据文件
mysql> show variables like '%temp%';
+----------------------------+-----------------------+
| Variable_name | Value |
+----------------------------+-----------------------+
| avoid_temporal_upgrade | OFF |
| innodb_temp_data_file_path | ibtmp1:12M:autoextend |
| show_old_temporals | OFF |
+----------------------------+-----------------------+
innodb_temp_data_file_path
innodb临时表空间数据文件初始大小12m,自动增长,没有限制(oracle数据库8k block的数据文件最大值为32G)
可以通过设置ibtmp1:12M:autoextend:max:1G来设置最大值。innodb_temp_data_file_path是只读参数,仅能在cnf文件中设置,重启生效。
6 ibdata1
mysql> show variables like '%innodb_file_per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
如果innodb_file_per_table打开(默认),innodb的数据会写到各自的schema目录文件下。
ibdata1存储一些innodb内部数据
7 slave-relay-bin
slave-relay-bin.xxxx是从库的relay日志文件(我这个环境开启了slave,master是没有relay的)
slave-relay-bin.index 是从库的relay日志文件的index文件,存放relay的文件名
[root@lzl mysql3308]# cat slave-relay-bin.index
./slave-relay-bin.000018
./slave-relay-bin.000019
8 relay-log.info和master.info
开启slave才有上述2个文件。
info文件存储了主从的配置信息
[root@lzl mysql3308]# cat relay-log.info
7
./slave-relay-bin.000019
409
master-bin.000009
194
0
0
1
[root@lzl mysql3308]# cat master.info
25
master-bin.000009
194
127.0.0.1
replicator
oracle
3306
60
0
0
30.000
0
a9521767-c5a0-11ea-a743-08002792ac2c
86400
0
参考文章:
https://www.cnblogs.com/qianyuliang/p/9916372.html
https://blog.csdn.net/yabingshi_tech/article/details/46622999