猫型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

執筆者:

関連記事

sqlserver

SQL Server Management Studio でテーブルが変更できない

私は以前はOracleをメインで使用し、そしてここ数年間はMySQLをメインで使用しています。SQL Serverは少しかじった程度といえるでしょう。 こんな私が選択したのはSQL Server Ma …

MySQLにローカルから接続する

リモートから接続するユーザー リモートから接続するユーザーは以下のような感じで作成できます。 $mysql> grant all privileges on *.* to username@’% …

mysql

MySQLの予約語はバッククォーテーション囲んで使用する

列名に”from”や”to”を使用したいことがあるはずです。 そうした場合は”`”(バッククォーテーション)で囲みましょう。 insert into m …

sqlserver

SQLSERVER インストール後にDataをDドライブ(別ドライブへ)移動する方法

通常OSはCドライブ、データはDドライブなどの別ドライブを使用します。 SQLSERVERではデータの肥大化が起こりうる実データファイル(mdfやldf)をCドライブ以外に変更したい場面は多いはずです …

mysql

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.x.xx’ (13)

MySQL ERROR: Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13) はSELinuxによる接続 …