[Tep-j-general] Re: データーベースクラッシュ?

Back to archive index

hamada bungu****@leo*****
2005年 1月 13日 (木) 12:56:06 JST


こんにちわ。

On Tue, 11 Jan 2005 06:34:31 GMT
"yasushi,m" <mll****@jbms*****> wrote:

> ただ、「myisamchk」の様なユーティリティが、用意されてると言うことは、
> テーブルの破損など、結構頻繁に発生するのかぁ? と、ちと へこんだりし
> ています。

myisamchkは、元々テーブル修復ユーティリティーですが、普段はテーブル最適
化ツールとして使います。

# myisamchk -r --sort-index --analyze /var/lib/mysql/database/*.MYI

↑こんな感じ。テーブルを修復(=無駄なデータ領域を削除)してインデックス
をソートしてキー配置を解析しなさい、みたいな。

データベースの破損頻度ですが、当方もかつてスペックが貧弱なサーバを使って
た時期、ちょこちょことテーブル壊れてました。

だから、今でも時々mysqldを止めて

# myisamchk -s /var/lib/mysql/*/*.MYI

とやってみる習慣が付いてます。(「黙ってテーブルを調べ、破損があった場合
のみ報告しなさい」というコマンド)

が、その後サーバを強力なものに交換(スケールアップ)し、某ソフトのメモリ
リーク対策として「定期的にサーバを再起動する」ようにしたここ2年くらい、
破損報告は一度もありません。

mysqldはかなり重いアプリケーションなので、ロードアベレージが高くなってく
ると、たまにプロセスがコケて死んじゃうことがあるみたいです。どうもこれが
テーブル破損の原因みたい。

(プロセスが死んじゃうと、テーブルを閉じないから)

osCに於けるmysqldの負荷はキャッシュを適切に設定する(可能ならメモリを増
設し、mysqldにたっぷり割り振ってやる=ディスクを回さない)ことでかなり軽
減出来ますが、限度が有ります。

ということで、テーブル破損=プロセス死亡事故が続発するようなら、今度はサー
バのほうをなんとかしないといけないようで。

---------------------------------

高橋さんのほうから

「MySQLはトランザクション処理が無いので云々」

というお話しがありましたけど、いまのMySQLはInnoDBを使えばトランザクショ
ン処理できますので、

「MyISAMテーブルはトランザクション処理が無いので云々」

ってのが正しい表現だろうと思います。細かいツッコミですが(^_^;)

はまだ






Tep-j-general メーリングリストの案内
Back to archive index