投稿アップデート情報 追記(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)である。
- 何はともあれ,現状をバックアップする。WordPress のアップデートのときと違い,すべてのユーザについてデータベースを phpMyAdmin でバックアップ。 zip から zip のアップグレードなら,MySQL Server x.x への上書きでいいようなのだが,前回までが msi なので,アンインストーラーを使わないと「プログラムの追加と削除」にゾンビが残ってしまう。アンインストーラーはすべてを削除するので,作業の前に my.ini の保存とインストールパス名(うちの場合は C:Program FilesMySQLMySQL Server x.x だった)の記録をしておく必要がある。
- コントロールパネル >> 管理ツール >> サービス
MySQL のサービスを停止する。
- コントロールパネル >> プログラムの追加と削除
MySQL Server x.x を削除する。
これを削除しても, C:Documents and SettingsAll UsersMySQLMySQL Server x.x は残るはずなので,元のデータベースはそのまま使えるはずだが,何が起こるかわからないので,バックアップは取っておくに越したことはない。再起動のメッセージが出ない場合は,再起動はしなくても大丈夫なようだ。
- mysql-5.6.10-win32.zip をダウンロードし,展開する。
- C:Program FilesMySQL に MySQL Server x.x フォルダを再作成し,この中に先ほど展開でできたファイル群を移動する。すべて移動してもよいのだが,我が家の場合,リモートでドキュメントなどを使うことはないので,以下の5つのフォルダと2つのファイルのみを移動した。
- フォルダ
bin
data
include
lib
share
- ファイル
COPYING
my-default.ini
先ほど保存しておいた my.ini を my-default.ini と同じ階層にコピーする。
- アンインストーラーを使ったので,サービスとしての MySQL も削除されている筈であるから,MySQLを改めてサービスとして登録する。
コマンドプロンプトを立ち上げて, cd コマンドで C:Program FilesMySQLMySQL Server x.xbin に移動し,
mysqld.exe –install
- コントロールパネル >> 管理ツール >> サービス
MySQL のサービスを開始する。
「スタートアップの種類」が自動になっていない場合は,この時に,自動に直しておく。
開始したら,エラーが出た orz。
- イベントビューアを見に行ったら,説明のところに 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 の行を削除した。
改めて,起動。成功。
- コマンドプロンプトで, C:Program FilesMySQLMySQL Server x.xbinに移動し,
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 のサービスを再起動。成功。
- この後,ブログにアクセスしたらちゃんと見えたので,よしッと思ったんだが,何となく,イベントビューアを見に行ったら,ひとつ警告が出ていた。
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。」に書いた。