カテゴリー
Develop

Movable Type 6アップグレードメモ(MySQL 4 > 5.6アップグレード含む)@ heteml

2017年8月にheteml上で動作しているこのMovable Typeを5から6にアップグレードした。
々ややこしかったので、少し記憶が曖昧だがメモしておく。
うまくいかなくても責任は負いかねますので、自己責任で参考にして下さい。

簡単に済まなかったいくつかの理由・・・

とりあえず、Movable Type(以降MT)の「バックアップと復元」を使ってサクッと終わらせようと思ったが、タイムアウトで終了せず。php.iniでタイムアウトを延長したが、やはりタイムアウト。

ということで、「MySQL のバックアップ」で対応することにする。

MT6は、DBが「MySQL 5.x」以上が必要とのこと。(Movable Type 6 へのアップグレード

本ブログで使っていたDBはMySQL 4。ということで、phpMyAdmin(以降PMA)からDBをエクスポートしてMySQLをしようとしたが、「2016/07/27 20:08 「旧バージョン」のデータベース管理ツール『phpMyAdmin』 提供終了のお知らせ」とのことで、MySQL 4にPMAでアクセスNGなことが判明(涙

簡単に済ませるつもりが、そうは問屋が卸さないらしい・・・。

仕方がないので、「SSH接続でMySQL 4からエクスポート」+「MySQL 5.6にインポート」してから、「MT6にアップグレード」することにする。

MySQL 4からエクスポート

まず、既存ブログのデータをエクスポートする。

話が前後するが、後のインポート工程で以下エラーが出たので、旧MTのコンパネからトラックバック、操作ログ系の情報を削除しておく。(これで出力されるSQLが90MBから30MBまでサイズダウンできた)

#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 ‘2007-03-09 11:35:05′,NULL,'2007-03-09 20:35:05′,NULL,0,1,'24469′,'ping','new'),(‘ at line 1

続いて、以下情報を参考に作業を進める。

Tera Termとか久しぶりだなと思いつつ、SSH接続でいきなりエラー発生(涙

Windowsコンパネで「Windows の機能の有効化または化」でTelnetクライアントを有効にする必要あり(要再起動)とのこと。再と以下のエラーが発生する。

171031-1.png

とりあえずSSH接続できるようにして、上記サイトに書かれていた以下コマンドを入力して実行。

mysqldump --single-transaction -u {mysqlのアカウント名} -p{mysqlのパスワード} -h {mysqlサー名} {対象DB名} > {出力先.sql名}

エラー(涙

mysqldump: Error: ‘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 ‘SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILE' when trying to dump tablespaces

どうもver.5でSQLコマンドが変わっているらしい。どこが変わったのかググってもよくわからず・・・。(さくらインターネットではver.4用のコマンドが別途用意されているっぽいが、hetemlにはそういうツールは無さそう・・・)

とりあえずショートハンドを使わず、ベタにコマンドを打ってみる。

mysqldump --single-transaction --user={mysqlのアカウント名} --password={mysqlのパスワード} --host={mysqlサーバー名} {対象DB名} > {出力先.sql名}

再度エラー発生(涙

しかしサーバ上にSQLが出力されていたので、不安な気持ちを抱えつつ、出力したSQLデータをダウンロードして先に進む。

MySQL 5.6へのインポート

エクスポートしたSQLをPMAを利用して、新DBにインポートしていく。

まず、エクスポートしたMySQL 4のSQLデータには、以下修正が必要(データベースの移行方法)とのことで、さくっと置換。

  • MySQL5以上のバージョンでは、SQLに変更が発生しております。以下の記述内容はあらかじめ修正をお願いします。
  • 『TYPE=MyISAM』という記述は、『ENGINE=MyISAM』へ修正してください。
  • 『timestamp(14) NOT NULL』という記述は、『timestamp NOT NULL』へ修正してください。

次に、インポート先のDBをhetemlのコンパネから新規作成。hetemlのphpMyAdminのインポートタブに

  • フォーマット:SQL
  • 文字:UTF-8
  • SQL互換モード:「MYSQL40」

上記設定して、インポート実行+成功。

旧ブログの維持

DBが正常出力できているか不安だったので、ログの完全消失した場合の予防として、旧ブログを残したまま、新MTに切り替えようと考えたのだが、「データベースのダンプデータによる移行」によると、「※移行先サーバーのアップロード先は、移行元サーバーと同じディレクトリパスに揃えてください。」とのことで、同サーバ上で別ディレクトリに新MTを展開するのは無理らしい。

ということで、手間なのだけど、旧ブログを別ディレクトリ(blog-oldなど)で動作する状態にした上で、新MTを現存場所に展開することにする。(これで最悪アップグレードで過去ログが消失したとしても、旧ログの実体だけは別物として残しておけるという算段)

  • 旧MTコンパネから「ブログURL、ブログパス、アーカイブURL、アーカイブパス」の出力先を変更。
  • 画像ファイルなど旧ブログディレクトリ内のデータ一式を、別ディレクトリ(blog-oldなど)にコピー。

以上で旧MTで動作する旧ブログの展開場所の移動完了。
旧MTから旧ブログの再構築が成功したので、新MTの展開に進む。

Movable Type6へのアップグレード

やっとこ下準備完了。MTのアップグレードに取り掛かる。

続いて、「アップグレード時に、新しいディレクトリにコピーするファイル」を参考に、旧MTの設定ファイルを新MTディレクトリにアップ。

  • mt-config.cgi
    • パス関係、接続DB情報を修正
  • plugins/{追加したプラグイン}
    • 旧MTコンパネの [ツール / プラグイン]でバージョンを確認(私の場合はMT6に存在しないプラグインは「Keystrokes」「mixiComment」の2つ。「Keystrokes」はMT6未対応、「mixiComment」は使ってなさそうだったのでコピーせず。)
  • mt-static/plugins/{追加したプラグイン}
    • 私の場合はMT6に存在しないプラグインは「mixiComment」のみ。これも使ってなさそうだったのでコピーせず。
  • mt-static/support
  • themes/{追加したテーマ}
    • 旧ブログで使っていたテーマだけコピー。

これらが終了したら、新MTディレクトリにブラウザでアクセス。
自動でアップグレード処理が実行されるので、タバコを吸いながら待つ。

動作テスト

正常に動作するか不安なため、投稿と再構築をテスト。

新規エントリー作成テスト

エラー発生(涙

テンプレートに含まれる「MTKeystorokes」関係のコードを「Movable Typeのコメントスパム対策プラグイン「MT-Keystrokes」」を参考にして除去(わたしの場合はEntryテンプレートのみ)。

再度テスト投稿実行。なし。

コメント投稿テスト

投稿にコメントしてみる。問題なし。

再構築テスト

全体を再構築してみる。問題なし。(MT5では1時間必要だったが、MT6では37分に短縮)

旧MT、旧ブログの掃除

新MT、新ブログともに動作に問題なかったので、旧MT、旧ブログ、旧DBを削除。
(これをサボると、1年後にサーバ内を見た時に色々と混乱するので、ここ大事かなと・・・)

以上で終了!
hetemlからの通知メールとかきちんと読んでおくべきだなと反省。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です