CentOS6.7でMYSQL5.7⇒8.0にアップグレードする話
はい皆さんこんにちは
この記事はCentOS6.7を頑なに使い続ける私やアナタのために書き残します。
詳細
参考にしたサイト
https://blog.offline-net.com/2018/04/22/upgrade_from_mysql_57_to_80/
https://qiita.com/imunew/items/3810a41960f40db85c94
https://ksm.bf1.jp/?p=216
環境:
CentOS6.7
MYSQL5.7
MYSQL8.0
注意事項:
CentOS6は2020-11-30 でサポート終了しています。
それでも使いたい人向けになります。
##まずyumが使えない
サポートが終了しているのでYUMのURLが接続できません。
そこで代替えのURLに変更する必要があります。
※詳細は参考にしたサイトをご覧ください。
# sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
# sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo
これによってyumが使えるようになりました。
##MYSQL5.7をアンインストール
# cat /etc/redhat-release
CentOS release 6.7 (Final)
# mysql --version
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
# cat /etc/my.cnf
# rpm -qa |grep community-release
mysql57-community-release-el6-7.noarch
# rpm -e mysql57-community-release
##MYSQL8.0をインストール
# wget https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm
# rpm -ivh mysql80-community-release-el6-3.noarch.rpm
# yum --showduplicates search mysql-community-server
mysql-community-server-8.0.22-1.el6.x86_64
↑が最新版になっていると仮定します。
# /etc/init.d/mysqld stop
# grep datadir /etc/my.cnf
datadir=/var/lib/mysql
と仮定する。
# cp -aR /var/lib/mysql/ /var/lib/mysql_bk/
※容量に空きがあればバックアップを取る。
# yum update mysql-server
# vi /etc/my.cnf
1.query_cache_* のパラメーターをコメントアウト
2.[mysqld]に次のオプションを入れる default_authentication_plugin=mysql_native_password
# cat /etc/my.cnf
# cat /etc/init.d/mysqld|grep /mysqld | grep action
mysqldの場所を確認「/usr/sbin/mysqld」だったとします。
# /usr/sbin/mysqld --basedir=/usr --user=mysql --upgrade=FORCE
⇒処理中のままターミナルが帰ってきません。
別ターミナルを上げる
# tail -f /var/log/mysqld.log
このログが出たらOK
2020-12-16T03:02:18.203596Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.22' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL.
---
2020-12-16T03:05:35.865223Z 0 [ERROR] [MY-010901] [Server] Can't open shared library '/var/lib/mysql/lib64/mysql/plugin/validate_password.so' (errno: 0 /var/lib/mysql/lib64/mysql/plugin/validate_password.so: cannot open shared object file: No such file or directory).
⇒こういうエラーが出る場合は以下でファイルを探す
# find / -name "validate_password.so"
/usr/lib64/mysql/plugin/validate_password.so
/usr/lib64/mysql/plugin/debug/validate_password.so
※この場合lib64より手前の--basedir=/usrが正しいオプション。
次の手順にあるkillコマンドで停止し、再実行する。
---
##アップグレード完了確認
# ps -ef |grep FORCE
# kill -9 {↑のPID}
upgradeしているターミナルが強制終了と表示される
# service mysqld restart
# mysql -u root -p
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.22 |
+-----------+
mysql> quit
---
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
このエラーが出る場合は
/etc/my.cnfに以下を入れてMYSQLDを再起動する
[client]
socket=/var/lib/mysql/mysql.sock
---
# mysql --version
mysql Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)
##感想
CentOS6系でまだまだ頑張る人の参考になれば幸いです。
ありがとうございました。