Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


2.11.1 MySQL のアップグレード

原則として、あるリリースシリーズから別のものにアップグレードするには、シリーズをスキップせずに次のシリーズに移動します。MySQL 5.5 より前のリリースシリーズからアップグレードするには、MySQL 5.5 に到達するまで順に次のリリースシリーズにアップグレードしてから、MySQL 5.6 へのアップグレードに進みます。たとえば、現在 MySQL 5.1 を稼働していて、新しいシリーズにアップグレードする場合は、MySQL 5.6 にアップグレードする前にまず 5.5 にアップグレードする、などです。MySQL 5.5 へのアップグレードの詳細は、『MySQL 5.5 リファレンスマニュアル』を参照してください。

MySQL 5.6 にアップグレードするには、次のチェックリストの項目を参考にしてください。

  • アップグレードの前に、付与テーブルを含む mysql データベースなどのデータベースのバックアップを作成します。セクション7.2「データベースバックアップ方法」を参照してください。

  • セクション2.11.1.3「MySQL 5.5 から 5.6 へのアップグレード」すべての注釈をお読みください。これらの注釈によって、現在の MySQL インストールに適用されるアップグレードの問題を識別できます。そのセクションで説明されている一部の互換性の欠如は、アップグレードの前に注意する必要があります。アップグレードのあとにアクションが必要なものもあります。

  • リリースノートもお読みください。ここには、MySQL 5.6 の新機能や MySQL の以前のリリースとは異なるものに関する情報があります。

  • MySQL の新しいバージョンにアップグレードしたら、mysql_upgrade を実行します (セクション4.4.7「mysql_upgrade — MySQL テーブルのチェックとアップグレード」を参照してください)。このプログラムはテーブルを確認し、必要に応じて修復を試みます。また、付与テーブルを更新して最新の構造を持つようにし、新しい機能を活用できるようにします。(MySQL のリリースの中には、新たに権限や機能を加えるために付与テーブルの構造に変更を加えているものもあります。)

    mysql_upgrade では、ヘルプテーブルの内容はアップグレードされません。アップグレードの手順については、セクション5.1.10「サーバー側のヘルプ」を参照してください。

    mysql_upgrade は、サーバーが --gtid-mode=ON で稼働している場合には使用しないでください。使用すると、mysql データベース内の非トランザクションシステムテーブルが変更される場合があります。これらの多くは MyISAM で、異なるストレージエンジンを使用するように変更することはできません。GTID モードと mysql_upgradeを参照してください。

  • MySQL Server を Windows 上で使用する場合は、セクション2.3.7「Windows 上の MySQL をアップグレードする」を参照してください。

  • レプリケーションを使用する場合は、レプリケーションのセットアップのアップグレードについてセクション17.4.3「レプリケーションセットアップをアップグレードする」を参照してください。

  • InnoDB を使用する場合は、サーバーをシャットダウンしてアップグレードする前に、innodb_fast_shutdown を 0 に設定することを考慮します。innodb_fast_shutdown を 0 に設定すると、InnoDB はシャットダウンの前に低速シャットダウン、完全なパージ、および挿入バッファーのマージを実行します。これにより、アップグレードプロセスでファイル形式が変更される場合に備えて、すべてのデータファイルが完全に準備されます。

  • もともと複数の RPM パッケージをインストールして生成したインストールをアップグレードする場合は、一部だけでなくすべてのパッケージをアップグレードするのが最善です。たとえば、以前にサーバーおよびクライアントの RPM をインストールした場合は、サーバーの RPM だけをアップグレードすることはしないでください。

  • ユーザー定義関数 (UDF) を所定の名前で作成したあとで、MySQL を同じ名前の組み込み関数を実装した新しいバージョンにアップグレードした場合、その UDF はアクセスできなくなります。これを修正するには、DROP FUNCTION を使用して UDF を削除してから、CREATE FUNCTION を使用して競合しない別の名前で UDF を再作成します。新しいバージョンの MySQL が、既存のストアドファンクションと同名の組み込み関数を実装している場合にも、同じとこが言えます。各種の関数への参照をサーバーが解釈する方法を記述したルールについては、セクション9.2.4「関数名の構文解析と解決」を参照してください。

EL5、EL6、または EL7 ベースの Linux プラットフォームおよび Fedora 20 または 21 では、MySQL およびそのコンポーネントを、MySQL Yum リポジトリでインプレースアップグレードできます。セクション2.11.1.1「MySQL Yum リポジトリを使用する MySQL のアップグレード」を参照してください。

Debian 7、Ubuntu 12、および Ubuntu 14 では、MySQL およびそのコンポーネントを、MySQL APT リポジトリでインプレースアップグレードできます。セクション2.11.1.2「MySQL APT リポジトリを使用する MySQL のアップグレード」を参照してください。

MySQL リリースシリーズの一般提供ステータスに到達したバージョン間のアップグレードでは、MySQL 形式のファイルおよびデータファイルを、同じアーキテクチャーを持つシステム上の異なるバージョン間で移動できます。MySQL リリースシリーズの開発ステータスにあるバージョンへのアップグレードでは、必ずしもそうではありません。開発リリースは自己責任でご使用ください。

新しいバージョンの使用に慎重な場合には、新しいバージョンをインストールする前に、常に古い mysqld の名前を変更できます。たとえば、MySQL 5.5 のバージョンを使用していて 5.6 にアップグレードする場合は、現在のサーバーを mysqld から mysqld-5.5 に名前変更します。新しい mysqld に予想外の問題が発生した場合は、単にそれをシャットダウンして古い mysqld を起動するだけで済みます。

新しい mysqld サーバーが起動しない、あるいはパスワードなしで接続できないなどの問題が発生した場合には、前のインストールの古い my.cnf ファイルが残っていないか確認します。これは --print-defaults オプション (たとえば、mysqld --print-defaults) で確認できます。このコマンドがプログラム名以外の何かを表示した場合、サーバーあるいはクライアントオペレーションに影響を及ぼすアクティブな my.cnf ファイルがあることになります。

アップグレード後に、コンパイル済みのクライアントプログラムに Commands out of sync または予測外のコアダンプなどの問題が発生した場合は、プログラムのコンパイル時に、古いヘッダーファイルまたはライブラリファイルを使用した可能性があります。この場合、mysql.h ファイルおよび libmysqlclient.a ライブラリの日付をチェックして、それらが新しい MySQL 配布のものであることを確認します。そうでない場合には、プログラムを新しいヘッダーおよびライブラリで再度コンパイルします。(libmysqlclient.so.15 から libmysqlclient.so.16 など) ライブラリのメジャーバージョン番号が変更された場合は、共有クライアントライブラリを使用してコンパイルされたプログラムも再コンパイルが必要になることがあります。

MySQL インストールに、インプレースアップグレード後の変換に長い時間がかかる可能性のある大量のデータが含まれている場合は、必要な変換とその実行に関係する作業を評価するための仮のデータベースインスタンスを作成すると役立つことがあります。mysql データベースの完全なコピーと、データを含まないその他のすべてのデータベースを含む MySQL インスタンスのコピーを作成します。このダミーのインスタンスに対してアップグレードの手順を実行し、必要になるアクションを確認して、元のデータベースインスタンスで実際のデータ変換を実行するときに関係する作業をよりよく評価できるようにします。

新しいリリースの MySQL をインストールした際は必ず Perl DBD::mysql モジュールを再構築して再インストールするのがいいでしょう。同じことが、PHP mysql 拡張や Python MySQLdb モジュールなどの、ほかの MySQL インタフェースにも言えます。


User Comments
Sign Up Login You must be logged in to post a comment.