web-dev-qa-db-ja.com

データベース変更中のInnoDB「テーブルxxがいっぱいです」

CentOS 6.364ビットでPerconaMysql Server5.6.14-56を実行しています。

サーバーには十分なRAM(96GB)とストレージがありません。ファイルシステムタイプ:ext4

dev/sda6     ext4   1093623528  56576512 981494148   6% /mysqlstorage

42Mレコード(サイズが約12.5GB(その約50%がインデックス))のテーブルにいくつかの変更を加えようとしましたが、今日、テーブルがフルエラーであることが示されました。

ロードされた変数をチェックし、innodb_data_file_path = ibdata1:12M:autoextendそれは私のmysqlマネージャーに表示されます。

このDBは稼働しており、ダウンタイムなしで(または最小限で)この問題を修正することを好みます。

file-per-tableはアクティブですibdata1は約3.9GBです

MYSQLログから:

2015-02-19 01:43:04 7fe921f4b700 InnoDB: Error: Write to file (merge) failed at offset 356515840.
InnoDB: 1048576 bytes should have been written, only 1036288 were written.
InnoDB: Operating system error number 28.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a disk quota exceeded.
InnoDB: Error number 28 means 'No space left on device'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/operating-system-error-codes.html

どうすればこれを行うことができますか?

//編集

この質問をしてから、この「交代」の間に、私の/ tmpがすぐに100%までいっぱいになることを学びました。 100%に達すると、mysqlはそのエラーメッセージをプッシュします。

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             50395844   1745156  46090688   4% /
tmpfs                 37105808         0  37105808   0% /dev/shm
/dev/sda1               495844     37092    433152   8% /boot
/dev/sda5              4080064     73740   3799068   2% /tmp
/dev/sda6            1093623528  56576524 981494136   6% /storage

ダウンタイムなしで/ tmpのサイズを安全に増やすにはどうすればよいですか?

1
Mr.Boon

テーブルの変更には、明示的および暗黙的に作成された一時テーブルの中間ストレージとして/ tmpパーティションが含まれます。十分な大きさのパーティションでtmpdirを使用する必要があります。次の行をmy.cnfに追加します

tmpdir = /path/to/the/mysqltmp
2
Kondybas