猫型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でフラグの列でSELECTする。(複合インデックスの使用条件)

status=’1’とかdelete=’0’といった条件はよく使用することでしょう。 そこでフラグにはどのデータ型がベストなのでしょうか。 INDEX1 …

mysql

utilitiesのmysqlfailoverを使う(2)

前回の utilitiesのmysqlfailoverを使う(1)で設定・起動は完了しています。 私の目的は2台のMySQLサーバーを定期的に入れ替えてメンテナンスすることです。 今回はマスターがダウ …

mysql

MySQL:エラー:The total number of locks exceeds the lock table size

The total number of locks exceeds the lock table sizeは、大量にデータを削除する場合等に発生する可能性があります。 見ての通り、ロックするメモリー不 …

sqlserver

SQLSERVER サービス起動用ユーザーを作成する

SQLサーバーのサービスを起動しているのは、デフォルトではおそらくAdministratorです。 ここに大きな落とし穴があります。 Administratroのパスワードを変更することはセキュリティ …

mysql

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

ダンプをインポートしようとすると下記エラーが表示されてインポートできませんでした。 [root@centos]# mysql -u root -p reset master; するとインポートできまし …