:ブログ移設完了

2012/06/26

ロリポップからさくらインターネットへ、レンタルサーバーの変更が完了した。
ブログの移設に問題が発生して、作業は思った以上に難航したが無事に解決できた。

gan.stドメインはそのままなのでアクセスする分には何も変わってないはず。


レンタルサーバーに置いてあるコンテンツは、自分と妻のブログが1つずつ、
掲示板が2つ、実家に写真を送るためのプライベートスペースが1つ。

ブログには Nucleus CMSを使っているので、
この機会にバージョンを3.41から3.64へアップグレード(`・ω・´)

が、しかし、アップグレード云々の前にデータのリストア時にエラー多発Σ( ̄□ ̄;)!
旧バージョンのまま移設すら失敗してしまう。

Nucleusのフォーラムにも、さくらインターネットのMySQLバージョン変更時に
似たような症例が報告されていたので、その方が解決した方法も試してみたが
こちらでは効果なし。
※xamppでローカルにサーバー環境を作ってNucleusをインストール、
そこからバックアップを作成、さくらのサーバー上にリストアするというもの。

しかし、リストア失敗はMySQLデータベースのバージョンが原因なのは明白。
いろいろと対策を講じては試して失敗を繰り返し、
ブログ設置担当だった妻はもうお手上げ状態。

最悪の場合、過去のデータを何か別の方法で保存して、
新しく空っぽの状態で再スタートという方法もあるが、やはりスマートではない。
何とか過去のデータを復元した上で、Nucleusのバージョンアップもすべき。





そこでプログラマ的思考から考えた方法は、ブログのリストアプログラムを
使わず、データベース内のデータを直接移設するというもの。

ロリポップもさくらもデータベース管理はphpMyAdminという
サーバー上のプログラムを使うので、上手くいけば
phpMyAdminのエクスポートとインポートで処理できるはず(`・ω・´)

と思ったが、ここでも問題発生。
ロリポップでエクスポート→さくらにインポート時もエラーが発生('A`)

エクスポート・インポートに頼らず、手作業でデータを
コピーすることは可能だったが、過去のブログ記事が何千件とある上に
ロリポップのphpMyAdminは以前から日本語が文字化けしており、
文字化けのままコピーしてしまうとブログでも文字化けして使い物にならない。
データベース内の文字化け

文字コード指定の問題だろうから、すぐに解決できると思ったのだが、
何をどうやってもダメ。設定自体はUTF8で合っているだけに厄介。

いろいろ調べてたどり着いた結論は、
phpMyAdminの設定ファイルを変更することだったが、
ロリポップではユーザーがアクセスできないファイルなので対処不可能。





いよいよ最終手段を使うしかなくなってきた。

ブログでは文字化けせずに表示できているので、同じようにデータベースから
文字化けさせないで情報を読み込み、さくらのデータベースに書き込む
phpプログラムを自分で作るのだ(`・ω・´)

少し開発時間が必要なので避けたい方法ではあるが…
と思っていたら、得意言語のC#でMySQLデータベースを扱えることが判明。
MySQL Connector/Netというコンポーネントである。

MySQLのサイトからダウンロードできる。無料だが登録が必要。
過去に仕事でデータベース触ったときにアカウントを作っていたので
新規登録必要なくダウンロードできた(*゚ー゚)

早速C#でテストプログラムを作ってみたが、
ロリポップもさくらも外部からのデータベースアクセスを許可しておらず頓挫('A`)
やはり直接サーバー上で動かせるphpプログラムを書くしかないのか…。





新バージョンのNucleusにデータをリストアしてエラーが多発する際に
エラー文とデータ内容(ここでは文字化けしていない)が出てくるので、
この構文を解析して文字化けしていない情報を取り出し、
これをさくらのデータベースに書き込むプログラムを作ることにした。

データベースに書き込むSQL文がそのまま表示されていたので都合がよい。
エラー出力はHTMLなので、ソースから余計なHTMLタグを消す作業から。

エラー内容は、
Table 'gan_blog.gan_nucleus_item' doesn't exist
訳:テーブル「gan_blog.gan_nucleus_item」は存在しません。
↑が記事の数だけ、

Table 'gan_blog.gan_nucleus_comment' doesn't exis
訳:テーブル「gan_blog.gan_nucleus_comment」は存在しません。
↑がコメントの数だけ出てる。

これらのエラーが物凄い量で出てくるので今まで見落としていたが、
他にも最初のエラーとして
SQL エラー: The used table type doesn't support FULLTEXT indexes
というものを発見。

ひょっとして、このエラーが原因で、記事とコメントの追加に失敗しているのかも。
FULLTEXTって何よ?と調べるところから始まり、
ロリポップのデータベースで該当する項目を探して発見。

FULLTEXT

どうもこのインデックス項目は使われている気配が感じられないので、
思い切ってFULLTEXTが指定されているインデックスを削除した上で
ブログの管理上からデータベースのバックアップを取り
さくらの新バージョンブログの方でリストアしてみたら、
別のプラグイン系で若干のエラーは出たものの
文字化けせずに記事とコメントのリストアに成功(*゚∀゚)=3

先ほどのプラグイン系のエラーは何だったのか不明だが、
特に問題なく動作している。しばし様子見で気をつけることにはするが、
基幹部分ではなくプラグインなので大きな問題にはならないだろう。





無事にブログを移植できたので、gan.st管理会社にDNSの変更届けを出し、
めでたく移転作業完了。今回の問題は久々に難題だったので
解決したときの達成感が半端ないけど、業務ではないので社長に
意気揚々と報告できないのが残念。

仕事してるふりして業務時間大量に使ってスミマセンでした(;´Д`)

ID:5965

COMMENT


No comments yet
 

ADD COMMENT

TRACKBACK LIST


このエントリにトラックバックはありません

TRACKBACK URL


http://www.gan.st/gan/blog/action.php?action=plugin&name=TrackBack&tb_id=5965