ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。若是file-per-table选项打开的话,该文件则不必定包含全部表的数据。当innodb_file_per_table选项打开的话,新建立表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中.mysql
显然这个文件会愈来愈大,innodb_autoextend_increment选项则指定了该文件每次自动增加的步进,默认是8M.sql
ibdata1存放数据,索引和缓存等,是MYSQL的最主要的数据。因此随着数据库愈来愈大,表也会越大,这个没法避免的。若是时间长了,愈来愈大,咱们在处理日志和空间的时候就不是那么方便了,就不知从何入手了。接下来咱们就要处理下这样的状况,分库存储数据。数据库
首先咱们把数据库文件备份下来,而后直接删除ibdata文件(为了保险起见最好先全备一次,作到数据安全和完整),而后再从新导入数据库文件便可!缓存
一、中止业务,备份一次全库安全
mysqldump -uroot -ppassword --all-databases --add-dorp-table > /root/all_mysql.sql二、备份完成,中止数据库rest
systemctl stop mariadb 或者 service mysqld stop三、修改配置文件日志
在[mysqld]下增长下面配置 innodb_file_per_table=1 验证配置是否生效,能够重启mysql后,执行 #service mysqld restart四、验证blog
mysql -uroot -ppassword mysql索引
show variables like '%per_table%';rem
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
innodb_file_per_table的状态变为ON
五、删除ibdata1文件和日志
rm -rf ibdata1
rm -rf ib_logfile*
六、还原数据库
mysql -uuser -ppassword
source /root/all_mysql.sql
数据文件单独存放(共享表空间改成每一个表独立的表空间文件)。