2008年4月24日

[mysql 14468] Re: myisamchk

ALEXです。

ありがとうございます。

その後いろいろやってみたところ、とりあえずデータは復旧したみたいです。

1.テーブル名.MYD を別名でコピーして退避
2.MySQLクライアントからtruncateにて全件データを削除

3.1で退避したデータをオリジナルに上書きコピー
4.テーブルをロックしたあとで、 repair table テーブル名 を実行

myisamchk ではなく、テーブルをロックしてrepairかoptimizeにて最適化したほ
うが現実的ではないでしょうか。
運用をしているmysqldをとめることはなかなか難しいでしょうし。
または、一度mysqldumpでバックアップしてオリジナルを消去、その後再作成し
たほうが影響度は少ないかもしれないですね。

Mikiya Okuno wrote:
> こんにちは。
>
> 残念ですが、コマンドが間違っているようです。
>
> myisamchk は MyISAM テーブルのリペアを行うコマンドであり、
> 最適化をするには mysqlcheck コマンドを -o オプションで使用するか
> OPTIMIZE TABLE ステートメントを使用する必要があります。
>
> また、myisamchk は mysqld オフライン時に使用しなければならないコマンドであり、
> もしオンライン時に使用されたのならデータの整合性が取れなくなってしまいます。
> 残念ですがデータはもう戻らない公算が高いので、バックアップから戻しましょう。
>
> MyISAM は別途レコード件数をメモリ上に保持しているので、
> count(*) が結果を返したのだと思います。
> --
> Mikiya Okuno, Support Engineer
> MySQL KK, http://www-jp.mysql.com/
> Office: Ebisu IS Building, 6th floor,
> 13-6 Ebisu 1-chome,
> Shibuya-ku, Tokyo 150-0013
> Tel: 81-(0)3-5918-7523
> Fax: 81-(0)3-5918-7510
>
> Are you MySQL certified? http://www.mysql.com/certification
>
> On 2008/04/24, at 14:49, Alex wrote:
>> ALEXです。
>>
>>> myisamchk -r テーブル名
>> として725万件のテーブルを最適化しようとしました。
>> 処理自身はエラーなく完了したのですが、中身を参照することができなくなりま
>> した。
>> mysqlクライアントにて、select文を発行してもemptyとなってしまいます。
>> データが存在しないのかと思って、件数を確認(select count(*) from テーブル
>> 名)しましたが存在しているようです。
>>
>> 原因と修復方法をご存知の方はご教授頂きたく、よろしくお願い致します。
>>
>
>
>

投稿者 xml-rpc : 2008年4月24日 17:49
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/72504
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。