オンラインマニュアルの手順をベースに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]
実行後、システムテーブルに行われた変更が有効になるように、サーバーを停止して再起動する。
-
インストール、基本設定、文字コード、仕組み
- MySQLのインストール
- CentOS6でMySQL5.1からMySQL5.7へアップデートする手順、注意点
- CentOS6.10でMySQL5.7からMySQL8へアップデートする手順、注意点
- MySQLサーバーの起動スクリプト(v5.1)
- MySQLのファイルシステムとストレージエンジンの概要
- MySQLのデータ型の概要
- MySQLのサーバー、データベース、テーブル、カラムの文字コード設定とクライアントからのサーバー接続時の文字コード設定
- MySQLの”LOAD DATA INFILE”などでCSVファイル入出力時の文字コード、権限などの注意点
- セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
- CentOS6にphpMyAdminを導入
- MySQLのbツリーインデックスの概要とマルチカラムインデックス
- MySQLのプレフィックスインデックス、FULLTEXTインデックスの概要
- MySQLのEXPLAINの実行例
- MySQLのインデックス結合の概要
- MySQLのSelect文でインデックスのカラムのみ取得する場合のメリット
- MySQLのORDER BY句でインデックスを使用
- MySQLのPACK_KEYSオプション
- MySQLのインデックス統計更新の概要
- MySQL初期設定確認
- mysqladminコマンドでMySQLサーバーの状態確認
- mysqlshowコマンドで簡単にデータベース、テーブル定義の確認
- awkを使ってmysqlshowの必要な列のみ表示
- MySQLのスロークエリログの概要と表示方法
- show profileでクエリーの内部処理時間を調査
- MySQL Benchmark Suiteによるパフォーマンス測定
- MySQLの診断、監視に利用できる外部ツール
- WordPressデータベースのバックアップとリストア
- Bashスクリプトでmysqldumpバックアップと世代管理
- MySQLの壊れたテーブルのチェック、修復方法
- MySQLのインデックス統計更新の概要
- MySQLのフラグメンテーションの概要と改善方法
- MySQLのスレッド、コネクションに関する設定値、チューニング
- MySQLのセッション単位に設定するバッファーサイズ
- MySQLのクエリキャッシュの設定値、パフォーマンス
- MySQLのテーブルオープン、クローズとテーブルキャッシュのチューニング
- MyISAMキーキャッシュの概要とチューニング
- MySQLのソートに関する設定値とステータス
- MySQL innoDBの性能関連の設定値とステータス確認
- MySQL MyISAMの性能関連の設定値とステータス確認
インデックス
状態確認、調査
バックアップ、リストア、メンテナンス
パフォーマンス、チューニング