在Innodb中,咱们能够指定一张表的数据是保存在独立表空间仍是系统表空间,这个参数是:innodb_file_per_table 若是咱们设置这个参数的值为0,那么一个表将使用系统表空间来保存表的数据,若是设置为1,则使用独立表空间来存储数据。 除此以外,咱们能够使用 alter table tbl_name tablespace innodb_file_per_table; 的方法来把系统表空间中的表转移到独立表空间,反之,咱们能够使用: alter table tbl_name tablespace innodb_system 的方法来将独立表空间的表转移到系统表空间。 系统表空间(ibdata一、ibdata2文件) 系统表空间是指data目录下面的ibdata1文件和ibdata2文件,文件个数能够指定,这里的表空间文件默认大小是12M,固然,咱们也能够手动设置,配置的方法以下: # InnoDB Directory Variables innodb_data_home_dir = /data/mysql_4306/data innodb_data_file_path = ibdata1:1000M;ibdata2:100M:autoextend innodb_file_per_table = 1 在配置文件my.cnf里面写上以上参数,注意看,这里我写的是ibdata1是1000M,而ibdata2是100M,这样的设置是彻底可行的,能够看到,在ibdata一行最后是autoextend,他的意思是这个文件是能够自动扩展的,因此通常都会比较大,每每是1G更多。还有一点须要注意,就是这个系统表空间只有一份,全部的表共用这一份数据。 关于这个系统表空间,这里有一个小坑,给你们说一下: 若是你的主库上设置的ibdata的模式是一个1000M,一个100M的话,你在搭建从库的时候,从库上须要跟主库保持一致,若是没有保持一致,则在实例启动的时候会有报错。