icon: haz

さくらレンタルサーバーの 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サーバーの移行が可能とは思わず、さくらのサポートに連絡してしまい申し訳なかった。

この記事のトラックバックURL:

http://diary.haz.jp/trackback/131