web-dev-qa-db-ja.com

mysql 5のinnodb_data_file_path値を変更しても安全ですか?

最近、my.cnfのこのパラメーターの値を:から変更した後、データが破損しました。

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

に:

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

以前はDBの容量が不足していたため、これが破損の原因であるかどうかは完全にはわかりません。私の質問は、スペースがいっぱいになったらDBの最大サイズを変更しても安全ですか?

4
drcelus

確認したい場合は、次のことを行う必要があります。

まず、/ 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

2つの理由:

  1. 変化は非常に小さい
  2. ibdata1は、その中にUNDO表領域があり、書き込む必要があるため、常に書き込まれます。これにより、ibdata1がときどき増加します。あなたはこれに再び遭遇するかもしれません。したがって、maxオプションを削除することをお勧めします。
1
RolandoMySQLDBA