- ベストアンサー
バックアップとリストアについて
Mysqlのデータバックアップを mysqldump -u root -x --all-databases > dump.sql のように行っております。 私の場合、すべてのデータベースをバックアップしたいので、allにしてます。 リストアの際には mysql -u root -p < dump.sql としております。 しかし、データベースが復元されません。 allとしてバックアップを行ったのに、データベースが全く復元されません。 何か特別な方法があるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
バックアップしたdumpファイルの中身を見てみるとわかると思うのですが、Create database 、Create table 、Insert文が並んでいるだけです。 このファイルを使って完全にリストアしたい場合、現在MYSQLに存在するDBを全て(mysqlを除く)Dropすれば読み込めるはずです。 ちなみにMYSQLに存在するDBを知りたい場合は、 MYSQLログイン後 show databases; とコマンドを打ってあげればDBリストが表示されます。 ただしALLでdumpした場合、MYSQL動作として使用されるmysqlのDBもdumpされているはずです。 しかし、mysqlのDBに関してはDropしてはいけません。 MYSQLユーザーの情報などが存在するからです。 そうすると、ALLで指定したDumpファイルをそのまま読み込むには DB mysql に対するSQL文(create db create table insert)を全て削除する必要があります。 ですので一番確実で楽な方法はDB単位でdumpを取り、リストアもDB単位でリストアするほうが楽だと思います。
お礼
braver_2004さんありがとうございます。 まだまだ初心者でおっしゃられる通り、dumpファイルを見てみたところmysqlのデータベースもありそれがエラーとして表示されていたのだと思います。 DBごとに変更してみたところうまくいきました。 本当にありがとうございました。