猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

MySQLのmysqldumpのエクスポートとインポート

投稿日:2012年12月8日 更新日:

ダンプはバックアップやテストに大活躍してくれます。
しかし、データベース単位でエクスポートしても、インポートには随分時間がかかったりします。
その辺は別の機会にしますが、今回は基本コマンドのまとめです。

エクスポート

・ダンプですべてのデータベースを取得する
# mysqldump -u USER -pPASSWORD --all-databases > /出力先

・データベース単位でダンプを取得する
# mysqldump -u USER -pPASSWORD --database DATABASENAME > /出力先

・複数のデータベースのダンプを取得する(スペース区切り)
# mysqldump -u USER -pPASSWORD --databases DATABASENAME1 DATABASENAME2 > /出力先

・テーブル単位でダンプを取得する
# mysqldump -u USER -pPASSWORD --database --table TABLENAME > /出力先

・複数のテーブルのダンプを取得する(スペース区切り)
# mysqldump -u USER -pPASSWORD --database --tables TABLENAME1 TABLENAME2 > /出力先

・条件を付けて取得する
#mysqldump --opt -u USER -pPASSWORD DATABASENAME TABLENAME "-w 100 <= id and id <= 200" > /出力先
(注意)
・-pとパスワードの間は開けてはいけません。-pのあとパスワードを記入しなければ、パスワードの問い合わせがあります。
・出力先に指定するファイルの拡張子は何でもいいと思いますが、私はよくデータベース名yyyymmdd.dmpなんてしてます。
 ダンプの中身はテキストなので、自分で編集もできますよ。

インポート

インポートするときは、ただのmysqlコマンドになります。

mysql -u USER -pPASSWORD DATABASENAME < /[ダンプ]
(注意)
・データベースを複数指定して取得したダンプでも、インポートする際は、1つ1つデータベースを指定してインポートします。
・エクスポートしたデータベース名と、インポートするデータベース名は一致している必要があります。
 もし一致していなければダンプの中の名称を変更するか、新しくデータベースを作成する必要があります。
 インポート時にデータベースを指定しても、ダンプの中にUSE コマンドがついているわけです。
・–database DATABASENAME –table TABLENAME で取得したダンプにデータベース名はつかないので、どのデータベースにも入れやすいです。
 テーブル名を複数スペース区切りでいれた場合も同じです。
・データベース単位で取得したダンプはテーブル単位では復元できなさそうです。ダンプの編集等が必用とおもわれます・・・
・ダンプにはdrob-tableがあるので、データが一旦消えてダンプの状態になるので注意!
・ダンプのインポート中にはLOCK TABLES `TABLENAME` WRITE; ~ UNLOCK TABLES; となるので注意!

デフォルトの設定のままダンプのインポートはレコードサイズにもよりますが、○百万行になってくるととにかく時間がかかります。
本番データの復旧で初めてこの症状にあったらショック死確実です。

mysqldump –opt …

–optコマンドをつけてダンプを出力すれば、多少は早くなるかもしれませんが、全然十分じゃありません。

テストが可能な方は、実際のデータ量を使ってチューニングをしておくことを激しくお勧めします。
その方法は別の機会にでも。

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL

執筆者:

関連記事

mysql

MySQLのwait_timeout

データベースやWebサーバーは、実際に稼働してから問題が多発します。 データ量が増えてきたり、アクセスが増えてきたらまずレスポンスの問題が発生するでしょう。 経験のあるエンジニアがいれば、十分なテスト …

sqlserver

SQL Server Browser を起動する方法

SQL Server構成マネージャーより起動できるはずが、なぜか開始も停止もできない。 コントロール パネル > システムとセキュリティ > 管理ツール > サービス を見ると、SQL Server …

select insert

私は以前SQLの順番にinsert selectと呼んでいて、笑われたことがあります。 select insertだ!と当時の上司に言われました。 なるほど、副問い合わせのselectが実行されて、そ …

sqlserver

SQL Server Management Studio の「上位200行の編集」を変更したい

恐らく私が十分に使用できていないだけで、機能はたくさんありそうなSQL Server Management Studio。最近新しいものに入れ替えたら(OS毎再インストールするハメになったのですが)、 …

mysql

MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)でSELECT

タイトルの通り MySQLのChar型は”(ダブルクォーテーション)ではなく'(シングルクォーテーション)で囲ってSELECT しなければなりません。 正確には、そうしなければパフォーマン …