まとまりのないブログ

something which something is something

mysql

mysqlのテーブルのクラッシュ

投稿日:


/usr/local/mysql/bin/myisamchk --recover --force --sort_buffer_size=2048M /usr/local/mysql/data/auc/200902.MYI

これでmysqlのテーブルがクラッシュしたのは2回目。前回は先月の中ごろだったので修復してから1ヶ月しかもたなかった。前回の修復作業はかなりの疲労を伴った。テーブルのレコード数が膨大であるためにいつ終わるのか見当もつかないから。テーブルのレコード数が4000万でそのうち4つのフィールドにインデックスが作成されている。結局、修復にかかる時間は前回の作業で20時間ほどかかった。今回はレコード数がそれより1000万増えているため、修復にかかる時間はさらに要することが予想される。

テーブルがクラッシュする原因ははっきりとはわからないが、クラッシュするなりの挿入、更新、削除のsqlを毎日数十万~数百万回実行しているという自覚はある。テーブルがクラッシュしても修復をすることができるのでそれは問題はない。問題は修復するのに時間がかかりすぎるということ。mysqlのテーブルはクラッシュするものという前提でソフトウェアを設計する必要がある。修復の時間を短縮するために1テーブル辺りのレコード数の上限を500万程度に抑えるようにして、インデックスの数も2個以内にする。それぐらいの条件であればテーブルがクラッシュしても、その修復にかかる時間は1時間程度で終わるのではないだろうか。(予想)
上限が500万レコード程度のテーブルがたくさん作成されてその全てがクラッシュしたら同じことになるんだろうか・・・。ただ、テーブルのクラッシュした結果をみたところ、一つのテーブルがクラッシュしたらその時点でmysqldはフリーズしたような状態になり、全てのデータベースのテーブルに対してsqlを受け付けないようになっていた。それでmysqlを再起動したらクラッシュしたテーブルをリペアしろエラーが表示されて、クラッシュしたテーブルはリペアしないことには使うことができず、その他のテーブルは通常通り使うことができるようになった。

しかし、関係ないはずの他のデータベース、wordpressに使っているデータベースもクラッシュしたというログがあった。なぜか。

090323  8:10:55 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_options' is mar                                                                    ked as crashed and should be repaired
090323  8:10:55 [Warning] Checking table:   './wordpress/wp_options'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_users' is marke                                                                    d as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_users'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_usermeta' is ma                                                                    rked as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_usermeta'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_posts' is marke                                                                    d as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_posts'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_terms' is marke                                                                    d as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_terms'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_term_taxonomy'                                                                     is marked as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_term_taxonomy'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_term_relationsh                                                                    ips' is marked as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_term_relationships'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_postmeta' is ma                                                                    rked as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_postmeta'
090323  8:10:56 [ERROR] /usr/local/mysql/bin/mysqld: Table './wordpress/wp_links' is marke                                                                    d as crashed and should be repaired
090323  8:10:56 [Warning] Checking table:   './wordpress/wp_links'

-mysql
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

no image

mariadbのポートを変更する

mariadbのコンフィグファイルであるmy.cnfにポートの設定を追加する。mysqldセクションとportを下記のように追加して再起動する。そしてmysqlにログインして show variabl …

no image

myisamchkの修復時に作成されるTMDファイル

テーブルの修復をしようとしたらtempfileが作成できないという下記のエラーが発生した。

no image

mysqlのデータベースのテーブルから不要なフィールド(列)を削除

テーブルを再設計するために不要なフィールドを削除してみる。たしか前にフィールドを削除したときは、フィールドにインデックスが作成されている場合はフィールド削除の前にインデックスを削除しておかないとエラー …

no image

mysqlのレプリケーションでのエラー:ERROR 1064

レプリケーションしているサーバで時々エラーが発生してスレーブ動作が止まる。よくあることと思いsql_skip_slave_counterに1を代入してエラーが発生する度に飛ばしていたのだけれど、詳しく …

no image

ssdでデータベースサーバを構築してみた

現状ではまだ手を出すのは早いかもしれないssdでデータベースサーバを構築してみた。実験的な意味で。