- ベストアンサー
バックアップ方法:mysql4.0を使用してデーターベースのバックアップをサーバー側で取得する方法
- 1. mysqldumpを使用すると、データーベースのフルバックアップを週に1度自動で取得できます。mysqldを停止する必要はありません。
- 2. mysqlhotcopyを使用すると、日々更新されるデータのバックアップを自動で取得できます。mysqldを停止する必要はありません。
- 3. /var/db/mysql/をコピーしてバックアップする方法もあります。ディレクトリごと戻すだけでデータベースのすべての構造とデータが再現されますが、mysqldを停止してから行う必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1)通常の環境であればリストア時は/var/db/mysql/以下のコピーでOKです。 2)単純に/var/db/mysqlをコピーする方法はバックアップ先が破壊される可能性や一貫性のない場合があるのでバックアップとしての信頼性がありません。成功する可能性もないとはいえませんが・・・ 3)物理バックアップはDBクラッシュ時のDBまるごとのリストアで使用しますが、論理バックアップであるmysqldumpはSQL文かテキストファイルに落とすので、手作業による部分リストアが可能になり、何かの時にあれば便利です。
その他の回答 (1)
- ppg-2
- ベストアンサー率39% (77/193)
まず、高機能エンジンのInnoDBであればoracleのようなオンラインバックができるのですが、MyISAM テーブルではオンラインで可能ですが、原則テーブルをロックしてバックアップする擬似オンラインバックアップしかできません。 おそらく環境は後者のようですからそれを前提でいくと以下のようなバックアップ運用がよいと思われます。 ・論理バックアップ 復旧の際以外にも必要になることが多々あるのでmysqldumpで定期的にデータバックアップ。 テーブル単位のロックでデータベース全体では一貫性がないバックアップがよいが、時間が許されるなら全テーブルロックでもよい。 ・物理バックアップアップ mysqlhotcopyを実行する。但しバックアップ中は全テーブル書き込みロックがかかるので、書き込み処理のない時間帯で行う。 ちなみに、中身はperlでlock,flush,tar,unlockをやっていてcpコマンドと同様の物理バックアップをやっている。
お礼
早々にご回答ありがとうございます。 とりあえず手動でmysqlhotcopyをしてみましたら、/var/db/mysql/以下のディレクトリ(データーベース)がコピーされていました。 リストアするときは、このコピーファイルを、/var/db/mysql/以下に戻してやるだけでいい訳ですよね。 実は今単純に自動でcpで/var/db/mysqlをコピーするシェルが毎日動いてたのですが、これは、危険なことだったんでしょうか?mysqlhotcopyの場合は、一応ロックをかけるわけですが、cpだとロックがかかってませんよね? あと、mysqldumpはsql文を含んだバックアップ物として、一応あった方がいいという解釈でよろしいのでしょうか? 色々お聞きして申し訳ございませんが、ご指導のほどいただけましたら幸いです。
お礼
大変わかりやすいご説明ありがとうございました。 とりあえずmysqlhotcopyを1日1回、mysqldumpを週1回自動でとるようにしてみました。 まだまだ初心者ですので、皆様のご指導本当に感謝いたします。