MySQLで他のサーバからdataディレクトリコピーしてきたけど動かない(innodb_log_file_size設定)【問題と解決】

目次

背景

新たにMySQL Slaveサーバを構築したい。既存のSlaveサーバを一旦とめて、dataディレクトリごとコピーして配置。普段だったらmaster.infoとかも入っているし、すんなり動くが、今回はなんか動かなかった。

エラー

mysqld start時に以下のエラー

Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/seiga-s01b.pid).

対応

順に問題をつぶしていく。

  • pidファイルが書けないのか? Permissionがないとか? => mysqlユーザになり、touchで該当箇所にファイル作成できる。
  • errログがPermissionが原因ではけないとダメという事例も? => mysqlユーザの持ち物になっててOK
  • errorログをtail -fして起動してみる。error log に以下のエラーが出力されている。
InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 0 268435456 bytes

問題はこれだな。ib_logfileはサイズと個数が設定と一致してないとダメだった。設定では128M, 実体は他のサーバから持ってきたので256Mになっていた。 削除して起動してやると問題なく起動。ib_logfileも新たに作成されている。

おわりに

前にファイル側ではなくて設定変更したときに公式ドキュメントに書いてあった知識が役にたった。 innodb_log_file_size の値を変えるときには、MySQLサーバ停止後にファイルを消して起動するべし、とのこと。