2012.02.17
Movabletypeを別サーバーに移動/コピー・・・(Movabletype)
Movable typeの最新版は、MT-5.xだが、今でも3.35を使っている。
理由は、MT-3.xの時代に散々カスタマイズを施し、TextのFormatterなどもこのブログの記事のようにコマンドラインの記述に都合が良いように書き直して、Pluginとして使っているからである。さらには、数人の友人がブログページを開いているので、MMIが変わると戸惑うことを恐れるからである。
さて、自宅内で運用しているサーバーが壊れたことを考え、別の予備サーバーを立ち上げ色々なサービスの設定を行っているが、ブログを移設するのに手間取ったので、下記にその顛末を書いておく。
1. ディレクトリーのコピー
(1) mt.cgiの入っているディレクトリーならびにブログの公開ディレクトリーをrsyncなどを使って全て
予備サーバーにコピーする。
(2) CGIPathの変更
mt-config.cgiに書かれているCGIPathを予備サーバーのURLに変更する。
例: CGIPath http://abc.myhome.jp → CGIPath http://xyz.myhome.jp
2. 元のサーバーでブログのDBをdump
# mysqldump --default-character-set=binary -u USER -pPASS BLOGDB > abcblogdb
USER, PASS, BLOGDBは、設定した正しい値を入れること。
予備サーバーでリストア (1) 元のサーバーでdumpしたDBデーターをftpなどで予備サーバーにコピーする。
(2) sedを使ってURL名を変更10MB近いデーター量で、数分要した。
# sed -e "s/abc.myhome.jp/xyz.myhome.jp/g" abcblogdb > xyzblogdb
(3) DBのリストア
# mysql -u USER -pPASS BLOGDB < xyzbogdb
ERROR 2006 (HY000) at line 66: MySQL server has gone awayとエラーになる。
66行目でエラーというので66行目を見ると、
LOCK TABLES `mt_author` WRITE; となっている。
ここで、LOCK TABLESとなっているのが悪いのかと思って、UNLOCK TABLESにsedを使って書き換えてみたが、今度は別のエラーになって、構文のエラーなのでマニュアルをよく読めと言ってくる。
ここでお手上げかと思ったが、Netで色々調べたら、mysqlの転送の最大パケット数が不足していることが分かった。
エラーになった行に、たまたまLOCK TABLESの語句があったので、これが原因かと思って混乱してしまった。ともかく、以下のようにpacket数を修正した。
# vi /etc/my.cnf
・
[mysqld]
・
max_allowed_packet = 1M → 32Mに修正した
ちなみに、[mysqldump]のセクションでは、max_allowed_packet = 16M となっていた。
mysqlを再スタート
# /usr/local/etc/rc.d/mysql-server restart
ここで、再度DBのリストア
# mysql -u USER -pPASS BLOGDB < xyzbogdb
今度はエラーなく無事終了した。
3.ブログの再構築
mt.cgiをブラウザで開いて、ユーザー名。パスワードを元のサーバーで用いていたのを使いログインし、複数のブログを順次開いて、公開パスが予備サーバに対応したものになっていることを確認し、サイトの再構築を行う。
これで、無事終了である。書くと複雑のようだが、分かってしまうと沢山のページを有するブログであっても短時間で引越しができる。