MySQL4.1が動いているPCを電ブチしたらDBへのアクセスが微妙にできない状態になってしまった。
その修復の記録。


OS: Debian GNU/Linux Sarge

MySQL server を何度か再起動してみたり。


# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.

「バックグラウンドでクラッシュしたテーブルをチェックします?」


# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
.

とりあえず、フォアグラウンドでちゃっちゃと直したいところ。

mysqlcheck で MySQL のデータベースをチェック

mysqlcheck というコマンドがあるらしい。

当サイトでは、データベースを全て指定してインデックス情報の更新とテーブルの最適化を毎日3時15分に定時実行させることにする。 その書式は:

* mysqlcheck --host=localhost --user=root --password=**** -a -o --all-databases
* 又は簡略して
* mysqlcheck -h localhost -u root --password=**** -a -o -A

ここの
 user=root は MySQL の管理権限を持った MySQL 登録ユーザーのことです。
 password=**** は MySQL の管理権限を持った MySQL 登録ユーザーのパスワードです。

Macで自前サーバ | メンテナンス | MySQL サーバ

mysqlcheck を実行してみる。


# mysqlcheck -h localhost -u root -p -a -o -A
Enter password:
foobardb.hogetable                                 OK
foobardb.hogehoge1                                 OK
foobardb.hogehoge2                                 OK
foobardb.t_abcdefg                                 OK
foobardb.t_hijklmn                                 OK
foobardb.t_opqrstuv                                OK
foobardb.bokunocache                               OK
mysql.columns_priv                                 Table is already up to date
mysql.db                                           OK
mysql.func                                         Table is already up to date
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         Table is already up to date
mysql.tables_priv                                  Table is already up to date
mysql.time_zone                                    Table is already up to date
mysql.time_zone_leap_second                        Table is already up to date
mysql.time_zone_name                               Table is already up to date
mysql.time_zone_transition                         Table is already up to date
mysql.time_zone_transition_type                    Table is already up to date
mysql.user                                         OK

データベース foobardb のテーブル hogetable, hogehoge1, hogehoge2, t_abcdefg, t_hijklmn, t_opqrstuv, bokunocache が OK.
mysqlcheck を実行したら普通にDBにアクセスできるようになった(^_^)

mysqlcheckクライアントはテーブルのチェック、修復、最適化、そして分析を行います。

mysqlcheckのファンクションはmyisamchkと似ていますが、作動方法が異なります。実質的な作動方法の違いは、mysqlcheckはmysqldサーバが作動中の時に使用されなければいけません。myisamchkはこのサーバが作動していない時に使用品kればいけません。mysqlcheckを使用することの利点は、テーブルのチェックや修復時にサーバを停止させなくてすむことです。

MySQL AB :: MySQL 5.1 リファレンスマニュアル :: 7.11 mysqlcheck - テーブル メンテナンスと修復プログラム

Ref. MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 4.9.6 mysqlcheck を使用したテーブルの保守とクラッシュのリカバリ

tags: zlashdot Database MySQL

Posted by NI-Lab. (@nilab)