MySQL データベースのバックアップ(mysqldump)とレストアー

 MySQL には昔からデータベースの内容を出力する為の mysqldump という便利なコマンドがあります。 これはデータベース名を指定して実行するとデータベース内に存在するテーブル全部のデータを出力してくれます。 この機能を使う事で簡単にデータベースのバックアップを取得することが出来ます。

ここで mysqldump で取得した内容をファイルで保存しておき後でデータベースが壊れたりした場合このバックアップからデータを復元することが簡単に出来るようになります。

MySQLデータベースのバックアップ

# mysqldump --user=USERNAME --password=PASSWORD DATABASE_NAME > BACKUP_FILENAME.sql

mysqldump 時にdefaultで有効になるオプション

--add-drop-database

DROP DATABASEステートメントをCREATE DATABASEステートメントの前に追加します。

--add-locks

LOCK TABLESとUNLOCK TABLESステートメントで各テーブルダンプを囲みます。ダンプファイルを再ロードする際のインサートの速度が向上します。

--create-options

MySQL独特のオプションをCREATE TABLEステートメントに含みます。

--disable-keys, -K

各テーブルごとに、INSERTステートメントを/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;と/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;ステートメントで囲んでください。行が全て挿入された後にインデックスが作成されるため、ダンプファイルのロードが早くなります。このオプションはMyISAMテーブルに対してのみ効果的です。

--extended-insert, -e

複数のVALUESリストを含む、複数行INSERT構文を使用してください。これにより、ダンプファイルサイズを小さくし、ファイルが再ロードされる際の挿入スピードがあがります。

--lock-tables, -l

ダンプする前に全てのテーブルをロックします。テーブルはREAD LOCALでロックされ、これによりMyISAMテーブルの場合同時インサートが許容されます。

--quick, -q

このオプションは大きなテーブルのダンプに便利です。これにより、mysqldumpは全結果セットを取得、メモリ内でバッファ後表示といった一連の作業を一気にこなさず、サーバから1行ずつ結果を取得します。

--set-charset

出力にSET NAMES default_character_setを追加してください。このオプションはデフォルトで有効となっています。

MySQLデータベースのリストアー

$ mysql  --user=USERNAME --password=PASSWORD DATABASE_NAME < BACKUP_FILENAME.sql
created:

Back to top