あるサイトをMovableTypeで構築。
そのサイトのテスト用のミラーサイトを用意するために、データの同期をしようと色々試してみた。
まずは、公式サイトに載っている方法で試す。
ブログの完全バックアップと、データベースのバックアップ
バックアップしたブログの復元
まず失敗。
バックアップ時に出来上がるXMLを復元で読み込ませるのだが、パースエラー。
XMLで一部文字化けがあるみたい。
文字化け部分を修正すると、
バックアップは成功し、テストサイトで復元成功。
各種画像ファイル、カスタムフィールド、テンプレートなどデータ一式ちゃんと復元されていた。
再構築などしサイトも復元させる。
そして、ページの確認。
ん、なんかおかしい。
サイドナビの画像がおかしい・・・
CSSスプライトで画像は指定しています。
ちなみに、CSSスプライトというのは、通常複数の画像でナビゲーションなど生成するが、
その複数画像を1枚の画像をずらして、
表示する部分と非表示部分をCSSで調整して表示する技術です。
この技術を使うと、サーバーへのリクエスト回数を減らすことが出来、
トラフィックが気になるサイトなどではパフォーマンス改善にとても有効です。
で、話は戻る。
ナビ画像がおかしい。
CSSのclassを確認すると、「C22」「C23」などとなっている。
テンプレートの設定で、class名にC+カテゴリIDを指定する仕組み。
■22や23のIDのカテゴリなんか存在しない。
↓
■つまりCSSで定義していない
↓
■CSSスプライトが機能しない
↓
■ナビ画像が正しく表示されない
このような状態となったのが原因でした。
↓こんな記事も発見
バックアップと復元に気をつけよう
標準のバックアップと復元機能を使うと、MTでエントリーしたデータのIDは引き継がれないようだ。。
これじゃミラーとはならない。。。
ということで、標準機能での復元は断念。
結局、次の方法でやることになった。
■MySQLのダンプを取る
↓
■ダンプ内のサーバー依存のパスを書き換え
↓
■コピー先のDBにダンプファイルをリストア
これしか完全なミラーでデータを同期する方法はないようだ。
ダンプとかサーバー依存パスがあるので敬遠して、
MT標準機能でやろうとしたのに、
結局ダンプになってしまった。。
何事も試してみないとわからんな。。
