mysql5.0から5.5へアップグレードでてんやわんや


サーバのパッケージをアップグレードでMysql破損

以下のコマンドを実行した。。。

$ sudo yum update

remiのリポジトリを追加していたのを忘れていてアップグレードパッケージが30くらいあったんで確認もせず実行したらMysqlが死んだ・・・dumpとかとっておくべきだった~

というのもこのブログのサーバである。そのため一時期このサーバが全く使えなくなってしまった。やってしまった。。

とりあえずMysqlを元のバージョンへダウングレードして動作させようと思う

mysql再起動してもエラーとなって止まってしまうので戻そうということで、「/var/lib/mysql」のデータベースファイル群をまるっとコピーしてバックアップ。

その後5.0へダウングレード。

$ sudo yum downgrade mysql-server5.0.××

これで動くかと思った、、、mysql-server自体は起動できました。しかしSELECTなどSQLを実行した結果エラーとなった。。引き続き原因を探ろうということでステータスを確認

sql>show table status
「incorrect information in file mysql」というテーブルが多数ありデータが壊れている模様

こうなってしまったら、5.0で動かすのは難しそうだと思いました。

5.5へ再度アップグレード、起動時のエラーに対処し、データのアップグレード

やっぱり5.5に再度アップグレードしてmysqlを起動しログを見ながら確認、そしてmy.cnfを編集。。これを繰り返してエラーを減らしていく

# /etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]

ログを見ながらmy.cnf変更していく(5.0から5.5にアップグレードしたことで使用できない設定があるようだ・・・)

120118 10:13:30  InnoDB: Waiting for the background threads to start
120118 10:13:31 InnoDB: 1.1.8 started; log sequence number 53172884
120118 10:13:31 [ERROR] /usr/libexec/mysqld: unknown option '--skip-locking' ←ここ
120118 10:13:31 [ERROR] Aborting
120118 10:16:28  InnoDB: Waiting for the background threads to start
120118 10:16:29 InnoDB: 1.1.8 started; log sequence number 53172884
120118 10:16:29 [ERROR] /usr/libexec/mysqld: unknown variable 'default-table-type=InnoDB' ←ここ
120118 10:16:29 [ERROR] Aborting

上記のオレンジ色の部分をmy.cnfから削除していく。。

この時点ですべてのエラーがなくなったらMySqlを起動し、データのアップグレードを実施
# /etc/init.d/mysqld start
# mysql_upgrade

という上記の作業を行うことで一応うごいたっぽいから、wordpressのDBをdumpして、バックアップを取っておく。もう一度再起動してエラーログ等を確認する。エラーログも吐かれていない。。これで問題なさそう!!

おそらく原因はアップグレードでデータが壊れた訳ではない。Mysql5.0から5.5にアップグレードしたときに5.5では使用できない設定がいくつかあったためだった。。その使用できないディレクティブを調整して変更や削除することでエラーがなくなった。

 

教訓

エラーの文字にビビってすぐにダウングレードしたのがだめだった。ダウングレードして動かんとか色々時間がかかった。少し落ち着いてまずはエラー内容を把握しておけばすぐにmy.cnfの設定を変えることで対応できたとわかったはずなのに。。。

エラーメッセージはデバッグを行う前に必ず一通り目を通す!!!

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です