この記事について
| 環境 | さくらVPS + mysql 5.1→5.6 |
|---|---|
| 目的 | アップデート後に起動しなくなった mysql を復旧する |
| 結果 | ib_logfile・ibdata1 を削除して起動。その後の Missing system table は mysql_upgrade で解消 |
つまずきポイント要約
- ib_logfile・ibdata1 の削除は InnoDB のデータに関わるので、実施前にバックアップを取ること
- 起動後に出る「Missing system table」は mysql_upgrade -u root -p を実行する
mysql をインストールしていない状態から mysql5.6 をインストールする場合はこちらを参考にする
事象
mysql を 5.1 から 5.6 に update した際、 mysql が起動できなくなった。
起動に失敗
/etc/init.d/mysqld start
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
cat /var/log/mysqld.log
エラーログの内容
[ERROR] InnoDB: auto-extending data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages!
原因と対処:ibdata1 関連ファイルを削除
これは設定変更後 ibdata1 のファイルサイズが違うため起きるエラーのよう。なので ibdata1 関連のファイルを削除する
my.cnf でデータの保存先を確認
cat /etc/my.cnf
my.cnf で確認したデータのある場所
datadir=/var/lib/mysql
データのある mysql ディレクトリに移動し、問題のファイルがあることを確認
cd /var/lib/mysql
ls
ib_logfile0 ib_logfile1 ibdata1 mysql
すべて削除
rm -rf ib_logfile0
rm -rf ib_logfile1
rm -rf ibdata1
再起動できた
/etc/init.d/mysql start
Starting mysqld: [ OK ]
ファイル削除の参考my.cnfでinnodb関連の設定後、MySQLが起動しなくなった
新たなエラーは mysql_upgrade で解消
しかし新たなるエラーが発生
エラーログの内容
[ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
このあとにもたくさんのエラーが続く
please run mysql_upgrade to create it という内容なので update を実行
mysql_upgrade -u root -p
エラーが出なくなった
