さくらレンタルサーバーの MySQLを 4.0xから 5.1xへ
さくらレンタルサーバーの MySQLを 4.0xから 5.1xへアップデートした時のメモ
簡単に説明する手順
1.htaccessにメンテナンスモードの情報を書き込む
RedirectMatch 503 .*
ErrorDocument 503 "maintenance"
私の場合は、先に元の .htaccessファイルを、「mv .htaccess .hoge」などして、リネームしておきます。
2.phpMyAdminのエクスポートで、全テーブルのバックアップSQLファイルを取得する。
mysqldumpコマンドでは、文字化け対策やら、空き容量の確保やら、ホストサーバーの負荷やらと色々とややこしい。
エクスポート前に、削除可能なキャッシュやログなんかのレコードは消しておくとよい。(消せるテーブルは、Drupal 5でレコードをインポートしなくてよいテーブルに記載しました。)
3.データベースサーバーの文字コードを utf8にする
mysql -uUSER_NAME -pPASSWORD DB_NAME -hHOST_NAME
Enter password:
mysql> alter database DB_NAME character set utf8;
一応、mysql コマンドの実例を書くと、ユーザー名「hoge」、データベース名(moge)、ホスト名(mysql10.db.sakura.ne.jp)の場合
mysql -uhoge -p moge -hmysql10.db.sakura.ne.jp
4.エクスポートしていた SQLファイルの先頭に以下のコードを追加する。
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_results = utf8;
これをやらないと「ujis_japanese_ci」でテーブルが作られてしまって文字化けします。
5.今までのデータベースを削除
さくらのサーバーコントロールパネル(以下、コンパネ)から、データベースを削除する。
削除したら最後、二度と帰ってこないので名残惜しむように削除。
6.新しいデータベースの作成
さくらのコンパネで、新しいデータベースを作成する。(もちろん、データベースのバージョンはMySQL 5.1を指定する)
7.新しいデータベースへインポート
新しく作ったデータベースをphpMyAdminで開き、「4.」で修正した SQLファイルをインポートする。
8.利用する CMSの設定を変更
Drupalなら settings.php、WordPressなら、wp-config.phpのデータベース名とパスワードを新しいものに変更する。
9.おしまい
最初にメンテナンスモードにした .htaccessファイルを元に戻しておしまい。正常に動作して、記事などが文字化けしていないか確認しましょう。
Drupal 5でレコードをインポートしなくてよいテーブル
Drupal 5の場合、(prefix)cache_.*なテーブルのレコードはインポートしないでよい。(imagecacheは消しちゃダメだよ。)
私がデータを移行しなかったテーブル一覧
- cache_comment
- cache_content
- cache_filter
- cache_forum
- cache_menu
- cache_node
- cache_page
- cache_path
- cache_search
- cache_similarterms
- cache_taxonomy
- cache_views
- watchdog
- sessions
移行した理由
いいかげんに移行しなければならなかった理由は沢山あるのだが、WordPressが 2.9にアップデートされ、要求 MySQLのバージョンが 4.1以上になったのが最大の理由。
データベースの移行がおっかない場合
データベースの移行がおっかない場合は、イキナリ稼動中の CMSに対して実行するのではなく、さくらレンタルサーバーの「お試し期間」を利用して、新しいアカウントを取得。手順 6から実行して訓練しておくと良いかも。障害があった時や、サーバー移転の練習にもなりますし。
今回の反省点
ユーザー側で MySQLサーバーの移行が可能とは思わず、さくらのサポートに連絡してしまい申し訳なかった。