0

RHEL で実行されている MonetDB データベースが数億行 (数百 GB) の範囲にあり、数十 (数百ではない) のテーブルがあり、適切なバックアップ戦略を実装することに興味がある場合、特にそうするメカニズムに。

これまで、私は bash スクリプトを使用して、データベース内のテーブルごとに 1 回ずつ msqldump を繰り返し呼び出し、次のようなファイルにデータをパイプしてきました。

msqldump -u [username] -t [tablename] -d [dbname] > /path/[tablename].sql.gz

.monetdb ファイルをセットアップしたので、msqldump を呼び出すたびにパスワードの入力を求められることはありません。そのため、このスクリプトを呼び出して無人で完了することができます。

これらのテーブルを MonetDB データベースに復元するために必要なすべてのデータとスキーマを含む一連のファイルを取得する限り、これは機能しているように見えますが、どちらも非常に粗い (そして実行に時間がかかる) ように見えるので、私は「より良い」方法があるのだろうか?

たとえば、msqldump 操作中にデータベースの内容が変更された場合、どうなるか心配する必要がありますか? おそらく db/farm を停止し、データ ファイル自体のコピーを取得するだけで、MonetDB データベースの完全なバックアップを取得するクリーンで高速な方法はありますか? もしそうなら、これを達成するための正確な方法は何ですか? MonetDB を何らかの大規模またはエンタープライズな方法で使用している人々/組織はありますか? また、MSSQL データベースまたは同様のものに実装される可能性のある同じ種類のバックアップ戦略をどのように達成していますか?

私はオンラインでかなり多くのことを検索しましたが、ここでは StackOverflow で、この主題に関するガイダンスの方法で多くを見つけることができなかったので、ここの誰かが助けてくれることを願っています.

前もって感謝します。

4

1 に答える 1

2

msqldumpクリーンなデータベース スナップショットをシリアル化された SQL スクリプトに取り込むための推奨される方法です。ただし、テーブルごとに 1 回ではなく、データベース全体に対して 1 回だけ呼び出すことをお勧めします。これは高速ですが、データベース スキーマが時間の経過とともに変更された場合に、一貫性がより重要になります。

あなたが示唆したように、データベースの物理コピーをバイナリ形式で作成することもできます。各データベースは、同じ名前のフォルダの下に格納されています<dbfarm location>/<dbname>。これには、データベースを停止 ( monetdb stop) し、ロック ( monetdb lock) して、ユーザーがデータベースを自動的に開始できないようにする必要があります。データベースを復元するには、データベースを にコピーして<dbfarm location>ロックを解除します ( monetdb release)。それ以上のデータベース登録/セットアップは必要ありません。別の名前で復元したい場合は、そのフォルダーの名前を変更するだけです。

シリアライズとバイナリが 2 つの戦略である場合、次の点を考慮してください。

  • シリアル化は、バージョン間でより堅牢です。バイナリ DB は通常、必要なバージョンに自動的に変換されますが、保存されているバージョンが古すぎない場合に限ります。
  • 必要に応じて編集できるため、シリアル化された方が安全です
  • シリアル化されているため、ダウンタイムは必要ありません。特定の質問について: ダンプ中の更新について心配する必要はありません。ダンプは、分離されたスナップショットで発生します。逆に、バイナリ バックアップでは、データベースを停止してロックする必要があります。
  • バイナリは一般的に高速です
  • どちらも増分バックアップを実行できません

本番データベースがかなり頻繁に使用されることを前提とした私の好ましいアプローチは、あなたが提案するのと同じですが、データベース全体を一度に(そしてgzip、あなたの例では忘れていた にパイプします):

msqldump -u [username] -d [dbname] | gzip > /path/[databasename].sql.gz

便利なリンク:

更新:リリース 2020 年 6 月 (11.37.7) 以降、「ホット バックアップ」機能により、データベースを停止せずにバイナリ スナップショットを作成できます: https://www.monetdb.org/Documentation/ServerAdministration/Backup/HotBackup

于 2015-12-25T18:52:38.000 に答える