巨大なSQLをphpmyadminでローカルにインポートする方法

TIPS 0 Takuya Kobayashi

以前にWordPressで構築された巨大なサイトの一部修正を請け負いまして、ローカルに構築しようとしたわけですが、なんとデータベースが300MBもあり、サイト全体の容量は9GBもありました。

300MBもデータベースがあるとphpmyadminで通常の方法ではインポートできません。そこでインポートの際に工夫した点を書きます。

PHPのファイルアップロード容量を大きくする

構築するのはローカルなのでリソースはほぼ無限です。なので設定を馬鹿でかくしてやります。

php.iniの以下の項目をこのように変更

memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 512M

タイムアウトを長くする

php.iniに以下の項目を記述し、セッションの有効期限を2時間に延ばします。

session.gc_maxlifetime=7200

config.inc.phpも同様に項目を追記してログインクッキーのタイムアウトを伸ばします。

$cfg[‘LoginCookieValidity’] = 7200;

これで何とかデータベースのインポートはできました。それでも細切れでアップロードしましたが…

reCAPTCHAプラグインをDBから無効化

データベースをSearch-Replace-DB-masterでローカルのアドレスに置換し、さあログインと思ったら、reCAPTCHAが「サイト所有者のエラー」を出していてとおせんぼ状態になっていました。ドメインが本番からローカルになったので当然ですね。そこでreCAPTCHAプラグインを無効化しました。

WordPressプラグインのアクティビティは「wp_options」テーブルの「active_plugins」で定義されています。マルチサイトの場合は「wp_sitemeta」の「active_sitewide_plugins」で定義。

値は以下のようになっています。構文としては次のようになっています。
a:プラグインの数:{s:名前のbyte量:名前;…}

a:12:{s:43:”all-in-one-seo-pack/all_in_one_seo_pack.php”;s:36:”hogehogehogehoge”;略}

reCAPTCHAの項目を削除し、a:の数字を1減らせばreCAPTCHAが無効化されます。

DBからパスワードを書き換え

ログインIDを得るにはサイトに?author=1(連番)というクエリを投げるか、データベースの「wp_users」テーブルを見れば分かりますが、ログインパスワードはそういうわけには行きません。パスワードを見る方法はありませんが、任意の文字に書き換える方法ならあります。phpmyadminで「wp_useres」テーブルで任意のユーザーの「user_pass」の値をMD5で任意の文字列を入力して書き換えます。

これでローカルで自由に弄れるクローンが出来上がりました。

--
以上