PC-UNIXに関する記事など

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

このエントリーをはてなブックマークに追加

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

トラックバック(0)

トラックバックURL: http://www.omakase.org/mt/mt-tb.cgi/68

コメントする

カテゴリRDBMSの記事一覧