Home > 2009年 > 3月 > 14日(土) - MySQLを4から5へ

MySQLを4から5へ

  • Posted by:
  • WWW

こんな夜中(というかもう明け方ですが)に書くというのも久しぶりなような気がしますが,それはきっと気のせいということで(ぉ

先日,さくらインターネットのサーバOSがバージョンアップするので,以降TELNET接続が使えなくなるということを2009年2月28日(土) - SSHクライアントソフトをインストールしたに書いたんですが,そのバージョンアップが11日に行われました.バージョンアップ直後は結構重かったみたいですけど,だいぶ解消されつつあるのかな...といった感じですね.

んで,そのバージョンアップの際にMySQLのバージョンも上がりまして,4.0.27から5.1.30に上がりました.他のレンタルサーバではもう去年のうちにMySQLを5以降にしているところが殆どで,さくらはこの辺だけが遅れていたんですが,ようやくMySQL5ですよ.

ところが(当たり前ですけど),元のデータベースが勝手にMySQL5.1系になるわけではないので,どうも今年の2月4日以前に契約しMySQLを使っているユーザーの場合は,元のデータベース(当然MySQL4.0系)は残したままということらしいです.つまり,ずっと使っている人は「自分で元のデータベースを削除して,改めてデータベースの登録をしてください」ということなんですね.

そんなわけで(?)俺自身も「今使っているデータベースを継続するか,5.1系へ移行するか」の選択を迫られていた訳でして...って俺自身はあっさりと「じゃ,移行しよう」ということで前もって準備をしていたのですが(苦笑).その準備段階・移行段階で結構苦労したし,検索してみると他の方も苦労しているようなので備忘ということで書いておきます.


1. データベースのエクスポート(バックアップ)

一番苦労するのは「データベースのバックアップで文字エンコードが合わず,文字化けが起きてしまう」というものだと思います.俺自身もこの問題に関しては結構気にしていて,何度か試しにエクスポートをやってみたりしたのですが,さくらの場合は単純にphpMyAdminでログインする際に,文字エンコードの選択肢が出てくるので,MTの文字コード(UTF-8)に合わせた状態でログインするだけという,非常に簡単なことで解決しました.んで,phpMyAdmin上でエクスポートphpMyAdmin上でのエクスポート時のキャプチャ画像を行ったわけですが,注意としては...

  • 「構造(チェックが入っています)」欄の「DROP TABLEを追加」と「IF NOT EXISTSを追加」にチェックを入れる.
  • 「ファイルに保存する」にチェックを入れ,圧縮は「なし」にする.

こんなところでしょうか.圧縮しなかったのは,正確なファイルサイズを知っておきたかったのと,あとで分割出来るようにしておきたかったというのが理由です.実際,分割しないとデータが大きすぎて(うちの場合は記事だけでも1,200弱あるため,13MBほどになりました)一度にリストアできなかったので,結果として正解だったのですが(^^;.なお,当然ですけどMT上での「システムバックアップ」も行っていたほうが良いと思いますよ.

2. バックアップファイルの分割

バックアップファイル(拡張子はsqlです)は普通にテキストファイルですので,テーブルごとに分割しておいたほうが良いと思いますが,一番大きいのは(うちの場合)mt_entryテーブルとmt_sessionテーブルです.特にmt_sessionテーブルはバックアップファイルの6割以上を占めている(うちの場合で8.6MBだった)ので,おそらくインポート(リストアに相当)時に大きすぎて失敗する可能性があります.その場合の対処法については後で書きます(^^;

なお,先頭の方にある「CREATE DATABASE `データベース名`;」の部分は,先頭に「--」をつけてドキュメント化しておいたほうが良いと思います(さくらの場合のみかも(^^;).

3. データベースの削除と,新しいデータベースの作成

この辺はさくら固有になってしまうので簡単に書いてしまいますけど,会員メニューのコントロールパネル(「契約情報」の「サーバ設定」から入ります)内の「データベースの設定」をクリックすると,現在使っているデータベースの概要が表示されますが,「データベースの削除」ボタンをクリックすると,データベースが削除されます.

その後,もう一度「データベースの設定」をクリックすると「MySQL5.1」が選択されたデータベースを新規取得するかの画面が出ますので,パスワードを再度設定した上で「データベースの作成」(だったかな?)をクリックすると,新しいデータベースが作成されます.phpMyAdminをクリックしてログインすると,自分のアカウント名のデータベースが作成されているはずです.なお,当然ですが新しい方はデータベースサーバ名も以前とは違うものが割り振られます.

4. バックアップファイルからインポートする

phpMyAdminでログインし,自分のアカウント名のデータベースに入ります.データベースに入ったら,一番上のタブにある「インポート」をクリックし「参照」ボタンをクリックして,ローカル上にあるsqlファイルを選択してインポートします.

なお先ほども書いたとおり,ファイルサイズが4MB近辺以上のファイルについては,データが大きすぎるためインポートに失敗します.その場合はインポートできなかったsqlファイルをbzip2圧縮(拡張子はbz2となります)し,圧縮したファイルをインポートするようにすればうまくいくと思います.

インポートが全て終わったら,テーブルの数を確認してください.MTの場合だと,39個のテーブルが存在すれば完了となります.

5. MT上で確認する

確認の前に,データベースサーバ名が変わっているので,mt-config.cgi内の「DBHost データベースサーバ名」となっている部分を,新しいデータベースサーバ名に変更して保存し,FTPソフトで上書きアップロードしておいてください.

その後,mt.cgiにアクセスし,一覧で「記事の確認」辺りを行って問題がなければ完了です.なお,一部の文字で文字化けが起きることがあります(俺が確認したところでは「~」という文字が化けてました)が,動作にはほとんど支障がないと思って良いと思います.

なお,SSH上でmysqldumpを使ってバックアップする方法も検討してみたのですが,どうもさくらのMySQL4.0の場合,デフォルトの文字エンコードがujisとなっているようで(何故だ(^^;),でも中身はUTF-8となっていることから,どうやっても文字化けが起きてしまうため,一番確実な方法ということでこっちを選択しました.誰かmysqldumpで出来たという人がいたら連絡してください(え

2009-03-14 14:00追記

上に書いた「~」文字の文字化けの原因が分かりました.phpMyAdminで各テーブルの構造を見てみたところ,照合順序がujis_japanese_ciとなっていたのが原因でした.これを全てutf8_general_ciに修正して,該当エントリー等を編集し再構築してみたところ,正常に表示されるようになりましたよ(^^)

Googleで検索してようやくヒットしたweb-scratch.blog: MT4で「~」「\」が文字化け&日本語タグクラウド重複【解決編】が参考になりました.

尤も既存のデータは編集して再構築しないと反映されませんけど,これは気が付いたときにちょこちょこやっていきます.

Comments:2

困り顔 | 返信

「さくらインターネット&ワードプレス」の組み合わせで、データベースのバージョンアップを試みたのですが、上手くできません。
Hisashi様の説明を参考にして、行っていったのですが、インポートの際に下記のようにエラー表示されます。
ちなみに〇〇〇〇は同一の私の任意の文字が入っています。

「実行した SQL:
--
-- 繝・・繧ソ繝吶・繧ケ: `〇〇〇〇`
--
- - CREATE DATABASE `〇〇〇〇` ;

MySQLのメッセージ: ドキュメント
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--CREATE DATABASE `〇〇〇〇`' at line 4 」

文字化け、文字化けというのが口をすっぱく書いてあったので、エキスポートの際は注意して行ってきたつもりです。
しかしテクストエディタのテラパッドで確認したら下記のように文字化けしていました。

「-- phpMyAdmin SQL Dump
-- version 2.11.11.3
-- http://www.phpmyadmin.net
--
-- 繝帙せ繝・ mysql68.db.sakura.ne.jp
-- 逕滓・譎る俣: 2014 蟷エ 6 譛・18 譌・ 10:58
-- 繧オ繝シ繝舌・繝舌・繧ク繝ァ繝ウ: 4.0.27
-- PHP 縺ョ繝舌・繧ク繝ァ繝ウ: 5.3.22

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 繝・・繧ソ繝吶・繧ケ: `〇〇〇〇`
--
--CREATE DATABASE `〇〇〇〇`;
--USE 〇〇〇〇;

-- --------------------------------------------------------」

エキスポートした後に文字化けを気にせず、すでに既存のデータベースは消してしまいました。
これはもう後戻りできない、重大なミスを犯してしまったのでしょうか?

かなり悩んでます。
どなたか救いの手をください。

HashiM から困り顔 への返信 | 返信

困り顔さん.はじめまして.

>テクストエディタのテラパッドで確認したら(略)

とのことですが,テラパッド自体に文字エンコードの変更機能(というのか)はあるのでしょうか?
どうも,編集して保存した際の文字エンコードがutf-8ではないので,しょっぱなから「これおかしい」ということでエラーになっていると思われるんですが…(4行目~8行目ってホスト名や生成時間を表示する部分ですから)
私の場合はxyzzyで行いましたが,xyzzyの場合は編集時の文字エンコードを自在に変更することが出来まして,デフォルトでutf-8(standard,crlf)で編集するよう設定しています.
で,そのままutf-8で編集作業を行って,同じ文字エンコードで保存してから分割作業.
その後MySQLのバージョンアップを行って,インポート…という流れでうまくいきました.

>エキスポートした後に文字化けを気にせず、すでに既存のデータベースは消してしまいました。
>これはもう後戻りできない、重大なミスを犯してしまったのでしょうか?

PC内にエキスポートしたsqlファイルは残っているのでしょうか?
残っているのでしたらまだ諦めることはありませんよ.

コメントする

Trackbacks:5

MySQL 4 から 5へ from dogmap.jp

このサイトを設置している、さくらインターネットのサーバOSが FreeBSD 7.1 にバージョンアップされました。 その際 MySQL も 4.0.x ...

Home > 2009年 > 3月 > 14日(土) - MySQLを4から5へ

Categories

Tag Cloud

OpenID accepted here

Accepted OpenID

CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

Feeds

Return to page top