失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > innodb 共享表空间 转 独立表空间 详细说明

innodb 共享表空间 转 独立表空间 详细说明

时间:2019-06-05 11:15:41

相关推荐

innodb 共享表空间 转 独立表空间 详细说明

关于MySQL中的 Innodb 引擎就不多说了, 毕竟除了MyISAM 之外, 它的应用最广泛. Innodb 存储数据有两种方式: 共享表空间 和 独立表空间. 顾名思义, 共享表空间 就是把所有数据库数据放在一个或多个文件中( 这种方式的话,使用裸设备倒是很方便); 独立表空间 就是采用和MyISAM 相同的方式, 每个表拥有一个独立的数据文件( .idb )。

在服务器资源有限,单表数据不是特别多的情况下,独立表空间明显比共享方式效率更高. 但是MySQL 默认是共享表空间

1,查看一下是共享表空间,还是独立表空间

Java代码 mysql>showvariableslike'%per_table%';+-----------------------+-------+|Variable_name|Value|+-----------------------+-------+|innodb_file_per_table|OFF|+-----------------------+-------+1rowinset(0.00sec)

如果是OFF,肯定不是独立表空间。如果是ON的话,也不一定是独立表空间。最直接的方法就是查看硬盘上的文件,独立表空间,每个表都对应了一个空间。

Java代码 [root@localhosttg]#ll总用量64-rw-rw----.1mysqlmysql6512月3020:09db.opt-rw-rw----.1mysqlmysql865812月3023:17gb.frm-rw-rw----.1mysqlmysql865812月3023:19qr.frm-rw-rw----.1mysqlmysql865812月3023:19qy.frm-rw-rw----.1mysqlmysql865812月3023:19tg.frm-rw-rw----.1mysqlmysql865812月3023:19xcy.frm

tg是一个数据库名,里面的都是innodb的。像这种情况就是共享表空间。

2,停掉mysql

Java代码 /etc/init.d/mysqldstop

3,修改f的配置文件[mysqld] 段添加

Java代码 innodb-file-per-table=1

4,备份使用innodb引擎的数据库

Java代码 mysqldump-utg-ptg>/home/6fan/tg.sql;

5,删除使用innodb的数据库,以及日志文件

Java代码 cd/var/lib/mysql//数据库文件位置rm-fib*//删除日志和空间rm-rftg//删除使用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

Java代码 /etc/init.d/mysqldstart

7,导入数据库

Java代码 mysql-uroot-p</home/6fan/tg.sql

8,在查看一下,是转换好了

Java代码 //进入到mysql后的查寻mysql>showvariableslike'%per_table%';+-----------------------+-------+|Variable_name|Value|+-----------------------+-------+|innodb_file_per_table|ON|+-----------------------+-------+1rowinset(0.00sec)//查看数据库目录下的文件[root@localhosttg]#ll总用量544-rw-rw----.1mysqlmysql6512月3122:48db.opt-rw-rw----.1mysqlmysql865812月3122:49gb.frm-rw-rw----.1mysqlmysql9830412月3122:49gb.ibd-rw-rw----.1mysqlmysql865812月3122:49qr.frm-rw-rw----.1mysqlmysql9830412月3122:49qr.ibd-rw-rw----.1mysqlmysql865812月3122:49qy.frm-rw-rw----.1mysqlmysql9830412月3122:49qy.ibd-rw-rw----.1mysqlmysql865812月3122:49tg.frm-rw-rw----.1mysqlmysql9830412月3122:49tg.ibd-rw-rw----.1mysqlmysql865812月3122:49xcy.frm-rw-rw----.1mysqlmysql9830412月3122:49xcy.ibd

从这里可以看出,每一张表都对应有一个.ibd的文件,根共享表空间是不一样的。到这儿就完全配置好了。

如果觉得《innodb 共享表空间 转 独立表空间 详细说明》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。