日期:2014-05-16  浏览次数:20498 次

mysql物理文件组成以及innodb的配置使用

我把我的mysql的数据文件指定到了下面目录:

?

[root@txwhdb data_1]# pwd
/data_1

这个目录结构如下:


其中mysql和shengqian是database目录,其他均为文件

?


1、mysql的错误日志文件:txwhdb.err

mysql的错误日志默认存放在数据目录下,以hostname.err命名,但是可以使用命令:--log-error[=file-name]来修改其存放路径以及文件名

?

2、mysql二进制日志:mysql-bin.xxxxxxxxxx,即常说的binlog

是mysql中最为重要的日志之一,在my.cnf当中:

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

你可以通过修改这个配置来设定你想存放的路径以及文件名

mysql-bin.index文件的功能是记录所有binlog的绝对路径,保证mysql的各种线程能够顺利的根据它找到所需要的binlog文件

?

binlog还有一些选项参数:

--max_binlog_size:指定单个binlog日志文件的大小

--binlog_do_db=db_name:指定对特定的数据库记录binlog日志

--binlog_ignore_db=db_name:指定忽略为某个数据库记录binlog日志

?

还有更新日志,查询日志,慢查询日志以及innodb的redo日志等,不做详述,应该用不到

?

3、数据文件

mysql两种常用存储引擎myisam和innodb

myisam不支持事务;innodb支持事务,当前作为插件来安装

?

myisam的数据库的物理文件结构为:

.frm文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。各种存储引擎都需要frm文件,并且存放于数据库名目录下。

.myd文件:myisam存储引擎专用,用于存储myisam表的数据

.myi文件:myisam存储引擎专用,用于存储myisam表的索引相关信息

?

innodb的数据库的物理文件结构为:

.frm文件

.ibd文件和.ibdata文件:

这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。

独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件

共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件

my.cnf文件当中有这样一段注释:

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/var/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/var/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

?

共享表空间的存储方式,可以使用上面选项中的以下两项来共同配置组成:

#innodb_data_home_dir = /usr/local/mysql/var/
#innodb_data_file_path = ibdata1:10M:autoextend

innodb_data_home_dir 指定数据存放的总目录,innodb_data_file_path 配置每一个文件的名称。

当然也可以不配置innodb_data_home_dir ,而是直接在innodb_data_file_path 指定绝对路径。

注意:当配置多个ibdata文件的时候,如果配置可扩展的ibdata文件,那么这个可扩展的文件必须配置在所有已经配置的ibdata文件之后,因为mysql针对共享表空间的innodb仅支持最后一个ibdata是可扩展的。配置完毕之后,需要重启mysql才算是添加完成。

?

独立表空间可以如下配置:

[mysqld]

......

innodb_file_per_table

?

?

pid文件:

是mysql在unix/linux环境下的一个进程文件,和许多其他的unix或者linux服务器端程序一样,它存放着自己的进程id

?

socket文件:

MySQL通过这个unix socket 文件来与本地的客户端进行通信的。如果此文件丢了,可以通过重新启动服务器来重新创建它