在使用Percona XtraBackup的部分备份功能时,发现官方文档的第一句话就是:

xtrabackup supports taking partial backups when the innodb_file_per_table option is enabled.

于是查询了一下MySQL的 innodb_file_per_table
innodb_file_per_table 顾名思义,首先是innoDb引擎的配置,其次表示每表一个文件。其实也就是独立表空间,与之对应的就是共享表空间。
打开MySQL的datadir,进入一个innoDb数据库的目录,会看到每张表都对应有两个文件:table_name.frmtable_name.ibd,这就是开启了独立表空间的效果。
查看是否开启

mysql> show variables like '%per_table%';

开启方法:
在my.cnf文件[mysqld]下设置

innodb_file_per_table=1

MySQL自5.6.6版本,就默认开启了这个参数,所以就没意识到它的存在。那么MySQL为什么要默认开启独立表空间呢,肯定有其原因。
独立表空间的优点:

  1. 每个表都有自己独立的表空间。
  2. 每个表的数据和索引都在自己的表空间中。
  3. 可以实现单表在不同的数据库中移动。
  4. 空间可以回收
  5. 性能优势(除insert共享表空间略有优势外,其他方面独立表空间都表现更好)

Shawn
56 声望3 粉丝

引用和评论

0 条评论