国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

mysql的innodb擴(kuò)容、ibdata1 瘦身

2018-10-12 17:30:41 7069

mysql的innodb擴(kuò)容

為了添加一個數(shù)據(jù)文件到表空間中,首先要關(guān)閉 MySQL 數(shù)據(jù)庫,編輯 my.cnf 文件,確認(rèn)innodb ibdata文件的實際情況和my.cnf的配置是否一致,這里有兩種情況:

my.cnf的配置


 

  1. innodb_data_file_path=ibdata1:10G;ibdata2:10G:autoextend  

如果當(dāng)前數(shù)據(jù)庫正在使用ibdata1,或者使用ibdata2,但ibdata2沒有超過10G,則對my.cnf配置直接改成:

 

 

  1. innodb_data_file_path=ibdata1:10G;ibdata2:10G;ibdata3:10G:autoextend  

 

如果設(shè)置了最后一個ibdata自動擴(kuò)展時,有可能最后一個ibdata的占用空間大于my.cnf的配置空間。例如:

 

 

  1. mysql@test:/data1/mysqldata/innodb/data> ls -lh  

  2. -rw-rw---- 1 mysql mysql 10737418240 2010-01-26 16:34 ibdata1  

  3. -rw-rw---- 1 mysql mysql 16106127360 2010-01-26 16:34 ibdata2  

這時,需要精確的計算ibdata2的大小 15360M,修改:

 

 

 

  1. innodb_data_file_path=ibdata1:10G;ibdata2:15360M;ibdata3:10G:autoextend  

 

重啟mysql。

注意:

1、擴(kuò)容前注意磁盤空間是否足夠。
2、restart后關(guān)注是否生成了新的ibdata。

更多說明:

如果,最后一個文件以關(guān)鍵字 autoextend 來描述,那么編輯 my.cnf 的過程中,必須檢查最后一個文件的尺寸,并使它向下接近于 1024 * 1024 bytes (= 1 MB) 的倍數(shù)(比方說現(xiàn)在autoextend 的/ibdata/ibdata1為18.5M,而在舊的my.ini中為10M,則需要修改為innodb_data_file_path = /ibdata/ibdata1:19M; 且必須是19M,如果指定20M,就會報錯。),并在 innodb_data_file_path 中明確指定它的尺寸。然后你可以添加另一個數(shù)據(jù)文件。記住只有 innodb_data_file_path 中的最后一個文件可以被指定為 auto-extending。

一個例子:假設(shè)起先僅僅只有一個 auto-extending 數(shù)據(jù)文件 ibdata1 ,這個文件接近于 988 MB。下面是添加了另一個 auto-extending 數(shù)據(jù)文件后的可能示例 。

 


 

  1. innodb_data_home_dir =  

  2. innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend  

 

ibdata1 瘦身

 

通常不能移除 InnoDB 的數(shù)據(jù)文件。為了減小數(shù)據(jù)文件的大小,你必須使用 mysqldump 來轉(zhuǎn)儲(dump)所有的數(shù)據(jù)表,再重新建立一個新的數(shù)據(jù)庫,并將數(shù)據(jù)導(dǎo)入新的數(shù)據(jù)庫中。具體步驟如下:

1、備份數(shù)據(jù)庫

 

  1. 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ù)庫

 

 

  1. service mysqld stop  


 

3、刪除相關(guān)文件

 

  1. ibdata1  

  2. ib_logfile*  

  3. mysql-bin.index  

4、手動刪除除Mysql之外所有數(shù)據(jù)庫文件夾,然后啟動數(shù)據(jù)庫

 

  1. service mysqld start  

5、還原數(shù)據(jù)

 

  1. /usr/local/mysql/bin/mysql -uroot -phigkoo < /data/bkup/mysqldump.sql  

主要是使用Mysqldump時的一些參數(shù),建議在使用前看一個說明再操作。另外備份前可以先查看一下當(dāng)前數(shù)據(jù)庫里哪些表占用空間大,把一些不必要的給truncate table掉。這樣省些空間和時間

 

改變 InnoDB 的日志文件數(shù)目

 

如果希望改變 InnoDB 的日志文件數(shù)目,必須先關(guān)閉 MySQL 并確定完全關(guān)閉而沒有發(fā)生任何錯誤。將舊的日志文件復(fù)制到其它安全的地方,以防在關(guān)閉服務(wù)時發(fā)生了錯誤而需要恢復(fù)數(shù)據(jù)庫。刪除所有日志文件,編輯 my.cnf,再重新啟動 MySQL。InnoDB 在啟動時將會提示它在建立新的日志文件。


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: