CentOS7上で稼働するMySQLサーバーのバージョンを5.6から5.7にアップデートする手順です。
スキーマとデータのバックアップ
mysqldump \
-uroot \
-p \
-A \
> ~/dump-20210922.sql
MySQLの設定ファイルをバックアップ
cp -p /etc/my.cnf ~/my.cnf.20210922
cp -pr /etc/my.cnf.d/ ~/my.cnf.d.20210922
現在のバージョンを確認
mysqld --version
mysqld Ver 5.6.29 for Linux on x86_64 (MySQL Community Server (GPL))
mysqldを停止する
systemctl stop mysqld
現在インストールされているMySQL関連のパッケージを確認
yum list installed | grep mysql
mysql-community-client.x86_64 5.6.29-2.el7 @mysql56-community
mysql-community-common.x86_64 5.6.29-2.el7 @mysql56-community
mysql-community-devel.x86_64 5.6.29-2.el7 @mysql56-community
mysql-community-libs.x86_64 5.6.29-2.el7 @mysql56-community
mysql-community-release.noarch el7-5 @/mysql-community-release-el7-5.noarch
mysql-community-server.x86_64 5.6.29-2.el7 @mysql56-community
mysql-connector-python.x86_64 2.1.3-1.el7 @mysql-connectors-community
mysql-utilities.noarch 1.5.6-1.el7 @mysql-tools-community
必要なパッケージをインストール
yum -y install yum-utils
インストールされているMySQL関連のパッケージを削除
yum -y remove mysql*
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-community-client.x86_64 0:5.6.29-2.el7 を 削除
---> パッケージ mysql-community-common.x86_64 0:5.6.29-2.el7 を 削除
---> パッケージ mysql-community-devel.x86_64 0:5.6.29-2.el7 を 削除
---> パッケージ mysql-community-libs.x86_64 0:5.6.29-2.el7 を 削除
--> 依存性の処理をしています: libmysqlclient.so.18()(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
--> 依存性の処理をしています: libmysqlclient.so.18(libmysqlclient_18)(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
---> パッケージ mysql-community-release.noarch 0:el7-5 を 削除
---> パッケージ mysql-community-server.x86_64 0:5.6.29-2.el7 を 削除
---> パッケージ mysql-connector-python.x86_64 0:2.1.3-1.el7 を 削除
---> パッケージ mysql-utilities.noarch 0:1.5.6-1.el7 を 削除
--> トランザクションの確認を実行しています。
---> パッケージ postfix.x86_64 2:2.10.1-6.el7 を 削除
--> 依存性解決を終了しました。
依存性を解決しました
==================================================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
==================================================================================================================
削除中:
mysql-community-client x86_64 5.6.29-2.el7 @mysql56-community 88 M
mysql-community-common x86_64 5.6.29-2.el7 @mysql56-community 2.1 M
mysql-community-devel x86_64 5.6.29-2.el7 @mysql56-community 21 M
mysql-community-libs x86_64 5.6.29-2.el7 @mysql56-community 9.2 M
mysql-community-release noarch el7-5 @/mysql-community-release-el7-5.noarch 4.3 k
mysql-community-server x86_64 5.6.29-2.el7 @mysql56-community 245 M
mysql-connector-python x86_64 2.1.3-1.el7 @mysql-connectors-community 1.1 M
mysql-utilities noarch 1.5.6-1.el7 @mysql-tools-community 5.0 M
依存性関連での削除をします:
postfix x86_64 2:2.10.1-6.el7 @anaconda 12 M
トランザクションの要約
==================================================================================================================
削除 8 パッケージ (+1 個の依存関係のパッケージ)
インストール容量: 383 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中 : mysql-utilities-1.5.6-1.el7.noarch 1/9
削除中 : mysql-community-devel-5.6.29-2.el7.x86_64 2/9
削除中 : mysql-connector-python-2.1.3-1.el7.x86_64 3/9
削除中 : mysql-community-release-el7-5.noarch 4/9
削除中 : mysql-community-server-5.6.29-2.el7.x86_64 5/9
削除中 : mysql-community-client-5.6.29-2.el7.x86_64 6/9
削除中 : 2:postfix-2.10.1-6.el7.x86_64 7/9
削除中 : mysql-community-libs-5.6.29-2.el7.x86_64 8/9
削除中 : mysql-community-common-5.6.29-2.el7.x86_64 9/9
検証中 : mysql-community-common-5.6.29-2.el7.x86_64 1/9
検証中 : mysql-community-libs-5.6.29-2.el7.x86_64 2/9
検証中 : mysql-connector-python-2.1.3-1.el7.x86_64 3/9
検証中 : mysql-community-client-5.6.29-2.el7.x86_64 4/9
検証中 : mysql-community-release-el7-5.noarch 5/9
検証中 : mysql-community-server-5.6.29-2.el7.x86_64 6/9
検証中 : 2:postfix-2.10.1-6.el7.x86_64 7/9
検証中 : mysql-community-devel-5.6.29-2.el7.x86_64 8/9
検証中 : mysql-utilities-1.5.6-1.el7.noarch 9/9
削除しました:
mysql-community-client.x86_64 0:5.6.29-2.el7 mysql-community-common.x86_64 0:5.6.29-2.el7
mysql-community-devel.x86_64 0:5.6.29-2.el7 mysql-community-libs.x86_64 0:5.6.29-2.el7
mysql-community-release.noarch 0:el7-5 mysql-community-server.x86_64 0:5.6.29-2.el7
mysql-connector-python.x86_64 0:2.1.3-1.el7 mysql-utilities.noarch 0:1.5.6-1.el7
依存性の削除をしました:
postfix.x86_64 2:2.10.1-6.el7
完了しました!
RPMパッケージをインストール
yum -y install http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
インストールするMySQLのバージョンを5.7に設定
以下のコマンドで不要なものの削除・必要なものの追加を行う
yum-config-manager --disable mysql56-community
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
以下のコマンドで設定を確認する
yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - So 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - So 無効
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community 無効
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - So 無効
mysql-connectors-community/x86_64 MySQL Connectors Community 有効: 212
mysql-connectors-community-source MySQL Connectors Community - Sou 無効
mysql-tools-community/x86_64 MySQL Tools Community 有効: 132
mysql-tools-community-source MySQL Tools Community - Source 無効
mysql-tools-preview/x86_64 MySQL Tools Preview 無効
mysql-tools-preview-source MySQL Tools Preview - Source 無効
mysql55-community/x86_64 MySQL 5.5 Community Server 無効
mysql55-community-source MySQL 5.5 Community Server - Sou 無効
mysql56-community/x86_64 MySQL 5.6 Community Server 無効
mysql56-community-source MySQL 5.6 Community Server - Sou 無効
mysql57-community/x86_64 MySQL 5.7 Community Server 有効: 524
mysql57-community-source MySQL 5.7 Community Server - Sou 無効
mysql80-community/x86_64 MySQL 8.0 Community Server 無効
mysql80-community-source MySQL 8.0 Community Server - Sou 無効
MySQLをインストール
yum -y install \
mysql \
mysql-devel \
mysql-server \
mysql-utilities
バージョンを確認
mysqld --version
mysqld Ver 5.7.35 for Linux on x86_64 (MySQL Community Server (GPL))
MySQLサーバーを起動
systemctl start mysqld
データベースの中身をアップデート
mysql_upgrade \
-u root \
-p
MySQL 5.6のサポートが2021/2/5に終了されるため、運用しているサービスのデータベースとして使っているMySQLのバージョンを上げる必要が出てきました。本番環境・ステージング環境のMySQLはAmazon RDSで稼働させているので、RDSの自動アップデート機能を使ってバージョンを上げることができましたが、ローカル開発環境はMac上にVirtualBox + Vagrant + CentOS7で構築していたため、手作業でのアップデートが必要となりました。
ローカル開発環境なので、正直既存のデータやスキーマが消えても特に問題はありません。Dockerを使っていればDockerfileを書き換えるだけでバージョンを変えることができるので、本手順は今後はあまり必要にならない作業かもしれません。そろそろM1のMacBookの購入を検討しているので、今回対象としたシステムのローカル開発環境も近々Dockerにしようと思います。その前にきちっとこの作業をやってみることができてよかったです。
yum-config-manager
でインストールするMySQLのバージョンを制御するあたりを参照しました。yum-config-manager
で mysql80-community
を無効化する手順がなく、手順通りに実施するとMySQL 8.0がインストールされてしまい若干ハマりました。