在使用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.frm
和 table_name.ibd
,这就是开启了独立表空间的效果。
查看是否开启
mysql> show variables like '%per_table%';
开启方法:
在my.cnf文件[mysqld]下设置
innodb_file_per_table=1
MySQL自5.6.6版本,就默认开启了这个参数,所以就没意识到它的存在。那么MySQL为什么要默认开启独立表空间呢,肯定有其原因。
独立表空间的优点:
- 每个表都有自己独立的表空间。
- 每个表的数据和索引都在自己的表空间中。
- 可以实现单表在不同的数据库中移动。
- 空间可以回收
- 性能优势(除insert共享表空间略有优势外,其他方面独立表空间都表现更好)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。