れさくのブログ

れさくのブログ

*

dumpした大容量sqlファイルでDBを構築-IT版本当にあった怖い話(レベル8)

   

mysql
途中までは、よくある話。

「dumpしたsqlファイル送るからそっちのローカルに構築してー。」
「らじゃー」

dump.sqlをデスクトップのworkという名前のフォルダに放り込んだよ。

mysql -uroot
source ~/Desktop/work/dump.sql;

結果、SQLエラー。

「あれー?このsqlファイルってどうやってdumpしたの?DB作るところから書かれてる?テーブルは無条件にcreate?」
「んーとねー、phpMyAdminで適当にエクスポートしたからわかんなーい」
「がっでむ」

適当なサイズのsqlファイルならエディタで開いて中身確認してよきように書き換えて実行すればいい。

でも超巨大なsqlファイルだったら?

普通のエディタでは開きません。

いろいろ試した結果、Macで大容量ファイルを開くにはGrep が良いという結論に。
(もっと良いのあったら教えてください)

Grepでdump.sqlを開く。
要は最初の方の処理だけ見られれば良いのです。
全部開く必要はありません。

覗いてみた結果、CREATE DATABASEが書かれてないことがわかりました。
書かれていないなら書けばいい?
そう、普通のサイズならね。
超巨大sqlファイルなので、何か(CREATE DATABASE)を書いて保存する行為は怖いから避けることにする。

ということは、受けて側のDBの中身を空にする必要がある。
けどMySQLには「DBを空にする」というコマンドはありません。
(「テーブルを空にする」ならあります。)
なので一旦DBを削除して、それから同名の空っぽのDBを作ります。
これで「DBを空にする」ことができます。

しかし怖いですねー。
DROP DATABASEなんてあまり実行したくありません。
今回のケースはローカルにテスト環境を作るから、まあいいです。
本番環境では超注意。
っていうかDROPが良いか悪いかではなく、作業計画をきちんとたてましょう。

そういえば昔昔の大昔、こんな会話を聞いたことがあります。
(私の周囲での話ではないよ)

「ぼくねー昔ねー本番環境で顧客10万人分のDBを間違ってDROPしちゃったんだよねー」
「こわいですねー(そーゆーのクチに出さないでよー)」

IT版本当にあった怖い話。(レベル8)

そんなことを思い出していたら空のDBができたので、dump.sqlをコマンドで流しこめます。

MySQLにログインして
mysql -uroot

レッツ実行。
mysql> DROP DATABASE test;
mysql> CREATE DATABASE /*!32312 IF NOT EXISTS*/ test /*!40100 DEFAULT CHARACTER SET utf8 */;
mysql> USE test;
mysql> source ~/Desktop/work/dump.sql;

こうしてDBができました。

 - Laravel, MySQL

adpc

adpc

Message

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

mysql
MySQLをチューニング1:DB構造を見直す

データベースが重いからMySQLをチューニングするに書いた四天王の最初のヤツ「D …

mysql
データベースが重いからMySQLをチューニングする

むかーしむかし、あるところにMySQLがありました。 おじいさんは(炎上案件の) …

【ファントムシャットダウン】slaveのレプリケーションが止まる原因【エラー1053】

これまでのあらすじ slaveのレプリケーションが止まったらザ・ワールドであるこ …

aws
AWSの最適化とか設定を検討しながら作業メモがてら意識の高い雑談

AWSが非常に優れたベストプラクティスでサステイナブルなソリューションでありアク …

MBAにLaravelな開発環境を構築してみる(前編)

Laravelを使います。 今世界中で注目されているフレームワークです。 まず響 …

マイグレーション~DB構造の変遷を共有する

PHPファイルをローカルで作業してテストして、gitでcommitする。 これは …

mysql
MySQLをチューニング3:MySQLの設定見直す

データベースが重いからMySQLをチューニングするに書いた四天王の三人目「MyS …

mysql
コマンドラインでMySQLを操作するまとめ(復習)

phpMyAdminなどで運用中心にやっているとコマンドラインを忘れがち。 なの …

MBAの英字キーボードをKarabinerで使いやすくする

れさくさんの貧弱なMBAを見かねて、MBAが貸与されました。 なんとメモリは2倍 …

MBAにLaravelな開発環境を構築してみる(後編)

-これまでのあらすじ- php -v 「ワタシハPHP5.5デス」 phpinf …