MySQLデータのバックアップとリストア

ダンプデータを保存

  • データベース全体を保存。
$ mysqldump --single-transaction -u (ユーザ名) -p (データベース名) > out.dump
  • テーブルを指定して保存。
$ mysqldump --single-transaction -u (ユーザ名) -p -t  (データベース名) (テーブル名) > out.dump

備考
オプションを指定せず実行した場合、エラーが発生。

$ mysqldump -u (ユーザ名) -p (データベース名) > out.dump

エラー

mysqldump: Got error: 1044: Access denied for user (ユーザ名)@'localhost' to database (データベース名) when using LOCK TABLES

原因
テーブルロック権限(LOCK TABLES)がないため。
回避方法
オプション --single-transaction を使用。


ダンプデータをリストア

  • rootでの作業ができないため、out.dumpのデータをINSET...の部分だけに加工してリストアを実行。
$ mysql --default-character-set=utf8 -u (ユーザ名) -p (データベース名) < out.dump

備考
エラー
※ $ mysql -u (ユーザ名) -p (データベース名) < out.dump の実行ではエラーが発生。

ERROR 1044 (42000) at line 38: Access denied for user (ユーザ名)@'localhost' to database (データベース名)

※ --default-character-set=utf8を指定しないと文字化けする。

こちらのURLを参考にさせていただきました。