Amazon Product Advertising APIのおかげでサーバ引越

ある日、ブログで使用しているamazonの商品を表示するスクリプトが動かなくなった。
あれ、どうして?
amazonの「Amazon Product Advertising API」が8月15日から認証のための電子署名付きリクエストが必須となるのを忘れてた。
あわててPHPのプログラムを変更したが動かない。
hash_hmac 関数を使うのだが、調べてみるとPHP4では、「PECL hash」というモジュールがサーバにインストールされていないとだめらしい。
自分が使っているレンタルサーバではセキュリティの観点から「PECL hash」がインストールしてもらえないことが判明。
PHP5 なら hash ライブラリの hash_hmac 関数が利用できるようだ。
色々考えた結果、PHP5に移行する事にした。
そのためには、別なサーバに引越しをしなければならない。
今使っているレンタルサーバでも、別なサーバに移せばレンタル料金も継続されることがわかり、サーバの引越を決意。
引越作業開始!
以下の作業でOKと思っていた。
1)旧サーバからFTPで全データをダウンロード。(サイズ約2.4GB)
2)新サーバへFTPでアップロード。
3)データベース(MySQL)のデータをバックアップ。(mysqldump)
4)データベース(MySQL)のデータを復元。(mysql)
しかし落とし穴があった。
FTPは問題なし。
ただ2)作業で、ディレクトリの属性を変える作業はちょっとめんどうだった。
問題はデータベース(MySQL)。
3)と4)の手順では復元できなかった。
理由は漢字コード。
旧サーバは、MySQL4.0.27 漢字コードはEUC-JPのみ
新サーバは、MySQL5.1.22 漢字コードは選べる。UNICODE、EUC-JP、SHIFT_JIS
旧サーバでは、デフォルトの漢字コードをEUC-JPにしか設定できなかったが、UNICODEのデータもブログ等からは、問題なく使えたので、EUC-JPとUNICODEが混在したデータとなっていた。
いざmysqldumpでバックアップを作ると、漢字コードはすべてEUC-JPとして処理されるためUNICODEのデータが文字化けしてしまうのである。
試行錯誤した結果以下の方法で処理した。
・EUC-JPのテーブルは、dumpデータの中からUNICODEの部分だけを削除して復元。
UNICODEのテーブルは、
・ブログ(MovableType)の分はブログツールの保管と復元で処理。
・自作プログラムのテーブルは、テキストデータを吐くプログラムを作成して処理。
ああ、とても時間がかかった。
おおよそトータル移行作業時間は丸2日。
なんとか無事に引越できてよかった。
データベースは漢字コード別に整理したので次のサーバ引越は簡単なはず!

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください