WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

MySQLをmysqldumpでバックアップする

      2012/12/11

mysqldumpとは?

mysqldumpはMySQLをバックアップするためのユーティリティです。
実行するとバックアップ対象のデータベースのテーブルやデータなどがダンプ(出力)されます。
ダンプされるデータはSQL文になっているので、他のデータベースへの移植も簡単に行えます。

mysqldumpのオプション

下記は主要なmysqldumpのオプションの一覧です。

※これですべてではありません。–helpオプションを指定すると詳細を確認できます。

–help ヘルプメッセージを出力して終了する
–add-locks 各テーブルダンプの前に “LOCK TABLES” を追加し、後に “UNLOCK TABLE” を追加する。
これはMySQL への挿入を速くするための処理
–add-drop-table 各作成ステートメントの前に drop table を追加する。
つまり、既存のテーブルを一旦削除し、再生成する。
-A
–all-databases
すべてのデータベースをダンプする。
-C
–compress
クライアントとサーバの両方が圧縮をサポートする場合、クライアントとサーバ間の情報をすべて圧縮する。
-B
–databases
引数として指定された(複数の)データベースをダンプする。
出力される各新規データベースの前に USE db_name; が追加される。
名前の引数はすべて、データベース名として扱われるためここでテーブル名を指定しないようにする
-f
–force,
テーブルダンプ中にSQL エラーが発生しても続行する。
–opt
–quick –add-drop-table –add-locks –extended-insert –lock-tables
MySQL サーバに読み込むための最速ダンプを提供する。
マニュアルに、
このオプションなしで実行すると、mysqldumpは結果をダンプする前に、結果セット全体をメモリにロードします。これは、大きなデータベースをダンプする際、問題になる可能性があります。

とある。基本的にはつけたほうがよさそう。
反面、

mysqldump プログラムの新しいコピーを使用している場合で、非常に古い MySQL サーバに読み込むダンプを行うときには、–opt オプションまたは -e オプションは使用しないでください。

ともある。

–default-character-set デフォルト文字コードをセットする。

バックアップ実行

前述のように、–optをつけると最速でダンプできる。(–optは–add-drop-table –add-locks –create-options –disable-keys –extended-insert –lock-tables –quick –set-charsetを指定したのと同じこと)

[root@centos ~] mysqldump --opt databasename > backup.sql    ※データベース"databasename"をbackup.sqlにダンプ
mysqldump: Got error: 1045: Access denied for user 'centos'@'localhost' (using password: NO) when trying to connect
[root@centos ~] mysqldump --opt databasename -p > backup.sql    ※上記のようにパスワードを入力しないと実行できない場合は-pをつける
Enter password: 
[root@centos ~] mysqldump --opt databasename -u root -p > backup.sql    ※権限が必要な場合は-rで権限のあるユーザ名を指定する
Enter password: 

 - MySQL , , ,