peketaminの日記

その辺のプログラマーのチラ裏です。

Mac に入れていた MySQL が壊れた

状況

WordPress で記事の更新中に macbook pro retina がいつものようにクラッシュ。

MySQLOracle のサイトにある dmg パッケージからインストールしたもの。

使用している DB エンジンは InnoDB

my.cnf[mysqld] セクションで log-error=myerror.log を入れて起動し、ログを確認したところ、 記事を格納するテーブルが壊れていた。

  • innodb_force_recovery=4 にしても、
  • innodb_force_recovery=3 にしても、

問題のテーブルを drop 出来ない。

偶然、数日前にバックアップはとってあったので、後ほど利用。

対応

結局、データディレクトリを作りなおした。

行ったことは下記内容の、ほぼ、そのまま。

  1. mysqldump --all-databases --triggers > /path/to/dumpfile.sql
  2. service mysql shutdown
  3. rm -rf /path/to/datadir && mkdir /path/to/datadir && chown mysql.mysql /path/to/datadir
  4. iptables -I INPUT -p tcp --dport 3306 -j REJECT && service mysql start
  5. mysql_install_db --datadir=/path/to/datadir
  6. mysql < /path/to/dumpfile.sql
  7. Drop and restore any databases that were not intact during 1. from individual backups
  8. service mysql restart && service iptables restart

innodb - mysql - can't drop table does not exist, can't create table exists - Server Fault

上記中、 iptables に関する処理は今回は行ってない。

リスト中 (5) の mysql_install_db スクリプトは、

/usr/local/mysql/bin ではなく、

/usr/local/mysql/scripts に入っていた。

で。

データディレクトリを再構築後、 WordPress のインストールをし直し、バックアップをインポートした。

作業中のデータはいろいろ消えた (悲)。

macbook pro retina の GPU ドライバが原因と思しきクラッシュの問題を解決すべく、 Apple からのファームウェアリリースが待たれるところです。。。

参考: http://peketamin.hatenablog.jp/entries/2013/12/18