2009-05-05 15 views
6

私はコマンドラインを使用してMYSQLデータベースのバックアップと復元を行っています。 ビューとプロシージャを持つデータベースデータ1を使用します。私はCmdを使用する場合は、上記Cmd lineで、私はmysqldumpすなわちMySQLバックアップとコマンドラインからの復元

..>bin> mysqldump -u root -proot Data1 > Datafile.mysql 

を使用する場合 は、それはDtafile.mysql 名前でMySQLのbinフォルダにバックアップファイルを作成します。

ただし、プロシージャではなくテーブルのみのバックアップを作成することがあります。

そして、私は空のデータベース「データ2」でそれを復元mは

..bin> mysql - u root -proot Data2 < Dataafile.mysql 

何それがないと、それはすべてのテーブルを作成し、テーブルと[いいえ手順にビューを変換する復元されている、です。

すべてのテーブル、ビュー、およびプロシージャを使用してデータベース全体のバックアップを復元できません。

あなたのお役に立ってもらえますか。 私は非常に感謝しています。

答えて

10

mysqldumpに "--routines"パラメータを含めると、プロシージャがダンプされます。

EDIT#1:あなたのmysqldumpコマンドは、現在のようになります 、

mysqldump -u root -proot --routines Data1 > Datafile.mysql 

EDIT#2:あなたは同様にあなたがしたい場合は--add-ドロップテーブルのスイッチを追加する必要があり
ビューを保存します。その理由は、ビューは2つのステップで作成されます(最初はダミー・テーブルとして、次に実際のビューとして)。また、テーブルとビューが同じ名前空間を共有しているので、mysqlclientの "テーブルの表示"コマンドの出力に誤解を与えないように注意してください。そのコマンドでビューの作成とその後のビンゴの表示が表示され、ビューが正しく復元されていることを確認して、一部のデータを他のデータベースの関連するテーブルに挿入して、そのビューで選択クエリを実行すると、 "Show View vw_test"あなたが雄牛の目を打つよりもデータが結びついている場合は、背中に自分自身を叩くこと:)他の場合は、常にStackoverflowでこの素晴らしいコミュニティに戻ることができます。

だからあなたのmysqldumpコマンドは、今のようになります(ビューを維持するために)この

mysqldump -u root -proot --routines --add-drop-table Data1 > Datafile.mysql 

HTH

バックアップデータベースの使用コマンドライン、phpmyadminのか、MySQLの管理者には3つの最良の方法 のMySQLデータベースのバックアップがある
+1

ちょっと、ダンプを取るときに - ルーチンを含めるにはどうすればいいですか?あなたはちょっと説明してください。 –

+0

こんにちは、上記の私の答えを編集して、使用するコマンドを表示しました。 –

+0

こんにちはありがとう.. それは動作します。もう一つの問題、私は直面しているそれは "データ1"で私は他のデータベースを参照するビューを持っていますか?私はそれを復元しているときに、すべてのビューをテーブルに変換します。すなわち私はData1でvw_testを見ることができますが、私がそれを復元すると、名前vw_testを持つテーブルになります。 何が問題になるでしょうか。 私を助けてください。 ありがとうございます。 –

関連する問題