innodb存储引擎修改表共享空间为独立空间
程序员文章站
2024-02-28 09:16:52
1,查看一下是共享表空间,还是独立表空间复制代码 代码如下:mysql> show variables like '%per_table%';+-----------...
1,查看一下是共享表空间,还是独立表空间
复制代码 代码如下:
mysql> show variables like '%per_table%';
+-----------------------+-------+
| variable_name | value |
+-----------------------+-------+
| innodb_file_per_table | off |
+-----------------------+-------+
1 row in set (0.00 sec)
如果是off,肯定不是独立表空间。如果是on的话,也不一定是独立表空间。最直接的方法就是查看硬盘上的文件,独立表空间,每个表都对应了一个空间。
[/code]
[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月[/code]
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> 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的文件,根共享表空间是不一样的。到这儿就完全配置好了。
推荐阅读
-
innodb存储引擎修改表共享空间为独立空间
-
innodb存储引擎修改表共享空间为独立空间
-
InnoDB引擎独立表空间innodb_file_per_table_MySQL
-
innodb 修改表共享空间为独立空间_MySQL
-
Linux UDEV和为MySQL InnoDB共享表空间配置裸设备_MySQL
-
MySQL之INNODB表空间(共享、独立)
-
MySQL判别InnoDB表是独立表空间还是共享表空间的方法详解
-
3. InnoDB 存储引擎-表结构定义文件、InnoDB存储引擎文件、表空间文件、重做日志文件
-
MySQL如何判别InnoDB表是独立表空间还是共享表空间
-
InnoDB 修改表共享空间为独立空间