innodb 共享表空间 转 独立表空间 详细说明,以及遇到的问题
张映 发表于 2011-12-31
分类目录: mysql
最近在优化mysql innodb存储引擎,准备把共享表空间转换成独立表空间。刚开始的没考虑这么多,过段时间又要推广,所以优化一下,看看效果如何。说一个转换过程。
1,查看一下是共享表空间,还是独立表空间
查看复制打印?
mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF |
+-----------------------+-------+
1 row in set (0.00 sec)
如果是OFF,肯定不是独立表空间。如果是ON的话,也不一定是独立表空间。最直接的方法就是查看硬盘上的文件,独立表空间,每个表都对应了一个空间。
[root@localhost tg]# ll
总用量 64
-rw-rw----. 1 mysql mysql 65 12月 30 20:09 db.opt
-rw-rw----. 1 mysql mysql 8658 12月 30 23:17 gb.frm
-rw-rw----. 1 mysql mysql 8658 12月 30 23:19 qr.frm
-rw-rw----. 1 mysql mysql 8658 12月 30 23:19 qy.frm
-rw-rw----. 1 mysql mysql 8658 12月 30 23:19 tg.frm
-rw-rw----. 1 mysql mysql 8658 12月 30 23:19 xcy.frm
tg是一个数据库名,里面的都是innodb的。像这种情况就是共享表空间。
2,停掉mysql
/etc/init.d/mysqld stop
3,修改my.cnf的配置文件
innodb-file-per-table=1
4,备份使用innodb引擎的数据库
mysqldump -u tg -p tg >/home/6fan/tg.sql;
5,删除使用innodb的数据库,以及日志文件
查看复制打印?
cd /var/lib/mysql //数据库文件位置
rm -f ib* //删除日志和空间
rm -rf tg //删除使用innodb引擎的数据库文件夹
如果不删除使用innodb的数据库文件夹,启动不了innodb引擎,我查看了一下错误日志。如下
111231 20:54:44 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
111231 20:54:50 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 512 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200 300 400 500
InnoDB: Cannot initialize created log files because
InnoDB: data files are corrupt, or new data files were
InnoDB: created when the database was started previous
InnoDB: time but the database was not shut down
InnoDB: normally after that.
111231 20:54:55 [ERROR] Plugin 'InnoDB' init function returned error.
111231 20:54:55 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
111231 20:54:55 [Note] Event Scheduler: Loaded 0 events
6,启动mysql
/etc/init.d/mysqld start
7,导入数据库
mysql -u root -p < /home/6fan/tg.sql
8,在查看一下,是转换好了
查看复制打印?
//进入到mysql后的查寻
mysql> show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
//查看数据库目录下的文件
[root@localhost tg]# ll
总用量 544
-rw-rw----. 1 mysql mysql 65 12月 31 22:48 db.opt
-rw-rw----. 1 mysql mysql 8658 12月 31 22:49 gb.frm
-rw-rw----. 1 mysql mysql 98304 12月 31 22:49 gb.ibd
-rw-rw----. 1 mysql mysql 8658 12月 31 22:49 qr.frm
-rw-rw----. 1 mysql mysql 98304 12月 31 22:49 qr.ibd
-rw-rw----. 1 mysql mysql 8658 12月 31 22:49 qy.frm
-rw-rw----. 1 mysql mysql 98304 12月 31 22:49 qy.ibd
-rw-rw----. 1 mysql mysql 8658 12月 31 22:49 tg.frm
-rw-rw----. 1 mysql mysql 98304 12月 31 22:49 tg.ibd
-rw-rw----. 1 mysql mysql 8658 12月 31 22:49 xcy.frm
-rw-rw----. 1 mysql mysql 98304 12月 31 22:49 xcy.ibd
从这里可以看出,每一张表都对应有一个.ibd的文件,根共享表空间是不一样的。到这儿就完全配置好了。
收藏、分享这篇文章!
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/mysql/1368.html
分享到:
相关推荐
MySQL的InnoDB存储引擎在处理表空间方面有两种模式:共享表空间和独立表空间。共享表空间模式下,所有InnoDB表的数据和索引都存储在一个或多个大文件(如ibdata1)中。而独立表空间模式,也称为文件-per-table模式,...
4. **空间管理**:独立表空间不存在共享表空间的表空间回缩问题,删除操作后可以通过ALTER TABLE等命令回收空间,减少碎片产生。 5. **性能优化**:独立表空间有助于减少碎片化,尤其在单表数据量很大时,易于发现...
- **InnoDB的表空间管理**:InnoDB支持两种表空间模式,即独立表空间(每个表一个.frm文件和一个.ibd文件)和共享表空间(所有表数据存储在一个大文件中)。可以通过`SHOW CREATE TABLE 表名`查看表的存储引擎和表...
MySQL 5.7版本引入了独立的临时表空间特性,为用户在使用MySQL时提供了更多的灵活性。然而,在使用过程中也可能...通过合理配置和监控,以及使用上文提到的技巧和建议,可以有效地避免在使用临时表空间时遇到的“坑”。
8. 共享表空间所有表数据存放在一个文件,删除表不释放空间;独立表空间每个表有自己的文件,删除表释放空间。 9. 清空表的最佳方法是 `TRUNCATE TABLE`,因为它不写日志,效率高。 10. 查询性能上,唯一索引和...
以下是对这些挑战的详细说明以及可能的解决方案: 1. 表空间切换: MySQL 5.5默认情况下,InnoDB表的数据和索引存储在一个共享表空间(ibdata)中。而在MariaDB 10.1.14中,如果希望每个InnoDB表都有自己的单独...
8. **独立表空间和共享表空间**: - 独立表空间:每个表有自己的.frm文件,.ibd文件存储数据。 - 共享表空间:所有表的数据存储在一个大文件中。 9. **清空表的最佳语句**:`TRUNCATE TABLE`,速度快于 `DELETE ...
1.3.1 支持动态更改独立表空间 39 1.3.2 支持动态更改innodb锁超时时间 40 1.4 innodb新参数汇总 40 1.5 同步复制新参数汇总 48 1.6 sql语句写法的改变 53 1.6.1 delete表连接语法改变 53 1.6.2 mysql5.5存储...
- **锁机制**:用于解决并发操作中的数据冲突问题,包括共享锁、排他锁等。 #### 19. 大表字段添加优化 - **问题描述**:向大表添加字段可能导致性能极慢。 - **解决方案**:先创建新表并填充数据,再通过RENAME ...
数据以特定的方式组织,确保多用户共享、最小冗余度和与应用程序的独立性。例如,车库和军火库的比喻,强调了数据库的有序性和安全性。 2. 数据存储类型:数据库能够存储各种类型的数据,但文件型数据和大型媒体...
【数据库系统基础】 数据库系统是计算机科学中的重要组成部分,它...通过独立解决问题,增强了自我学习和解决问题的能力,对MySQL有了更深入的理解。这对于未来在互联网行业的工作或进一步学习数据库管理至关重要。
- **事务并发与隔离级别**:事务在并发执行时可能会遇到数据不一致的问题,如脏读、不可重复读和幻读等。为了解决这些问题,数据库引入了不同的隔离级别: - **读未提交(Read Uncommitted)**:最低的隔离级别,...