本家のお世話-#59。(MySQL5.6.10へアップグレード)

投稿アップデート情報  追記(2/9)  追記2(8/2)

 MySQL5.6.x が出てから大分経ち,現在,バージョンは 5.6.10 になっている。で,これが,初の正式版だそうだ(2/6のリリース)。 MySQL のアップグレードについては,5.1 から 5.5 のときに痛い思い出があって二の足を踏んでいたのだが,いつまでも放っておくのは日ごろのポリシーに反するので,重い腰を上げてアップグレードに取り組むことにした。

 5.5 系では, msi を使っていたが,今回はインストールパスを変えたくない(単に,前回の轍を踏まないため―爆+笑)ので, Zip アーカイブを使うつもりだ。現時点の我が家のサーバOSは, WinXP SP3(x86)である。

  1. 何はともあれ,現状をバックアップする。WordPress のアップデートのときと違い,すべてのユーザについてデータベースを phpMyAdmin でバックアップ。 zip から zip のアップグレードなら,MySQL Server x.x への上書きでいいようなのだが,前回までが msi なので,アンインストーラーを使わないと「プログラムの追加と削除」にゾンビが残ってしまう。アンインストーラーはすべてを削除するので,作業の前に my.ini の保存とインストールパス名(うちの場合は C:\Program Files\MySQL\MySQL Server x.x だった)の記録をしておく必要がある。
  2. コントロールパネル >> 管理ツール >> サービス
    MySQL のサービスを停止する。
  3. コントロールパネル >> プログラムの追加と削除
    MySQL Server x.x を削除する。

    これを削除しても, C:\Documents and Settings\All Users\MySQL\MySQL Server x.x は残るはずなので,元のデータベースはそのまま使えるはずだが,何が起こるかわからないので,バックアップは取っておくに越したことはない。再起動のメッセージが出ない場合は,再起動はしなくても大丈夫なようだ。

  4. mysql-5.6.10-win32.zip をダウンロードし,展開する。
  5. C:\Program Files\MySQL に MySQL Server x.x フォルダを再作成し,この中に先ほど展開でできたファイル群を移動する。すべて移動してもよいのだが,我が家の場合,リモートでドキュメントなどを使うことはないので,以下の5つのフォルダと2つのファイルのみを移動した。
    • フォルダ
        bin
        data
        include
        lib  
        share
    • ファイル
        COPYING
        my-default.ini

     先ほど保存しておいた my.ini を my-default.ini と同じ階層にコピーする。

  6. アンインストーラーを使ったので,サービスとしての MySQL も削除されている筈であるから,MySQLを改めてサービスとして登録する。
    コマンドプロンプトを立ち上げて, cd コマンドで C:\Program Files\MySQL\MySQL Server x.x\bin に移動し,
    mysqld.exe –install
  7. コントロールパネル >> 管理ツール >> サービス
    MySQL のサービスを開始する。
    「スタートアップの種類」が自動になっていない場合は,この時に,自動に直しておく。

    開始したら,エラーが出た orz。
     

  8. イベントビューアを見に行ったら,説明のところに MySQL: unknown variable ‘table_cache=256’ が出ていた。どうやら, table_cache はデフォルトでは無効になっているようだ。
    しかし,何でこのパラメータを入れたんだっけ。覚えていないよ。 table_cache, max_connections, open_files_limit 関係を改めて読んでみたが,我が家での必要性がよくわからない。
    新サーバを調べてみると, max_connections はデフォルトで 151 になっており, Upgrading from MySQL 5.5 to 5.6 によれば,5.6.6 からいろいろ変わったのに付随して,ここも変わったと書いてある。
    5.6.6 以降では,max_connections の値によって自動的にいろいろやってくれるようだ。で,エイヤッと my.ini 内の table_cache と max_connections の行を削除した。

    改めて,起動。成功。
     

  9. コマンドプロンプトで, C:\Program Files\MySQL\MySQL Server x.x\binに移動し,
    mysql_upgrade
    とやったら,
    Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: NO) when trying to connect
    FATAL ERROR: Upgrade failed
    になったので,改めて
    mysql_upgrade –password[=password]
    で,再チャレンジ。今度は,無事終了。ただし,
    Warning: Using a password on the command line interface can be insecure.
    と言われた。我が家では,この手のコマンドは,外には出ていかない設定になっているが,コマンドがインターネット上を飛ぶ設定になっているとか他のユーザーもサーバを使う場合は,気をつける必要があるのだろうと思う。正直な話,この辺よくわかっていないのだが(汗), Using a password on the command line interface をやるとメモリ上(?)にパスワードが残る形になって,それを簡単に読み取る方法があるらしい。でもさ,管理者以外,誰も MySQL マシンにアクセスできなければ問題ないよね???

    mysql_upgrade — Check and Upgrade MySQL Tables の指示通り MySQL のサービスを再起動。成功。

  10. この後,ブログにアクセスしたらちゃんと見えたので,よしッと思ったんだが,何となく,イベントビューアを見に行ったら,ひとつ警告が出ていた。
    TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
    というの。 5.5 から 5.6 の変更のせいでよく出る警告らしく, Upgrading from MySQL 5.5 to 5.6 にそのものズバリが載っていたので,仰せの通り, explicit_defaults_for_timestamp を有効にするために, my.ini の [mysqld] のセクションに
    explicit_defaults_for_timestamp=true
    を追加。
    MySQL のサービスを再起動。警告が出なくなった。

 以上で,おしまい。ああ,疲れた。

追記(2/9):
 xxxx.err にもう一つ warning が出ていた。

  • InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB’s internal memory allocator.

というやつ。調べてみると, innodb_use_sys_malloc は on のままだけど,厳密にはどういう意味かな。

 innodb_use_sys_malloc を off にしてみたら,以下の warning が出た。

  • InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB’s internal memory allocator.

ということで,どうやら,「 innodb_additional_mem_pool_size の設定はしなくていいよ」ということらしいので, my.ini から削ることにした。しかし, MySQL 5.6 系の進化はすごいと評判なんですね。スキルのない零細なブロガーには宝の持ち腐れだね(爆)。

 そういえば, warning じゃないが, IPv6 is not available. もあった。 IPv6 への対応という課題もあったなあ。しかし……これだしなぁ。あれ以降,どうなっているのだろう。準備は進んでいるのだろうか。

追記2(8/2):
 アップグレードではなくて,新規導入の記事を「Windows7上にWamp系WebServerを建てる-#3。」に書いた。

コメントを残す

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

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