MySQL の max_allowed_packet 問題は解決



2008年03月10日

MySQL の max_allowed_packet 問題は解決

前回は、Movable Type のデータベースを
別のデータベースに移そうとして失敗しました。



具体的には、MySQL サーバの max_allowed_packet の
値が低すぎて、SQL の処理を拒否されてたからでした。


サーバ管理者なら MySQL サーバの設定を変えれば
なんてことない問題ですが、なんせレンタルサーバだから。


レンタルサーバ上だと MySQL に限らず
サーバの設定変更は至難のワザです。


されど別の方法で解決したのでブログに載せます。







初めから結論を書きましょう。


% mysqldump -u ユーザ名 -p --add-drop-table \
--default-character-set=binary --skip-opt \
コピー元データベース名 > 一時ファイル1

% iconv -c -f EUC-JP -t UTF-8 一時ファイル1 > \
一時ファイル2

% mysql -u ユーザ名 -p --default-character-set=utf8 \
コピー先データベース名 < 一時ファイル2



一行で書かなきゃ気が済まないナイスガイ向けは


% mysqldump -u ユーザ名 -p --add-drop-table \
--default-character-set=binary --skip-opt \
コピー元データベース名 | iconv -c -f EUC-JP -t UTF-8 \
| mysql -u ユーザ名 -p --default-character-set=utf8 \
コピー先データベース名



一番肝心なのは、一行目の --skip-opt。


最近の MySQL は何でも高速に処理できるように
一計を案じています。


MySQL のデータダンプ(バックアップ)ソフトの mysqldump とてしかり。
後でデータを MySQL に戻す時のことを考えて SQL を吐いています。


これが時として災いの元になったりするんですね。
今回がそうです。







Movable Type の記事文章をのせたテーブル mt_entry を吐いた
SQL 文をじかに見てみてびっくり。


なんと大体 500 記事分をいっぺんに登録するように書いてありました。


一辺に登録できるようにしてあると、処理が早いんですよね。
逆にデータを一つ一つ登録してるとすごく遅くなっちゃう。


中江のエロリチェックの記事は、一つ一つがかなりでっかいです。


その記事を 500 も一辺に登録しようとすると・・・
MySQL サーバも断りたくもなるもんです。


そこで中江は、記事データを一つ一つ登録するようにするよう
mysqldump に指令を出しました。


それが --skip-opt です。






--skip-opt に対応する --opt は何も書かなかったら
標準で指定されてるかのように mysqldump は受け取ります。


この --opt。色々なことを mysqldump にやらせます。


データを一つ一つじゃなく、いっぺんにに登録しろ、
というのも --opt の機能の一つです。


でも今回、中江はそれじゃ困るから、--opt を解除する
--skip-opt を指名したわけでございます。






一行目の --add-drop-table は単なる趣味。
--default-character-set=binary は元データが EUC だったので。


文字コード変換ソフトは nkf の方が好きなんですが
今回は nkf だと間違った処理をしてたので iconv を使いました。


3行目の --default-character-set=utf8 も単なる趣味です。
これはなくても同じだと思うけど。









んで、max_allowed_packet はクリアできたんですけど
肝心の Movable Type がつまづいてまして。


コピーした先のデータベースを Movable Type 4.1 で
アップグレードしたら、見事に文字化け(泣)


移行はまだまだ先になりそうです。

MySQL の max_allowed_packet 問題は解決へのトラックバックURL
http://app.blog.livedoor.jp/uradiet/tb.cgi/51060459
 
リンク
30日間無料教材!

アドセンスアフィリエイトパック
【アドセンスで確実に稼ぐ方法】


30日間のお試し期間あり。30日以内に返品すれば教材代金無料です。

詳細
脱初心者にサイテキ教材

月樹
〜アフィリエイトで月10万稼ぐための珠玉のアイディア集〜

【価格と内容が反比例】


何万円もするネットで稼ぐための教材にひけをとらない、低価格なのにボリューム厚く、内容も濃いすごい教材です。

月樹の詳細
メルマガアフィリバイブル(他称)



【ヌシも日給8万円じゃい】


初心者から上級者まで学べるメルマガ&ブログアフィリエイトの金字塔ッス

詳細レビューと超豪華特典
稼げる人脈の作り方
タグクラウド