mysql的innodb擴(kuò)容為了添加一個(gè)數(shù)據(jù)文件到表空間中,首先要關(guān)閉 MySQL 數(shù)據(jù)庫(kù),編輯 my.cnf 文件,確認(rèn)innodb ibdata文件的實(shí)際情況和my.cnf的配置是否一致,這里有兩種情況: my.cnf的配置
innodb_data_file_path=ibdata1:10G;ibdata2:10G:autoextend 如果當(dāng)前數(shù)據(jù)庫(kù)正在使用ibdata1,或者使用ibdata2,但ibdata2沒(méi)有超過(guò)10G,則對(duì)my.cnf配置直接改成: innodb_data_file_path=ibdata1:10G;ibdata2:10G;ibdata3:10G:autoextend
如果設(shè)置了最后一個(gè)ibdata自動(dòng)擴(kuò)展時(shí),有可能最后一個(gè)ibdata的占用空間大于my.cnf的配置空間。例如: mysql@test:/data1/mysqldata/innodb/data> ls -lh -rw-rw---- 1 mysql mysql 10737418240 2010-01-26 16:34 ibdata1 -rw-rw---- 1 mysql mysql 16106127360 2010-01-26 16:34 ibdata2 這時(shí),需要精確的計(jì)算ibdata2的大小 15360M,修改: innodb_data_file_path=ibdata1:10G;ibdata2:15360M;ibdata3:10G:autoextend
重啟mysql。 注意: 1、擴(kuò)容前注意磁盤(pán)空間是否足夠。 2、restart后關(guān)注是否生成了新的ibdata。 更多說(shuō)明: 如果,最后一個(gè)文件以關(guān)鍵字 autoextend 來(lái)描述,那么編輯 my.cnf 的過(guò)程中,必須檢查最后一個(gè)文件的尺寸,并使它向下接近于 1024 * 1024 bytes (= 1 MB) 的倍數(shù)(比方說(shuō)現(xiàn)在autoextend 的/ibdata/ibdata1為18.5M,而在舊的my.ini中為10M,則需要修改為innodb_data_file_path = /ibdata/ibdata1:19M; 且必須是19M,如果指定20M,就會(huì)報(bào)錯(cuò)。),并在 innodb_data_file_path 中明確指定它的尺寸。然后你可以添加另一個(gè)數(shù)據(jù)文件。記住只有 innodb_data_file_path 中的最后一個(gè)文件可以被指定為 auto-extending。 一個(gè)例子:假設(shè)起先僅僅只有一個(gè) auto-extending 數(shù)據(jù)文件 ibdata1 ,這個(gè)文件接近于 988 MB。下面是添加了另一個(gè) auto-extending 數(shù)據(jù)文件后的可能示例 。
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
ibdata1 瘦身 通常不能移除 InnoDB 的數(shù)據(jù)文件。為了減小數(shù)據(jù)文件的大小,你必須使用 mysqldump 來(lái)轉(zhuǎn)儲(chǔ)(dump)所有的數(shù)據(jù)表,再重新建立一個(gè)新的數(shù)據(jù)庫(kù),并將數(shù)據(jù)導(dǎo)入新的數(shù)據(jù)庫(kù)中。具體步驟如下: 1、備份數(shù)據(jù)庫(kù) mysqldump -uroot -p123456 --default-character-set=utf8 --opt --extended-insert=true --triggers -R --hex-blob --single-transaction --no-autocommit test > db_name.sql
2、停止數(shù)據(jù)庫(kù) service mysqld stop
3、刪除相關(guān)文件 ibdata1 ib_logfile* mysql-bin.index 4、手動(dòng)刪除除Mysql之外所有數(shù)據(jù)庫(kù)文件夾,然后啟動(dòng)數(shù)據(jù)庫(kù) service mysqld start 5、還原數(shù)據(jù) /usr/local/mysql/bin/mysql -uroot -phigkoo < /data/bkup/mysqldump.sql 主要是使用Mysqldump時(shí)的一些參數(shù),建議在使用前看一個(gè)說(shuō)明再操作。另外備份前可以先查看一下當(dāng)前數(shù)據(jù)庫(kù)里哪些表占用空間大,把一些不必要的給truncate table掉。這樣省些空間和時(shí)間
改變 InnoDB 的日志文件數(shù)目 如果希望改變 InnoDB 的日志文件數(shù)目,必須先關(guān)閉 MySQL 并確定完全關(guān)閉而沒(méi)有發(fā)生任何錯(cuò)誤。將舊的日志文件復(fù)制到其它安全的地方,以防在關(guān)閉服務(wù)時(shí)發(fā)生了錯(cuò)誤而需要恢復(fù)數(shù)據(jù)庫(kù)。刪除所有日志文件,編輯 my.cnf,再重新啟動(dòng) MySQL。InnoDB 在啟動(dòng)時(shí)將會(huì)提示它在建立新的日志文件。 |