先日、mixiのMovable Typeのコミュニティで、以下のような質問がありました。
今度、サーバーを移転しようと考えています。
そのためMTを移行しなければなりませんが、MTの機能としてバックアップを取れるのは、エントリーや、コメントTBなどです。
各種設定など一括してサーバー移行に使う方法はありませんでしょうか?
Movable Type 4には、バックアップと復元の機能がありますので、それをサーバーの移行に使うことができます。
しかし、3.3xにはエントリー(およびコメントとトラックバック)の書き出しと読み込みの機能しかなく、ブログ全体をまとめて完全に移行することができません。
ただ、データベースとしてMySQLを使っていて、かつサーバーにphpMyAdminがインストールされていれば、phpMyAdminを使ってデータベースを丸ごと移転することが可能です。
その方法を紹介します。
1.移転元のデータベースをphpMyAdminでバックアップ
まず、移転元のサーバーで、phpMyAdminを使ってデータベースをバックアップします。
phpMyAdminにログインし、Movable Typeのデータが入っているデータベースを操作する状態にします。
そして、ページ上端にあるメニューで、「エクスポート」をクリックします。
これで、エクスポートのページが表示されます。
デフォルトでは、「データ」の箇所の「長いINSERT文を作成する」にチェックが入っていますが、このチェックをオフにします。
また、「ファイルに保存する」にはチェックが入っていませんが、このチェックをオンにします。
「実行する」のボタンをクリックすると、データベースのバックアップが行われ、その結果のファイルをダウンロードする状態になります。
適当なファイル名をつけて、自分のパソコンにファイルを保存します。
2.バックアップしたファイルの分割
これまでに長期間Movable Typeを使っていた場合、バックアップしたファイルのサイズがかなり大きくなっていると思われます。
そのままだと、移転先のサーバーにファイルをアップロードする際に、一度にアップロードしきれないこともあります。
そこで、バックアップしたファイルをいくつかに分割して、少しずつアップロードできるようにします。
移転先のサーバーにもよりますが、分割後の1ファイルあたりのサイズは、1~3MB程度に抑えておくのが無難だと思います。
バックアップしたファイルの中には、「CREATE TABLE テーブル名 ( ・・・ );」のような文と、「INSERT INTO テーブル名 ( ・・・ ) VALUES ( ・・・ );」のような文が多数入っています。
CREATE TABLEはデータベースにテーブルを作成する文で、INSERT INTOはテーブルにレコードを作成する文です。
文と文の間であれば、どこでファイルを分割しても構いません。
なお、phpMyAdminのバージョンによっては、バックアップしたファイルの先頭の方に、「use database 'データベース名'」のような行が入っていることもあったような記憶があります。
もしそのような行があれば、その行は削除しておきます。
3.移転先にMTとプラグインをアップロード
次に、移転先のサーバーに、Movable Type本体と、これまで使っていたプラグインのファイルを、すべてアップロードします。
また、mt.cgi等のCGIのファイルでは、パーミッションを適切に設定して、実行可能な状態にします。
ただし、この時点ではアップロードだけを行い、インストールの作業は行いません。
なお、移転先ですでにインストールまで行っている場合は、以下の手順で、移転先のサーバーのデータベースをクリアしておきます。
- 移転先のサーバーで、phpMyAdminにログインします。
- Movable Typeのデータが入っているデータベースを操作できる状態にします。
- Movable Type関連のすべてのテーブル(テーブル名の先頭に「mt_」がついているもの)を削除します。
4.移転先のサーバーにデータベースを復元
次に、移転先のサーバーで、phpMyAdminを使ってデータベースを復元します。
phpMyAdminにログインして、Movable Typeのデータを格納するデータベースを操作できる状態にします。
そして、ページ上端にある「インポート」のリンクをクリックします。
これで、「インポート」のページが表示されます。
「インポートするファイル」の箇所で、バックアップしたファイルの名前を指定し、「実行する」ボタンをクリックします。
バックアップのファイルが大きくて複数のファイルに分割した場合は、この作業を繰り返して、分割したファイルを1つずつ復元します。
5.mt-config.cgiの作成
次に、旧サーバーのmt-config.cgiを元にして、新サーバー用のmt-config.cgiを作成します。
旧サーバーのMovable Typeのディレクトリからmt-config.cgiをダウンロードし、以下の各設定を新サーバー用に書き換えて、新サーバーのMovable Typeのディレクトリにアップロードします。
- CGIPath
- StaticWebPath
- Database
- DBUser
- DBPassword
- DBHost
6.新サーバーのMovable Typeにログインする
ここまでの作業が正しく行われていれば、新サーバーのMovable Typeにログインできる状態になります。
ログイン時のユーザー名とパスワードは、旧サーバーで使っていたものになります。
7.サーバー移転と同時にMT4にアップグレードする
ここまでの手順を使うと、サーバーを移転するとともに、Movable Type 4にアップグレードすることもできます。
上記の手順3.で、移転先のサーバーにMovable Type 4(およびMT4用のプラグイン)をアップロードすればOKです。


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんにちは、ギーチです。
> 2.バックアップしたファイルの分割
ファイルを分割して何度かアップロードを図りましたが、エラーが出てしまいます。
分け方を変えてみたりもしましたが、エラーが出ます。エラーの出方はそれぞれ違うようですが、どんな原因が考えられるでしょうか?
>渡辺 ギーチさん
こんにちは。
エラーが出たとのことですが、具体的にどのようなエラーメッセージが表示されたでしょうか。
それが分からないと何とも言えません。
壱さん、こんにちは
すみません。エラーメッセージは下記の通りです。
ちなみに、元のサーバーがMTのバージョンは、3.35です。
エラー
SQL パーサにバグが見つかることもありえますが、まずはクエリをよく見て引用符の数や種類に間違いがないか確認してください。クォートされていないテキスト領域にバイナリファイルをアップロードしたからクエリが失敗したということもありえます。MySQL のコマンドラインインタフェースを利用してクエリを実行してみてもよいでしょう。下に MySQL サーバのエラー出力が出ているようなら問題の解析に役立つかもしれません。それでも解決しないか、コマンドラインでは成功するのにパーサでは失敗する場合は、SQL クエリの入力データを実際に問題を起こしているクエリひとつに絞り込んでから、以下の「CUT」セクションにデータを添えてバグ報告を送ってください:
----BEGIN CUT----
(以下、ランダムな文字列が続きます。)
>渡辺 ギーチさん
こんにちは。
おそらく、バックアップしたファイルの区切り方を間違っています。
説明にも書きましたが、CREATE文やINSERT文の途中でファイルを切ると、お書きになったようなエラーが出ます。
また、バックアップする際に、バックアップの設定の「長いINSERT文を作成する」は、必ずチェックをオフにしてください。
これがオンになっていると、複数のSQLを1つにまとめた形でバックアップが作られ、ファイルを分割しにくくなります。