[轉]MySql ibdata1檔案太大如何縮小

來源:互聯網
上載者:User

標籤:

From : http://blog.chinaunix.net/uid-24373487-id-4223322.html

原文地址:MySql ibdata1檔案太大如何縮小 emailwht

 

MySql ibdata1檔案太大如何縮小
 
MySql innodb如果是共用資料表空間,ibdata1檔案越來越大,達到了30多個G,對一些沒用的表進行清空:
truncate table xxx;
然後optimize table xxx; 沒有效果
因為對共用資料表空間不起作用。
mysql ibdata1存放資料,索引等,是MYSQL的最主要的資料。
如果不把資料分開存放的話,這個檔案的大小很容易就上了G,甚至幾十G。對於某些應用來說,並不是太合適。因此要把此檔案縮小。
無法自動收縮,必須資料匯出,刪除ibdata1,然後資料匯入,比較麻煩,因此需要改為每個表單獨的檔案。
解決方案:資料檔案單獨存放(共用資料表空間如何改為每個表獨立的資料表空間檔案)。
步驟如下:
 
1)備份資料庫
備份全部資料庫,執行命令
#mysqldump -q -uroot -ppassword --add-drop-table --all-databases >/home/backup/all.sql
做完此步後,停止資料庫服務。
#service mysqld stop
 
2)找到my.ini或my.cnf檔案
linux下執行 
# /usr/libexec/mysqld --verbose --help | grep -A 1 ‘Default options‘
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf 
windows環境下可以:
mysqld --verbose --help > mysqlhelp.txt
notepad mysqlhelp.txt
在裡面尋找Default options,可以看到尋找my.ini的順序,以找到真實目錄
 
3)修改mysql設定檔
開啟my.ini或my.cnf檔案
[mysqld]下增加下面配置
innodb_file_per_table=1
驗證配置是否生效,可以重啟mysql後,執行
#service mysqld restart
#mysql -uroot -ppassword
mysql> show variables like ‘%per_table%‘;
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+
1 row in set (0.00 sec)


mysql> 

看看innodb_file_per_table變數是否為ON
 
4)刪除原資料檔案
刪除原來的ibdata1檔案及記錄檔ib_logfile*,刪除/var/lib/mysql目錄下的應用程式資料庫檔案夾(mysql檔案夾不要刪)
 
5)還原資料庫
啟動資料庫服務
從命令列進入MySQL Server
還原全部資料庫,執行命令
#service mysqld start
#mysql -uroot -pocs < /home/backup/all.sql 


經過以上幾步後,可以看到新的ibdata1檔案就只有幾十M了,資料及索引都變成了針對單個表的小ibd檔案了,它們在相應資料庫的檔案夾下面。


# ll
total 295028
drwx------  2 mysql mysql     36864 Apr 22 14:16 glpi
drwx------  2 mysql mysql     36864 Feb 15 13:45 glpi-1
-rw-rw----  1 mysql mysql  10485760 Apr 22 14:27 ibdata1
-rw-rw----. 1 mysql mysql 270532608 Apr 22 14:14 ibdata1-1
-rw-rw----  1 mysql mysql   5242880 Apr 22 14:27 ib_logfile0
-rw-rw----. 1 mysql mysql   5242880 Apr 22 14:14 ib_logfile0_bak
-rw-rw----  1 mysql mysql   5242880 Apr 22 14:28 ib_logfile1
-rw-rw----. 1 mysql mysql   5242880 Apr 21 22:50 ib_logfile1_bak
drwx------  2 mysql mysql      4096 Apr 22 14:16 mrbs
drwx------  2 mysql mysql      4096 Apr 14 12:05 mrbs-1
drwx------. 2 mysql mysql      4096 Apr 22 14:16 mysql
srwxrwxrwx  1 mysql mysql         0 Apr 22 14:16 mysql.sock
drwx------  2 mysql mysql     12288 Apr 22 14:16 ocsweb
drwx------  2 mysql mysql     12288 Nov 16  2011 ocsweb-1


# ll mrbs
total 808
-rw-rw---- 1 mysql mysql     61 Apr 22 14:16 db.opt
-rw-rw---- 1 mysql mysql  10492 Apr 22 14:16 mrbs_area.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_area.ibd
-rw-rw---- 1 mysql mysql   9264 Apr 22 14:16 mrbs_entry.frm
-rw-rw---- 1 mysql mysql 131072 Apr 22 14:16 mrbs_entry.ibd
-rw-rw---- 1 mysql mysql   9442 Apr 22 14:16 mrbs_repeat.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_repeat.ibd
-rw-rw---- 1 mysql mysql   8888 Apr 22 14:16 mrbs_room.frm
-rw-rw---- 1 mysql mysql 114688 Apr 22 14:16 mrbs_room.ibd
-rw-rw---- 1 mysql mysql   8688 Apr 22 14:16 mrbs_users.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_users.ibd
-rw-rw---- 1 mysql mysql   8658 Apr 22 14:16 mrbs_variables.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_variables.ibd
-rw-rw---- 1 mysql mysql   8738 Apr 22 14:16 mrbs_zoneinfo.frm
-rw-rw---- 1 mysql mysql  98304 Apr 22 14:16 mrbs_zoneinfo.ibd


# ll mrbs-1
total 88
-rw-rw---- 1 mysql mysql    61 Apr 14 12:05 db.opt
-rw-rw---- 1 mysql mysql 10492 Apr 14 12:05 mrbs_area.frm
-rw-rw---- 1 mysql mysql  9264 Apr 14 12:05 mrbs_entry.frm
-rw-rw---- 1 mysql mysql  9442 Apr 14 12:05 mrbs_repeat.frm
-rw-rw---- 1 mysql mysql  8888 Apr 14 12:05 mrbs_room.frm
-rw-rw---- 1 mysql mysql  8688 Apr 14 12:05 mrbs_users.frm
-rw-rw---- 1 mysql mysql  8658 Apr 14 12:05 mrbs_variables.frm
-rw-rw---- 1 mysql mysql  8738 Apr 14 12:05 mrbs_zoneinfo.frm

 

[轉]MySql ibdata1檔案太大如何縮小

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.