« コメントプレビューの不具合修正について | メイン | 今後の課題....文字コード変換など »
MySQLへの移行..あれこれ
2004年06月09日
すみません...。
先週、サーバが立ち上がらなくなってしまいました。
まだ完全には復活できていないのですが、こちらのblogサイトはバックアップからコンテンツを持ってきました。

転んでもタダでは起き上がらない私(笑)、MySQLをインストールし、BerkeleyDBから移行することにしました。

※以前はPostgreSQLを利用していたので、どうしようか迷いました。
でもmt.cfgのデフォルトがmysqlになっているし、とても親切なサイトを教えていただいたので、MySQLで行くことにしました*^^*。

すんなりいく予定だった、移行もちょっとドタバタしてしまいましたので、その経過を記録しておくことにします。

1.データベースの作成

MySQL上に今回利用するデータベースを作成します。

※MySQLははじめてですので、長い前おきになりますがメモ書きさせてください。

rootにならなくても、下記のようにして管理者権限でログインすることができます。

$ mysql -uroot -p

こうやって、mysqlに接続します:-)
mysqlに接続できましたら、

mysql> use mysql
と入力して、「mysqlというdbを使うよ」と宣言します。
mysqlの中には、下記のようなテーブルがあって、ユーザーやdbを管理しているようです。

mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv    |
| db              |
| func            |
| host            |
| tables_priv     |
| user            |
+-----------------+

ここで、create database というコマンドを使って、kiyo(仮名)という名前のデータベースを作成します。

mysql> create database kiyo;


2.ユーザーにデータベースへのアクセス権限を与える

上で作成したkiyoというデータベースのすべてのオブジェクトにサーバ上のkiyoというユーザーからアクセスできるように設定します。

mysql上で下記コマンドを実行しました。

mysql> grant all privileges on kiyo.* to kiyo@localhost
    -> identified by '****' with grant option;  ←←****はパスワード


※*****部分はパスワードです。
※権限はひとつずつ与えてもいいのですが、面倒なので全部(all)にしてしまいました(^^;。


権限を与えたら、設定を反映します。
mysql> flush privileges;


3.mt.cfgの設定

やっとここまできました(笑)。
mt.cfgを修正します。
ここはtugaaさんから教えていただいた、、ロリポップさんの説明を参考にしました。


mt.cfgの下記部分を修正しました。
私は直接サーバ上で編集します。
左側の数字は、viエディタでnumberを表示させたものです。
(行番号はオリジナルのときとほぼ変わっていないと思います。)

 21 # The filesystem path to the 'db' directory, where your MT database
 22 # files are stored. You will probably need to change this when you
 23 # first install MT; instructions for doing so are in the Installation
 24 # Instructions, in INSTALLING THE MOVABLE TYPE APPLICATION CODE, Step 8.
 25 # Consider using the MySQL configuration, below.
 26
 27 #DataSource /home/hogehoge/db       ←←コメントアウト


 34 # Configuration for MySQL databases. Add the name of your database
 35 # and the username that you have for logging in to that database
 36 # below. The password needs to go in the file mt-db-pass.cgi.
 37 #
 38 ObjectDriver DBI::mysql         ←←コメントをはずす
 39 Database kiyo                   ←←上で作ったdatabase名をセット
 40 DBUser kiyo                     ←←上で設定したユーザー名をセット
 41 DBHost localhost                ←←同じマシンなのでlocalhost         

4.データベースアクセス時のパスワードの設定

mt-db-pass.cgiを修正します。
内容はただのテキストなのに、なぜ、cgiなのか?
アクセス制御の設定をしようとして、気付きました(鈍すぎ)。
cgiにしておけば、中身を覗かれることはありませんね:-)

mt-db-pass.cgiに先ほど2.で設定した、パスワード(****)を入力してセーブします。

これだけ



5.mt-db2sql.cgi の実行

ここでブラウザを立ち上げ、mt-db2sql.cgiを実行しました。

ん?うまくいくはずがなにやらエラーが....




    Loading database schema...

    Loading data...
    MT::Author

    An error occurred while loading data:

    No ObjectDriver defined at /home/kiyo/public_html/lib/MT/Object.pm line 105.

    泣.....

6.再度、mt.cfgの修正

困った、困った....
「No ObjectDriver って、MySQLのモジュールが足りないの?」
なんて思ったりして...

そこでググってみました。
世の中には立派な方がいらっしゃいます!解決策(google大魔人さんのサイト*^^*)をみつけました。
※それで、私も少し見習おうと、ココに書いています...:-)


それによると、
27 #DataSource /home/hogehoge/db ←←ここ
は、コメントアウトしてはならないらしい....(最終的にはするけれど)

確かにそうですね...
Import先はわかっても、元のデータをどこからExportすればいいのかわかりませんもの...

No ObjectDriverって、、そういう意味だったのか....っと納得。

っで、
27 DataSource /home/hogehoge/db
  と更新して、再トライします。



7.再度、mt-db2sql.cgi の実行

ここでもういちどmt-db2sql.cgiを実行しました。

ん?またまたエラーが....



Loading database schema...


An error occurred while loading data:

Table 'mt_author' already exists at /home/kiyo/public_html/mt-db2sql.cgi line 55.


8.怒涛のテーブルDrop

こんな私でも、上記のエラーの原因はすぐにわかりました。
mt_authorテーブルがすでにありますよっていうエラーですよね。
※すでにあれば、createしなけりゃいいものを、エラーにして終わらせるかぁ??(笑)


確認のために、テーブルを一覧表示してみました。
mysql> show tables ; 
+-----------------+ 
| Tables_in_kiyo  | 
+-----------------+ 
| mt_author       | 
| mt_blog         | 
| mt_category     | 
| mt_comment      | 
| mt_entry        | 
| mt_ipbanlist    | 
| mt_log          | 
| mt_notification | 
| mt_permission   | 
| mt_placement    | 
| mt_plugindata   | 
| mt_session      | 
| mt_tbping       | 
| mt_template     | 
| mt_templatemap  | 
| mt_trackback    | 
+-----------------+ 

予想通りだったので、dropします。
※もちろん、データベースから作り直してもOKですが、私はdropの道を選びました(大袈裟)。

以下はdrop table のスクリプトです。

drop table mt_author;
drop table mt_blog;
drop table mt_category;
drop table mt_comment;
drop table mt_entry;
drop table mt_ipbanlist;
drop table mt_log;
drop table mt_notification;
drop table mt_permission;
drop table mt_placement;
drop table mt_plugindata;
drop table mt_session;
drop table mt_tbping;
drop table mt_template;
drop table mt_templatemap;
drop table mt_trackback;

上のスクリプトをmysql上へコピペすると、下記のように走ります。
mysql> drop table mt_author;
Query OK, 0 rows affected (0.00 sec)

mysql> drop table mt_blog;
Query OK, 0 rows affected (0.00 sec)

....まだまだ続くので以下略....

9.3度目のmt-db2sql.cgi の実行

3度目の正直です。
やっとうまくいきました(感涙)。


Loading database schema...

Loading data...
MT::Author
    1
    2
    3
    4
    5

MT::Blog
    1

MT::Category

MT::Comment
    1
    10
    11

....まだまだ続くので以下略....


10.本当に登録されたか確認

データベース上のレコードをカウントして、データの中身が入ったか確かめてみました。


mysql> select count(*) from mt_entry; 
+----------+ 
| count(*) | 
+----------+ 
|        5 | 
+----------+ 
1 row in set (0.00 sec)

11.mt.cfgを修正

移行が終わりましたので、DataSourceをコメントアウトして無効にします。
27 #DataSource /home/hogehoge/db ←←コメントアウト



とっても疲れました....(笑)。

投稿者 megu : 2004年06月09日 18:40

コメント

meguさん、はじめまして。

こちらを参考にMySQLへの移行をsたものですが
トラックバックしたところ、一度目失敗かと思い
結局こちらに2つ記載されてしまいました。
申し訳ございませんが1つ削除お願いします。

それから質問なんですが、移行後dbフォルダは削除してもかまわないんですか?
普通に考えれば削除なんでしょうが、間違ったら大変なんで聞いてからにしようかと考えたもんですから(笑
スミマセンが教えてくださいませ。

投稿者 やむ : 2005年10月13日 16:29

☆やむさん
はじめましてm(_ _)m

MySQLにされたのなら、dbフォルダは使わなくなるので不要かと思うのですが。
たぶん大丈夫だと思いますよ*^^*
私は(別のことにちょっと使っているので)削除していないので「絶対に大丈夫!」とはいえないのですが。
いったんセーブしておいて、削除して、数日運用してみてはいかがですか?

投稿者 megu : 2005年10月14日 06:10

meguさん、おはようございます!
素早いお返事ありがとうございます。

質問しておきながら申し訳ないんですが。。。
MySQLにしても軽くならないようなので
ogawaさんのmt-db-convert.cgiでBerkeleyDBに
戻してしまいました。ごめんなさい。
ウチの鯖様にSQLiteを使えるようにお願いしてみましたけど
たぶん無理でしょうねぇ・・・。

それにしてもmeguさんは凄いですね!
自宅鯖なのですから。カッコイイ!!

投稿者 やむ : 2005年10月14日 09:02

☆やむさん
こんにちは*^^*
BerkeleyDBに戻されたのですね。

ogawaさんのmt_sql2db.cgi
私はMySQL→PostgreSQLへお引越ししたときに使いました。
http://blog.kiyo.com/archives/2004/08/postgresql_2.html

重たいのはMTそのものが原因かも?
エントリーの数が増えれば増えるほど重たくなるようです。
自宅サーバだと何でも出来ちゃうのですが、
熱中してしまうと時間がいくらあっても足りません。
寝不足になって体を壊しかねませんので、あまり面倒みていなくって...(^^;
このMTもぜんぜんアップグレードしていないのでお恥ずかしいです。

投稿者 megu : 2005年10月15日 00:35

meguさん(*・ω・)ノ*こんにちわ!
そうですかPostgreSQLで使ったんですね。
なるほど便利なものですね~。
わたしのほうはSQLiteのお願いも無視されたままです(笑
まー一個人のワガママに、いちいち付き合ってられるほど
暇じゃないでしょうからねぇ。諦めましょ。

でも自宅だと設定など全部自分でしょうから、一日24時間じゃ足りないでしょうね。
ワタシの頭では、とてもついていけそうもありません。
このエントリーのデータベースの作成でさえ
面倒そうでチンプンカンプンでしたから( ̄∇ ̄;) ハッハッハッ
だから尊敬しちゃいますよ。凄いです。
アップグレードをしなくても全然恥ずかしくありませんよー。
これだけのことしちゃってるんですから。
威張ってください!!(笑

結局その後、3.2-ja-2が出たんでDBのままアップグレードしてみました。
でも大きなエラーは無いものの今までのカスタマイズが半分ぐらい使えなくなってるような気がします。
はずしたり手直ししたり。。。ε-(ーдー)ハァ大変ですぅ。

投稿者 やむ : 2005年10月17日 11:23

☆やむさん
こんばんは*^^*
MT3.2、私もいれてみたいなと思います。(って言ってみるばかりで(^^;;;)
やむさんのサイト、お邪魔してきました。
すごくおしゃれでビックリです!
私のデザイン恥ずかしい....(こんなんしかできなくって涙)
ハロウィンの飾り付け、うちもしているんですよっ。
そのうちエントリーしようかしら*^^*
これからもどうぞよろしく。

投稿者 megu : 2005年10月17日 23:25

コメントしてください




保存しますか?