Home » Programing, Server » さくらインターネットのmysqlを4.0から5.1へ移行した

Check     このエントリーをはてなブックマークに追加

wordpressの最新バージョン2.9が、いよいよmysql4.1以上を必要とするようになったので、さくらのmysql移行を行うことにした。

前提として、さくらでmysqlをバージョンアップするには、一度データベースを削除して、さくらのコントロールパネル上で再作成する必要がある。

なので、バックアップ→DB削除→DB作成→DBインポート→アプリケーションの修正の手順をとる。

バックアップ

sshでログインし、コンソール上で下記のコマンドを打つ。

$ mysqldump-4.0 -h [dbhost] -u [dbuser] -p  [dbname] > mysqldump.sql

[]の部分は各自書き換えること。

ポイントは、「mysqldump-4.0」というmysqldumpの4バージョンでコマンドを打つこと。(さくらでこれを置いているのはかなり気がきく。)4から4.1以降では文字コードの部分でだいぶ仕様が変わっているので、dumpされる内容が新バージョンとは違う。

DB削除、DB作成

データベースの削除、作成はさくらインターネットのサーバコントロールパネルから行う。

ログインして「データベースの設定」メニュー→「データベースを削除」ボタンを押す。かなりあっさりデータベースが消えてしまうので、注意しよう。

削除すると、作成の画面が表示され、mysqlのバージョンを選択して作成ができる。今回は「mysql5.1」を選択。

データインポート

データをインポートする前に、DBのステータスを確認しよう。[dbhost]は変更されているのでさくらのコントロールパネルで確認しておく。

$ mysql -v -h [dbhost] -u [dbuser] -p  [dbname]

mysql> status;
————–
mysql  Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using  5.2
Connection id:          5105438
Current database:       xxxxx
Current user:           xxx@xxx.xxx.xxx.xxx
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ”
Using delimiter:        ;
Server version:         5.1.38 FreeBSD port: mysql-server-5.1.38
Protocol version:       10
Connection:             mysqlxxx.db.sakura.ne.jp via TCP/IP
Server characterset:    ujis
Db     characterset:    ujis
Client characterset:    ujis
Conn.  characterset:    ujis
TCP port:               3306
Uptime:                 68 days 21 hours 53 min 50 sec

デフォルトの状態だと各charactersetが、ujis(eucJP)で統一されているので、Dbと今回接続しているClientのcharactersetをutf8に変更して、インポートする。

mysql> alter database [dbname] character set utf8;
mysql> \C utf8
mysql> \. mysqldump.sql

1行目がDbのcharactersetを変更、2行目がこの接続している端末とのコネクションのcharacterset、そして3行目が実際にインポートしている部分。

「mysql -v」で接続している場合、インポートしている様子が端末上に流れるでしょう。

アプリケーションの変更

dbhostが変更となっているので、DBに繋いでいるアプリケーションのホスト名を変更しておく。

wordpressの場合は、「wp-config.php」というファイル。dbhost変更とともに、旧バージョンからバージョンアップしているwordpressの場合、クライアント側のcharactersetを明示的に指定していない場合があるようなので、dbhostの指定の下くらいに下記を追記しておく。

define(‘DB_CHARSET’, ‘utf8′);

同じように、symfonyやRuby on Railsのようなアプリケーションでも「database.yml」に下記設定を明示的に追記してく。

encoding:     utf8

前述のとおり、さくらはデフォルト「ujis」になっていて、my.cnfの設定を変更できないため、クライアント側でutf8で接続することを必ず明記するようにしよう。

Check     このエントリーをはてなブックマークに追加
タグ: ,