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)