テーブルが破損しているか、更新コマンドの後に
mysqld
が必ずエラーになる場合、この問題が再現されるかテストするには以下を実行します。
MySQL
デーモンを強制終了する(mysqladmin
shutdown
を使用)。
テーブルのバックアップを作成する(修復による悪影響が生じた場合に備えるため)。
すべてのテーブルを myisamchk -s
database/*.MYI
でチェックする。問題の起きたテーブルがあれば
myisamchk -r database/table.MYI
で修復する。
テーブルの 2 次バックアップを作成する。
空き容量を増やす必要がある場合、古いログファイルを MySQL データディレクトリから削除または移動する。
mysqld
を --log-bin
で起動する。 See 項4.10.4. 「バイナリログ」。
mysqld
のクラッシュを引き起こすクエリを検索する場合、--log
--log-bin
を使用する。
テーブルがクラッシュした場合、mysqld
server
を終了する。
バックアップをリストアする。
--log-bin
を指定しないで
mysqld
サーバを起動する。
mysqlbinlog update-log-file | mysql
を指定してコマンドを再実行する。
更新ログは、hostname-bin.#
という名称で MySQL
データベースディレクトリに保存される。
テーブルが再度破損したか、上記のコマンドで
mysqld
が終了する場合、再現可能なバグが検出されている。そのようなバグは、容易に修正することが可能。テーブルとバイナリログを
ftp://support.mysql.com/pub/mysql/secret/
FTP
で送信し、当社のバグシステム(http://bugs.mysql.com/)に入力する。
サポートユーザの場合、<support@mysql.com>
で MySQL
チームに問題を通知し、迅速な修正を依頼することもできる。
スクリプト mysql_find_rows
で一部の更新ステートメントのみを実行し、問題を絞り込むこともできます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.