CentOS6でMySQL5.1からMySQL5.7へアップデートする手順、注意点

オンラインマニュアルの手順をベースにMySQLのアップデート手順を確認し、実際にyumを使ってアップデートを行いました。アップデートの手順、注意点をまとめました。

※目次をクリックすると目次の下部にコンテンツが表示されます。

アップグレード時の注意点
●アップグレード方法の注意点
 
〇アップグレードの順番
・原則として、あるリリースシリーズから別のものにアップグレードするには、シリーズをスキップせずに次のシリーズにアップグレードする。
 例えば、5.1→5.6ではなく、5.1→5.5→5.6の順にアップグレードする。
 
〇アップグレードするRPMパッケージ
・複数のRPMパッケージをインストールして生成したインストールをアップグレードする場合は、一部だけでなくすべてのパッケージをアップグレードする。
 
〇Perl、PHP、Python
・新しいリリースのMySQLをインストールした際は必ずPerl DBD::mysqlモジュールを再構築して再インストールするのが良い。同じことが、PHP mysql拡張やPython MySQLdbモジュールなどの、ほかのMySQLインタフェースにも言える。
 
〇アップグレード前に行うこと
・テーブルを含むmysqlデータベースのバックアップを作成する。
 
※参考資料
MySQL 5.6 リファレンスマニュアル :: 2.11.1 MySQL のアップグレード
 
●アップグレート時に経験したトラブル
 
〇データベースダンプ時にCan’t open file: ‘XXXX.frm’ (errno: 24) when using LOCK TABLESのエラー
 
・mysql-benchを使ってベンチマークのテストを行ったことがあり、ベンチマーク用のテーブルが3000テーブル近くあったため、mysqldumpによるダンプ時にエラーが発生したようです。
 
〇el7パッケージに関する依存性のエラー
 
CentOS6なのでel6用のパッケージをインストールしようとしているのに、el7のパッケージに関する依存性のエラーが発生しました。

Error: Package: mysql-community-client-5.7.17-1.el7.i686 (mysql57-community)
           Requires: libstdc++.so.6(GLIBCXX_3.4.15)
Error: Package: mysql-community-server-5.7.17-1.el7.i686 (mysql57-community)
           Requires: systemd
Error: Package: mysql-community-server-5.7.17-1.el7.i686 (mysql57-community)
           Requires: libstdc++.so.6(GLIBCXX_3.4.15)
Error: Package: mysql-community-server-5.7.17-1.el7.i686 (mysql57-community)
           Requires: libc.so.6(GLIBC_2.17)

なぜこのようなことが起こるのかの理由は分かりませんが、以下のようにyumのキャッシュをクリアしたら正常に実行できました。
yum clean all

MySQL Yumリポジトリのインストール
MySQL Yumリポジトリを使用して、MySQLのインプレースアップグレード(古いバージョンを置換して、古いデータファイルに対して新しいバージョンを実行)を実行できる。
 
〇MySQL Yumリポジトリ
MySQL :: Download MySQL Yum Repository
 
●インストール方法
 
例1)
①上記サイトからMySQL Yumリポジトリをダウンロード
 
②ダウンロードしたリリースパッケージをインストール
(E6ベースのシステムの場合)
yum localinstall mysql-community-release-el6-{version-number}.noarch.rpm
 
例2)
yumコマンドでダウンロードしてインストール
(E6ベースのシステムの場合の例)
yum install http://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm

MySQL5.1→5.5アップデート時の注意点
以下の資料参照
MySQL 5.5 Reference Manual :: 2.11.1.1 Changes Affecting Upgrades to MySQL 5.5
 
私は上記資料を軽く目を通しましたが、量が多くすべてを理解することができなかったため、検証環境で実際にアップデートをし、WordPressなどが正常に動作するかテストして判断しました。
 
私の環境では特に問題は発生しませんでした。

MySQL5.5→5.6アップデート時の注意点
以下の資料参照
MySQL 5.6 リファレンスマニュアル :: 2.11.1.3 MySQL 5.5 から 5.6 へのアップグレード
 
私は上記資料を軽く目を通しましたが、量が多くすべてを理解することができなかったため、検証環境で実際にアップデートをし、WordPressなどが正常に動作するかテストして判断しました。
 
●ディスク消費量の増加、innodb_file_per_table
 
MySQL5.6からinnodb_file_per_tableの設定値がデフォルトでOnになりました。
 
※innodb_file_per_tableの設定については以下の記事参照。
MySQLのファイルシステムとストレージエンジンの概要の”InnoDBのテーブルスペース、テーブルファイル”
 
このデフォルト設定の影響によって、5.6アップデート後のダンプファイルインポート時にinnodbの各テーブルで新たに”.ibd”ファイルが作成されたためディスク消費量が増加した。
※詳細は以下の記事参照。
MySQL5.1から5.7へのアップデートに伴うディスク消費量の増加、innodb_file_per_tableの影響

MySQL5.6→5.7アップデート時の注意点
以下の資料参照
MySQL 5.7 Reference Manual :: 2.11.1.1 Changes Affecting Upgrades to MySQL 5.7
 
私は上記資料を軽く目を通しましたが、量が多くすべてを理解することができなかったため、検証環境で実際にアップデートをし、WordPressなどが正常に動作するかテストして判断しました。
 
●mysql_secure_installation
 
このプログラムを使用するとルートパスワードの設定、匿名ユーザーの削除など、重要な操作を実行できます。
 
MySQL5.7からvalidate_passwordプラグインの機能が導入され、mysql_secure_installation実行時にvalidate_passwordプラグインをセットアップするか聞かれるようになりました。
 
ここでyesを選択してデフォルト設定でセットアップするとパスワードポリシーが厳しくなるので、注意が必要です。
 
※validate_passwordプラグインについては以下を参照。
validate_passwordプラグイン
 
●ib_buffer_poolファイル
 
・MySQL5.7へのアップデート後、MySQLのデータディレクトリ内にib_buffer_poolという名前のファイルが作成されるようになります。
・詳細は以下の記事参照。
MySQL5.7へのアップデートとib_buffer_poolファイル
 
●ibtmp1ファイル
 
・MySQL5.7へのアップデート後、MySQLのデータディレクトリ内にibtmp1という名前のファイルが作成されるようになります。
・詳細は以下の記事参照。
MySQL5.7へのアップデートとibtmp1ファイル

アップグレード手順
1)アップグレード時の注意点を確認
 
上記参照
 
2)データベースのバックアップ
 
・アップグレードの前にmysqldumpでテーブルをダンプし、アップグレード後にダンプファイルをリロードすることを推奨。
 すべてのデータベースをダンプに含めるには、–all-databases オプションを使用する。
例)
mysqldump -u root -p –add-drop-table –all-databases –force > data-for-upgrade_5.x.sql
 
3)Yumリポジトリを使ってMySQLのアップグレード
 
①現状の各MySQLリリースシリーズの有効・無効を確認
 
実行例)

# yum repolist all | grep mysql
mysql-cluster-7.5-community        MySQL Cluster 7.5 Community   disabled
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - disabled
mysql-cluster-7.6-community        MySQL Cluster 7.6 Community   disabled
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - disabled
mysql-connectors-community         MySQL Connectors Community    enabled:     36
mysql-connectors-community-source  MySQL Connectors Community -  disabled
mysql-tools-community              MySQL Tools Community         enabled:     47
mysql-tools-community-source       MySQL Tools Community - Sourc disabled
mysql-tools-preview                MySQL Tools Preview           disabled
mysql-tools-preview-source         MySQL Tools Preview - Source  disabled
mysql55-community                  MySQL 5.5 Community Server    disabled
mysql55-community-source           MySQL 5.5 Community Server -  disabled
mysql56-community                  MySQL 5.6 Community Server    disabled
mysql56-community-source           MySQL 5.6 Community Server -  disabled
mysql57-community                  MySQL 5.7 Community Server    enabled:    201
mysql57-community-source           MySQL 5.7 Community Server -  disabled
mysql80-community                  MySQL 8.0 Community Server    disabled
mysql80-community-source           MySQL 8.0 Community Server -  disabled

 
②利用するリリースシリーズのリポジトリを有効にする
 
アップデート対象のリリースシリーズが有効になっていたら、そのリリースを無効にして、対象リリースを有効にする。
 
例)5.7を無効にし、5.5を有効にする
# yum-config-manager –disable mysql57-community
# yum-config-manager –enable mysql55-community
 
又は/etc/yum.repos.d/mysql-community.repoファイルを手動で編集してリリースシリーズを選択する。
 
4)MySQLのアップグレード
 
①アップグレード
例)
# yum update mysql mysql-server mysql-devel mysql-libs php-mysql php-mysqlnd
 
②MySQLの再起動
例)
# service mysqld restart
 
5)ダンプしたファイルをインポート
 
例)
# mysql -u root -p –force < data-for-upgrade_5.x.s   6)mysql_upgradeを実行
 
〇mysql_upgradeの処理内容
・古いデータとアップグレードされたソフトウェアとの間の非互換性をチェックし、あれば解決する。
・すべてのデータベースのすべてのテーブルに対して、MySQLサーバーの現在のバージョンとの非互換性を調べる。
・システムテーブルをアップグレードして、追加された可能性のある新しい権限または機能を利用できるようにする。
・テーブルに非互換性がある可能性が見つかった場合はテーブルのチェックを実行し、問題が検出された場合はテーブルの修復を試みる。
 
〇実行方法
mysql_upgrade [options]
 
実行後、システムテーブルに行われた変更が有効になるように、サーバーを停止して再起動する。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください