ERROR /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full(パーティション)
MySQLでエラー発生です
ストレージエンジンはMyISAM
月毎にパーティショニングしているテーブルで発生です
エラーメッセージ
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 9:52:49 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
120815 10:16:36 [ERROR] /usr/local/mysql/bin/mysqld: The table 'xxxx_table' is full
データは3,000万件でデータ量1.5GB、インデックス1.5GBほど
上限?そんなばかな
ググってみるとMyISAMでは4GB上限があるとか
でもそれは昔の話でしょ?そんなばかな
壊れてるのか?と思いmyisamchkをしかけてみる
[xxxxx@xxxxxxxx ~]$ sudo /usr/local/mysql/bin/myisamchk /var/lib/mysql/xxxxxx_db/xxxx_table#P#p201208.MYI
Checking MyISAM file: /var/lib/mysql/xxxxxx_db/xxxx_table#P#p201208.MYI
Data records: 16777215 Deleted blocks: 0
myisamchk: warning: 1 client is using or hasn't closed the table properly
- check file-size
myisamchk: warning: Datafile is almost full, 754974675 of 754974718 used
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
720MBをほぼ使い切っていてあと43Bしか残ってないと
1レコード45Bなので入らないわけだ
いやいや。。。
違うパーティションを見てみると720MB以上のファイルがある
むぅ。。
パーティションごとの情報を見れないかと色々あさってみる
select partition_name, data_length, max_data_length from information_schema.partitions where table_name = 'xxxx_table';
ビンゴ!
8月のパーティションのMAX_DATA_LENGTHが720MBになってる
なぜかこれだけやたら低い
気づかなかったけど5月のパーティションもだ。。
とりあえずテーブルを作りなおして対応しました
結局のところMAX_DATA_LENGTHが変わってしまった(最初からこうだった?)原因はわからないまま
うーん、気持ち悪い