電子書籍の厳選無料作品が豊富!

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度、別サーバーへ転送されることになっていますので、ここでは同一サーバー内にバックアップファイルができればよい)

A 回答 (2件)

1)通常の環境であればリストア時は/var/db/mysql/以下のコピーでOKです。



2)単純に/var/db/mysqlをコピーする方法はバックアップ先が破壊される可能性や一貫性のない場合があるのでバックアップとしての信頼性がありません。成功する可能性もないとはいえませんが・・・

3)物理バックアップはDBクラッシュ時のDBまるごとのリストアで使用しますが、論理バックアップであるmysqldumpはSQL文かテキストファイルに落とすので、手作業による部分リストアが可能になり、何かの時にあれば便利です。
    • good
    • 0
この回答へのお礼

大変わかりやすいご説明ありがとうございました。

とりあえずmysqlhotcopyを1日1回、mysqldumpを週1回自動でとるようにしてみました。

まだまだ初心者ですので、皆様のご指導本当に感謝いたします。

お礼日時:2005/06/02 17:24

まず、高機能エンジンのInnoDBであればoracleのようなオンラインバックができるのですが、MyISAM テーブルではオンラインで可能ですが、原則テーブルをロックしてバックアップする擬似オンラインバックアップしかできません。



おそらく環境は後者のようですからそれを前提でいくと以下のようなバックアップ運用がよいと思われます。

・論理バックアップ
復旧の際以外にも必要になることが多々あるのでmysqldumpで定期的にデータバックアップ。
テーブル単位のロックでデータベース全体では一貫性がないバックアップがよいが、時間が許されるなら全テーブルロックでもよい。

・物理バックアップアップ
mysqlhotcopyを実行する。但しバックアップ中は全テーブル書き込みロックがかかるので、書き込み処理のない時間帯で行う。
ちなみに、中身はperlでlock,flush,tar,unlockをやっていてcpコマンドと同様の物理バックアップをやっている。
    • good
    • 0
この回答へのお礼

早々にご回答ありがとうございます。

とりあえず手動でmysqlhotcopyをしてみましたら、/var/db/mysql/以下のディレクトリ(データーベース)がコピーされていました。

リストアするときは、このコピーファイルを、/var/db/mysql/以下に戻してやるだけでいい訳ですよね。

実は今単純に自動でcpで/var/db/mysqlをコピーするシェルが毎日動いてたのですが、これは、危険なことだったんでしょうか?mysqlhotcopyの場合は、一応ロックをかけるわけですが、cpだとロックがかかってませんよね?

あと、mysqldumpはsql文を含んだバックアップ物として、一応あった方がいいという解釈でよろしいのでしょうか?

色々お聞きして申し訳ございませんが、ご指導のほどいただけましたら幸いです。

お礼日時:2005/05/31 11:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す