• ベストアンサー

バックアップとリストアについて

Mysqlのデータバックアップを mysqldump -u root -x --all-databases > dump.sql のように行っております。 私の場合、すべてのデータベースをバックアップしたいので、allにしてます。 リストアの際には mysql -u root -p < dump.sql としております。 しかし、データベースが復元されません。 allとしてバックアップを行ったのに、データベースが全く復元されません。 何か特別な方法があるのでしょうか?

  • hana43
  • お礼率49% (105/212)
  • MySQL
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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単位でリストアするほうが楽だと思います。

hana43
質問者

お礼

braver_2004さんありがとうございます。 まだまだ初心者でおっしゃられる通り、dumpファイルを見てみたところmysqlのデータベースもありそれがエラーとして表示されていたのだと思います。 DBごとに変更してみたところうまくいきました。 本当にありがとうございました。

関連するQ&A

  • バックアップファイルの復元に時間がかかる

    以下のコマンドを入力してSQLファイルを作成します。 mysqldump --databases DB名 > "保存先.sql" -u root 処理が完了するとSQLファイルが作成されており、 そのファイルを復元するのですが、処理に時間がかかってしまいます。 復元は以下のコマンドです。 mysql DB名 < "保存先.sql" -u root 復元処理は行われているのですが、2時間経過しても数万件の復元しかできていません。 データはデータベース全体で200万件程度です。 バックアップの処理は20分もかからない時間で完了するのに、復元だけがこんなに時間がかかるものなのでしょうか? 環境はOSがwindowsXP pro MySQL 4.0.26です。 その他はapache2.0.59とphp5.1.6です。 宜しくお願いします。

  • mysqlデータベースリストア

    MySQL初心者です。 基本的な質問ですが、教えてください。 MYSQLデータベースのバックアップは、コマンドラインからmysqldumpでバックアップを行うと思います。 CMD>mysqldump -u(ユーザーグループ) -p(パスワード) (データベース名) > (バックアップファイル名).sql バックアップSQLを使って再度リストアで入れなおす場合は、 drop database (データベース名);と create database (データベース名); を実行してから行う必要があるのでしょうか? (バックアップファイル名).sqlの中身を見てみると、 CREATE TABLE '(テーブル名)' (・・・・ ・・・)の前に DROP TABLE IF EXISTS '(テーブル名)'; のようにテーブルのdropをしてからの処理はあるのですが。

    • ベストアンサー
    • MySQL
  • mysqldumpでバックアップしたデータのリストア

    下記のようにmysqldumpでバックアップしています。 mysqldump --opt --user=user --password=pass --database dbname > backup.sql これをリストアする場合はdbnameを削除後 mysql -u user -p pass dbname < backup.sql だったと思うのですが、Mysql Administratorのリストアにてこのバックアップしたファイルを指定することは出来ますか? そのままAdministratorにファイルを指定したら 「The selected file was generated by mysqldump and cannot be restored by this application.」というエラーが発生します。 ご存知の方おられましたらご教授お願いします。

    • ベストアンサー
    • MySQL
  • MySqlで、DBのファイルサイズ圧縮は?

    お尋ねします。 MySqlのINNODBのファイル容量を削減する方法は、 1.mysqldump -A -u root -p パスワード --opt > ダンプファイル名 でダンプ 2.DBファイルを”rm”で削除(あるいは、別フォルダに退避) 3.CREATE DATABASE データベース名 CHARACTER SET utf8; でDB再構築 4.mysql -u root -p パスワード < ダンプファイル名 でリストア で、良いんでしょうか?(^^;

  • リストアするとファイルが消える

    MySQL4.1.21です。 データベースを別のサーバに移しているのですが、dump→dumpファイルのリストアが上手くいきません。 移すほうのサーバでデータベースを作り、 mysql -u [ユーザー名] -p[パスワード] [データベース名] > [dumpファイル名] としたのですが、それを実行するとdumpファイルが空(サイズが0KB)になってしまうのです。 以前はこの方法で問題なく移せたのですが・・・。原因の分かる方おられましたらご教示お願いいたします。

    • ベストアンサー
    • MySQL
  • PHPからMySQLのバックアップをとるには?

    レンタルサーバのLinux+PHP4.2.1+MySQL3.23.42の環境で行っております。 HTML(PHP)フォームから、「バックアップ」ボタンが押されたときに、 MySQLのバックアップをとる(mysqldump)するプログラムを作りたいのですが、 mysqldumpコマンドは、SQLとしてクエリ送信できるのでしょうか? 例えば、 $strSQL = "mysqldump -u **** -p**** DB名 テーブル名 > dumptest.bak"; mysql_db_query($strSQL); のような感じでは、成功しませんでした。 mysql("DB名","mysqldump -u **** -p**** DB名 テーブル名 > dumptest.bak"; さらに、このような方法もあるみたいですが、 エラーも起こらないしdumpもされませんでした。 phpMyAdminなどは、どうやって実行しているんでしょうね。。。 知っている方がいましたら、是非ご教授くださいませ。

    • ベストアンサー
    • PHP
  • mysqlの自動バックアップ

    crontabを実行してmysqlのバックアップを取ろうとしています。 まず、以下のunixコマンドでバックアップできることを確認しました。 mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql これをcrontabで実行するためにphpファイルにして以下のように記述しました。 <?php $output = shell_exec('mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql'); echo "<pre>$output</pre>"; ?> このファイルを実行すると以下のメッセージが返されます /***/sql_backup.php: line 1: ?php: そのようなファイルやディレクトリはありません /***/sql_backup.php: line 2: syntax error near unexpected token `(' /***/sql_backup.php: line 2: `$output = shell_exec('mysqldump -u *** -p*** abc_db > /file/dump/db_backup_`date +%Y%m%d-%H%M%S`.sql');' phpでコマンドを実行するにはshell_execを使うとあり、試してみたのですが、こういう方法では使えないのでしょうか? 最終的にはcrontabを使ってmysqlのバックアップが取れれば良いので、他に方法があるようでしたら教えて頂ければ助かります。 宜しくお願いします。

    • 締切済み
    • PHP
  • バックアップとリストア

    mysql4系や5.0系のデータをバックアップし、それを5.1系にリストアした場合、なにか問題になることで考えられるものは何がありますでしょうか? 経験済みの方、宜しくお願いします。

  • 一部のレコードをバックアップ・リストアしたい。

    PostgreSQLでデータベースのバックアップは pg_dumpで良いのですが、特定テーブルの一部のレコードを抽出したデータをMySQLに移したいのですが、どのようにすれば良いのでしょうか? Postgresqlは Linuxで7.2.3 MySQLは WindowsXPで 5.0.11 です。

  • バックアップ方法

    mysql4.0を使用しています。 データーベースのバックアップをサーバー側で取りたいと思って色々調べたら 1.mysqldump 2.mysqlhotcopy 3./var/db/mysql/* をcopy など色々あり、どれを使えばいいのかよくわかりません。リストアの方法も1と2の違いがよく分かりません。 1は何から何までフルバックアップできるそうですが、2ではデーターだけなんでしょうか? また、3の場合も、コピーをとっておいたものをディレクトリごと/var/db/mysql/に戻すだけで、データーベースの全ての構造、データーなんかが再現されるのでしょうか?それなら3が一番簡単な気もしますが、mysqldをstopしてからやらなければならず、止めずにやるなら2だともありました。 私は以下のポリシーでバックアップを取りたいと考えてるのですが、どの方法でバックアップ&リストアするのがよいかアドバイスお願いします。 1.フルバックアップは週に1度。自動。mysqldは止めない。 2.日々更新されるデーターは毎日データーバックアップを自動でとりたい。mysqldは止めない。 (作成されたバックアップファイル事体は、日に1度、別サーバーへ転送されることになっていますので、ここでは同一サーバー内にバックアップファイルができればよい)

    • ベストアンサー
    • MySQL