takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

XAMPP for Windows の MySQL を Spider 3.0 対応版に更新

Windows 上で XAMPP 1.7.1 (PHP 5.2.9, MySQL 5.1.33) を使って Web アプリケーションを開発していましたが、事情があって MySQL 5.5 を使う事になりました。
通常ならば新しいバージョンの XAMPP をインストールするところですが、Web フレームワークとして Ethna 2.5.0 (PHP 5.3 未対応) を使用していたため、今回は MySQL のみアップグレードしました。
いい機会なので 通常の MySQL 5.5 ではなく Spider 3.0 対応バイナリをインストールしてみました。
以下、その手順のメモとなります。
(XAMPP は C:\xampp にインストール済みであるとします)

MySQL Spider 3.0 for Win32 のダウンロード

以下のサイトから mysql-5.5.14-spider-3.0-vp-0.18-win32.zip と spider-init-3.0-for-5.5.14.tgz をダウンロードします。
SpiderForMySQL.com - DONWNLOAD Latest

現在のDB のバックアップ

念のため XAMPP の MySQL を起動させてから下記のコマンドで DB ダンプを取ります。

$ mysqldump -u root -p -h localhost --all-databases > ./all-data_20130814.sql

MySQL の停止

XAMPP-Control 上で MySQL を停止させます。
MySQL をサービスとして起動させている場合は以下のコマンドで停止させて下さい。

$ net stop mysql

ダウンロードした MySQL のインストール

  1. mysql-5.5.14-spider-3.0-vp-0.18-win32.zip を C:\TEMP などの適当なフォルダに解凍します。
  2. 現在使用中の MySQLのフォルダ "C:\xampp\mysql" を "C:\xampp\mysql_old" とリネームします。
  3. 新たに "C:\xampp\mysql" フォルダを作成し、 1. で解凍した内容をそこにコピーします。

my.ini の作成

設定ファイル my.ini を C:\xampp\mysql\bin に作成します。
自分は C:\xampp\mysql\my-medium.ini を元に以下の内容で作成しました。

# The following options will be passed to all MySQL clients
[client]
#password	= your_password
port		= 3306
socket          = "C:/xampp/tmp/mysql.sock"

default-character-set=utf8

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port		= 3306
socket		= "C:/xampp/tmp/mysql.sock"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/data"
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error="mysql_error.log"

character-set-server=utf8
skip-character-set-client-handshake

# log-bin deactivated by default since XAMPP 1.4.11
#log-bin=mysql-bin

# binary logging format - mixed recommended
#binlog_format=mixed

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id	= 1

# Uncomment the following if you are using InnoDB tables
#skip-innodb
innodb_data_home_dir = "C:/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/data"
#innodb_log_arch_dir = "C:/xampp/mysql/data"
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

default-character-set=utf8

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

default-character-set=utf8

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

DB データの移行

C:\xampp\mysql_old\data の内容を C:\xampp\mysql\data にコピーします。
XAMPP-Control から MySQL を起動します。
正常起動したらコマンドプロンプト上で以下のコマンドを実行します。

$ mysql_upgrade -p -h localhost

mysql_upgrade 処理中に以下のエラーが発生する場合があります。

error    : Table upgrade required. Please do "REPAIR TABLE `time_zone`" or dump/reload to fix it!
error    : Table upgrade required. Please do "REPAIR TABLE `time_zone_name`" or dump/reload to fix it!

その場合は、mysql コマンドから以下のように入力して下さい。

mysql> use mysql;
mysql> REPAIR TABLE time_zone;
mysql> REPAIR TABLE time_zone_name;

Spider storage engine を認識させる

MySQL 5.5 をインストールした直後は Spider storage engine が認識されていないため、以下の手順で認識させます。

spider-init-3.0-for-5.5.14.tgz 適当なフォルダ (C:\TEMPなど) に解凍すると、
install_spider.sql というファイルが作られるので、コマンドプロンプトでそのフォルダに
移動した後、以下のコマンドを実行します。

$ mysql -u root -p

mysql> source install_spider.sql;

SHOW ENGINES で SPIDER の項目が表示されていれば、Spider storage engine は認識されています。

mysql> show engines;

+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
| SPIDER             | YES     | Spider storage engine                                      | YES          | YES  | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| MyISAM             | YES     | MyISAM storage engine                                      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+------------------------------------------------------------+--------------+------+------------+
7 rows in set (0.00 sec)