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 のインストール
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)