CentOSでMySQL5.7から8.4へのアップグレード後にMySQLが起動できない場合

スポンサーリンク
スポンサーリンク

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 が起動できます。

コメント

タイトルとURLをコピーしました