シニアWebエンジニア M.H.
2026.6.9
少し古い環境のサーバから、新サーバにMovable Typeを移行とアップグレード(バージョンアップ)することがあったので、その記録です。
同レンタルサーバの別プラン(新プラン)への移行です。
抜け漏れがありそうなのでMovable Typeのエクスポート・インポートツールは使わず、ファイル一式とデータベースを丸ごと移行することにしました。
Movable Typeと書くと長いので一部MTと記載している箇所があります。
Movable Type:7.9.9
MySQL:5.6
Movable Type:9.0.4 ※作業時点の最新
MySQL:8.0
まずはMTのバージョンそのままで、サーバの移転作業だけをします。
移行元のサーバのファイル一式をダウンロードしておきます。今回はFTPで地道にダウンロードしました。SSHでサーバに入れるならSSHで入ってアーカイブ(tar.gz)にして落としてくるのが速いです。
サーバ用意しているphpMyAdminでエクスポートしました。こちらもSSHでサーバに入れるならmysqldumpコマンドでエクスポートしてもよいです。レンタルサーバがバックアップを作成・取得できるツールを用意している場合は、それを利用した方が速く確実な場合もあります。
事前に移行先のサイト領域・データベースを作成しておきます。
移行元のファイル一式をアーカイブして、FTPでファイルをアップ、SSHで接続して展開して、所定のフォルダに移動、という方法を取りました。こんなことせずにscpで転送した方がよかったかもしれません。
mt-config.cgi を移行先のサーバに合わせて変更しておきます。
エクスポート作業同様、サーバが用意しているphpMyAdminでインポートしました。
テーブルの文字セットは下記です。(データベースは記載忘れ)
文字セット:utf8
照合順序:utf8_general_ci
データベースの文字セットはutf8mb4、エクスポートしたデータベースをインポートすると、テーブルの文字セット・照合順序が下記になります。
文字セット:utf8mb3
照合順序:utf8mb3_general_ci
今後のために、utf8mb3 → utf8mb4にしておきます。utf8mb3は絵文字などが使えない、後々使えなくなる可能性があるためです。
MySQL :: MySQL 8.0 リファレンスマニュアル :: 10.9.2 utf8mb3 文字セット (3 バイトの UTF-8 Unicode エンコーディング)
MTに同梱されている変換ツールを使用します。
データベースを utf8mb4 に変換する | CMSプラットフォーム Movable Type ドキュメントサイト
SSHでサーバに入って、ツールの置いてある場所まで移動(html/mt 以下にMT一式が置いてあるとする)
cd /html/mt/tools/perlコマンドで実行
perl ./utf8mb4_converter --host=DBホスト名 --user=DBユーザ名 --pass=DBパスワード --db=DB名 --force—verboseオプションを付けないとエラーでない限り何のメッセージも表示せずに完了します
既にutf8mb4になっているメッセージが出る
already utf8mb4データベースがutf8mb4になっているためです。テーブルはutf8mb4にはなっていないので、—forceオプションを付けて再度実行します。
perl ./utf8mb4_converter --host=DBホスト名 --user=DBユーザ名 --pass=DBパスワード --db=DB名 --forceSQLの構文エラーメッセージが出る
DBD::mysql::db do failed: 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 '-dev_db-2 CHARSET utf8mb4 COLLATE utf8mb4_general_ci' at line 1 [for Statement "ALTER DATABASE username-dev_db-1 CHARSET utf8mb4 COLLATE utf8mb4_general_ci"] at utf8mb4_converter line 62.データベース名にハイフンなどの記号が入っているデータベース名(例:username-dev_db-1)を指定しているので、構文エラーとなっています。
エラーメッセージに書かれているように62行目あたりに書かれているデータベース名の指定を変更します。
$dbh->do("ALTER DATABASE $db CHARSET utf8mb4 COLLATE $collate");$dbをバッククォート ` で囲んで、再度実行します。
$dbh->do("ALTER DATABASE `$db` CHARSET utf8mb4 COLLATE $collate");phpMyAdminなどで、テーブルの文字セット・照合順序が変わっているか確認しておきます。
前述の作業が一通り済んだら一旦、現バージョンのMTにログインして、管理画面の操作、全サイトの再構築をして問題なく移行ができているか確認しておきます。
問題なさそうなら、MTのアップグレード(バージョンアップ)作業をします。
MTの新バージョンをユーザサイトにログインして、ダウンロードページから落としてきます。(ユーザサイトはライセンス登録時のメールに記載されています。新バージョン案内メールにも記載されています。)
基本的には公式サイトの指示に従って対応します。
旧バージョンから Movable Type 9 へアップグレードする | CMSプラットフォーム Movable Type ドキュメントサイト
MTの本体ファイルに含まれていない、独自で追加したファイル、MTが出力したファイルを事前にコピーしておきます。
アップグレード時に、新しいディレクトリにコピーするファイル | CMSプラットフォーム Movable Type ドキュメントサイト
この作業を忘れると、不完全な状態でアップグレードされることがあるので注意します。
追加したプラグインを配置忘れた状態でアップグレードをかけたら、プラグインと関連するデータが消えた、という経験をしたことがあります。(この時はデータベースを元に戻して最初からやり直しました)
下記、手順をまとめました。
下記の構成とします(/html/がドキュメントルート)
/html/mt → MT本体一式
/html/mt-static → mt-staticは別フォルダに配置新MTのファイル一式をmt_newなど、別フォルダ名で配置
/html/mt_new
/html/mt-static_new現MTに含まれるコピーが必要なフォルダ・ファイルを配置
/html/mt_new/mt-config.cgi
/html/mt_new/plugins/追加したplugin
/html/mt_new/themes/追加したテーマ
/html/mt-static_new/追加したplugin
/html/mt-static_new/support現MTフォルダをmt_oldなどにリネーム
/html/mt → /html/mt_old
/html/mt → /html/mt-static_old新MTフォルダをリネーム
/html/mt_new → /html/mt
/html/mt_new → /html/mt-static後はMTのログイン画面に入って、画面の指示に従えばアップグレードできます。
今回は、7.9.9 → 9.0.4 と2バージョン上げましたが、問題無くアップグレードできました。
この記録がMTのサーバ移転作業をされる方の参考になれば幸いです。
関連する記事
この人が書いた記事