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を参考にさせていただきました。