CentOSでMySQL5.7から8.4にアップグレード後、systemctl start mysqld で起動できず、/var/log/mysqld.log に下記のエラーが出力されている場合です。
こちらのCentOS7環境では、一旦MySQL8.0に戻した後、8.4へのアップグレードで起動できるようになりました。
Operating system error number 2 in a file operation.
The error means the system cannot find the path specified.
Cannot open datafile for read-only: 'mysql.ibd' OS error: 71
mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
以下、8.0に戻した後、8.4へアップグレードする手順です。
なお、こちらではMySQL5.7から8.4へは次のようにしてアップグレードしていました。
systemctl stop mysqld
rpm -e mysql57-community-release-*
yum localinstall https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
yum update mysql-community*
まず、一旦 8.0に戻す手順です。次を実施しました。
cp /etc/my.cnf /etc/my.cnf.bak
rpm -e mysql84-community-release-*
yum remove mysql-community*
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum install mysql-server mysql-community-libs-compat
cp /etc/my.cnf.bak /etc/my.cnf
ここで、/etc/my.cnf 内に 8.0で削除/変更されたパラメータがあったら修正しておきます。
変更のあるパラメータは、次のサイトで説明されています。
MySQL 8.0 DMR と 5.7 パラメータ比較 #MySQL – Qiita
続けて、/etc/my.cnf の [mysqld]セクションで次を追加します。
(必要ないかもしれません。MySQL8.4にアップグレードが成功したら、この設定を外してみてください)
mysql_native_password=on
my.cnf の修正が終わったら、systemctl start mysqld でMySQL8.0を起動します。
ここで、起動できることを確認してください。
起動に失敗する場合、/var/log/mysqld.log で下記のように unknown variable で始まるエラーがあったら、先の手順の、8.0で削除/変更されたパラメータの修正が完全ではないので、ログに出力されたパラメータをコメントアウトしてください。
unknown variable 'innodb_large_prefix=ON'.
MySQL8.0で起動できたら、8.4へアップグレードします。
systemctl stop mysqld
yum localinstall https://dev.mysql.com/get/mysql84-community-release-el7-1.noarch.rpm
yum update mysql-community*
systemctl start mysqld で、今度はMySQL8.4 が起動できます。
コメント