CentOS7上で動くMySQL 5.6を5.7にアップデートする手順

概要

CentOS7上で稼働するMySQLサーバーのバージョンを5.6から5.7にアップデートする手順です。

環境

  • ホストマシン
    • macOS Big Sur 11.5.2
    • VirtualBox 6.1.26 r145957 (Qt5.6.3)
    • Vagrant 2.2.18
  • ゲストマシン
    • CentOS Linux release 7.1.1503 (Core)

手順

  • スキーマとデータのバックアップ

    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にしようと思います。その前にきちっとこの作業をやってみることができてよかったです。

参考にさせていただいたサイト