程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> innodb 修改表共享空間為獨立空間

innodb 修改表共享空間為獨立空間

編輯: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的文件,根共享表空間是不一樣的。到這兒就完全配置好了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved