Mysql

修改 mysql 5 的 innodb_data_file_path 值是否安全?

  • May 4, 2012

我最近在從以下更改此參數的值後遇到了數據損壞my.cnf

innodb_data_file_path = ibdata1:10M:autoextend:max:128M

到 :

innodb_data_file_path = ibdata1:10M:autoextend:max:256M

我不完全確定這是損壞的原因,因為以前數據庫空間不足。我的問題是,一旦空間已滿,修改數據庫的最大大小是否安全?

如果你想確定,你應該做到以下幾點:

首先,將/etc/my.cnf中的innodb_data_file_path改成

[mysqld]
innodb_data_file_path = ibdata1:10M:autoextend

的,執行以下

cd
service mysql restart --skip-networking --skip-grant-tables
mysqldump --single-transaction --routines --triggers --all-databases > MySQLData.sql
service mysql stop

確保 /root/MySQLData.sql 存在。然後,繼續

rm /var/lib/mysql/ibdata1
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1
service mysql start --skip-networking --skip-grant-tables
mysql < MySQLData.sql
service mysql restart

試試看 !!!

實際上,我的工作中有一個使用 MySQL 作為其儲存庫的監控,我將最大數量從 1TB 更改為 16TB。在數據收集過程中,什麼都不能寫入,但沒有引入損壞。你可以換個號碼。

正如我提到的,我將完全刪除最大值

innodb_data_file_path = ibdata1:10M:autoextend

有兩個原因:

  1. 變化很小
  2. ibdata1 將始終被寫入,因為其中的撤消表空間必須寫入。這將導致 ibdata1 偶爾增長。你可能會再次遇到這種情況。因此,最好刪除 max 選項。

引用自:https://serverfault.com/questions/385559