オンラインマニュアルの手順をベースにMySQLのアップデート手順を確認し、実際にyumを使ってアップデートを行いました。アップデートの手順、注意点をまとめました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
- 1.アップグレード時の注意点
- 2.MySQL Yumリポジトリのインストール
- 3.MySQL5.1→5.5アップデート時の注意点
- 4.MySQL5.5→5.6アップデート時の注意点
- 5.MySQL5.6→5.7アップデート時の注意点
- 6.アップグレード手順
〇アップグレードの順番
・原則として、あるリリースシリーズから別のものにアップグレードするには、シリーズをスキップせずに次のシリーズにアップグレードする。
例えば、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 :: 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
MySQL 5.5 Reference Manual :: 2.11.1.1 Changes Affecting Upgrades to MySQL 5.5
私は上記資料を軽く目を通しましたが、量が多くすべてを理解することができなかったため、検証環境で実際にアップデートをし、WordPressなどが正常に動作するかテストして判断しました。
私の環境では特に問題は発生しませんでした。
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の影響
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ファイル
上記参照
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]
実行後、システムテーブルに行われた変更が有効になるように、サーバーを停止して再起動する。