問題タブ [backup-strategies]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - rdiff Python モジュール
rdiff 署名とデルタ差分を計算する機能を持つ python モジュールはありますか?
クロスプラットフォーム アプリケーションでこれらの操作を実行する必要があるため、py2exe、py2app などにバンドルするものが必要になります。
たくさんの検索を行いましたが、何も機能していないようです。Pysync、rdiff-backup、librsync はすべて起動しますが、Python 内で何も動作させることができませんでした。
directory - 2週間更新されるtarの作り方
ディレクトリを tar して圧縮する bash スクリプトをセットアップする必要があります。tar は、その時点以降、同じディレクトリで毎日更新する必要があります。これは、最終的に tar が削除され、プロセスが再開されるまでの 14 日間発生するはずです。
私はこれを設定する手を使うことができました。どうもありがとう
mysql - コールド バックアップ中の Web サイト データベース書き込みのベスト プラクティスは?
大規模で人気のあるデータベース主導の Web サイトがあるとします。サイトには昼夜を問わず人がいます。データベースへの読み取りと書き込みの両方を行うページにアクセスします。
日次データベース バックアップ計画を実装する場合、コールド バックアップを実行する必要があります。これは、バックアップの進行中にデータベースを一時的にシャットダウンするか、テーブルをロックすることを意味します。これにより、バックアップの実行中に新しいデータがデータベースに挿入されなくなります。
テーブルのロックやデータベースのオフラインが原因で失敗しないように、サイト コントローラーとモデルをコーディングするための適切な方法は何ですか? ある種のデータベース書き込みキュー システムなどを実装する必要がありますか? それとも、サイト全体を一時的にオフラインにしますか? または、何もロックまたはシャットダウンせずにライブ バックアップを実行しますか? 良いアプローチとは?
backup - データ チャンクによる効率的な増分バックアップ
バックアップ ツールを開発していますが、リモート バックアップを行う最も効率的な方法がわかりません。小さな変更があるたびにファイル全体を送信したくないので、増分バックアップが解決策だと思います。これで問題はありませんが、1 つのファイルを複数の部分に分割するにはどうすればよいかという問題に悩まされています。
問題は、単純なテキスト ファイルがあり、1 つのチャンクが 1 行であるとしましょう。
今、私は4つのチャンクを持っています。2行目を「THE 2行目」と言うように更新すると、2番目のチャンクをバックアップするだけで済みます。
しかし、次のようなことが起こったらどうでしょうか。
「前半行」を追加したので、すべての行が別の場所になりました。したがって、各行が 1 つのチャンクである場合、内容が同じであっても、最初の行以降のすべてのチャンクが変更されているように見えます。
これに対する簡単な解決策はありますか?最初に、各チャンクのハッシュを実行してから、正しいチャンクの順序を示す「カタログ」を作成できると考えました。このようにして、チャンクがすでにハッシュに存在する場合、簡単に一致させることができます。しかし、ハッシュ テーブル ソリューションは、チャンクを予測して修正できるファイル以外では機能しないことに気付きました。たとえば、バイナリ ファイルの場合、固定バイト サイズのチャンクにかなり制限されているため、最初に追加されたデータがさらに多く、たとえば 100k チャンクに切り刻み始めた場合、後のチャンクでは以前とは異なるデータが取得されます。
解決策はありますか?
python - 永続的なデータベース状態の戦略
何度か編集したため、この質問は少し矛盾している可能性があります。謝罪します。
私は現在Pythonサーバーを書いています。アクティブ ユーザーが 4 人を超えることは決してありませんが、私はコンピューター サイエンスの学生なので、とにかく計画を立てています。
現在、関連するすべての変数の現在の状態のバックアップを CSV ファイルに保存する機能を実装しようとしています。私は現在 10 人を持っていますが、決して大きくはなりませんが、コンピューター サイエンスの学生などです。
ということで、現在以下の2点を考えています。
- いつバックアップを実行しますか?
- どのようなバックアップですか?
いつ実行するか:
変数が変更されるたびにバックアップを実行できます。これには、常に現在の状態がバックアップに保持されるという利点があります。または、1 分間に 1 回などのように、サーバーが 1 分間に何百回もファイルを書き換えないという利点があります。忙しくなりますが、最後のバックアップ以降に変更された変数の検出を実装しないと、同じデータの無用な書き換えが多数作成されます。
それに直接関係するのは、どのようなバックアップを行うべきかという問題です。
すべての変数の完全バックアップ (変数が変更されるたびにバックアップを実行している場合は無意味ですが、X 分ごとにバックアップを実行している場合は良いかもしれません)、または単一の完全バックアップを実行できます。変数 (変数が変更されるたびにバックアップする方が良いですが、複数のバックアップ機能または現在バックアップされている変数のスマートな検出のいずれかが必要です)、または何らかのデルタバックアップを試すことができますファイル(おそらく現在のファイルを読み取って変更を加えて書き換える必要があるため、私が知らないPythonでこれに関するトリックがない限り、おそらくかなりばかげています)。
異なるプログラミング言語間でデータを移植できるようにしたいので使用できませんshelves
(たとえば、java はおそらく python シェルフを開くことができません)。また、さまざまな理由で MySQL を使用できません。主に、サーバーを実行するマシンが MySQL をサポートしていないためです。インターネット接続が切断されたときにサーバーを実行し続けたいので、外部のMySQLサーバーを使用したくありません。
また、Python やその他のソフトウェア (sqlite
たとえば、) の事前実装された関数を使用してこれを行う方法がいくつかあることも認識しています。私は、車輪を再発明するのが好きだからではなく、自分が使っているものがどのように機能するかを知りたいからです。私はこのサーバーを部分的に Python を学習するためだけに構築しています。SQLite の使用方法を知っていると便利ですが、自分で「汚い仕事」をすることも楽しんでいます。
1 日におそらく数回のリクエストを使用するという私の使用シナリオでは、「変更時のバックアップ」のアイデアに傾倒していますが、何らかの理由でサーバーが非常にビジー状態になると、それはすぐに崩れてしまいます。
したがって、私の質問は基本的に次のようになります。このシナリオで最も役立つバックアップ方法はどれですか。別のバックアップ戦略を見逃している可能性がありますか? アプリケーションで使用する戦略をどのように決定しますか?
この質問は、主にバックアップ戦略とその背後にある考えに対する一般的な好奇心から提起したものであり、この特別なケースの問題のためではないことに注意してください.
svn - SVN からリビジョンを完全に削除する
前文
私の SVN ホスティングは、使用量を 300MB に制限するサードパーティによって提供されています。プロジェクトの規模は中程度なので、これが問題になるとは想像もしていませんでした。アプリが本番環境に入ると、何らかのバックアップ メカニズムが必要であることに気付きました。そこで、データベースをエクスポートし、ユーザーがアップロードしたファイルを圧縮するシェル スクリプトを作成しました。次に、.sql ファイルと .zip ファイルの両方を SVN にコミットします (SVN サーバーはアプリと同じマシンでは実行されません)。
すると今日、定員を超えていることに気づきました。これはバックアップが原因であるに違いないとすぐに気付きました。
最後に...質問
.zip はバイナリ ファイルなので、コミットされるたびにファイル全体がリポジトリに追加されると思います (一方、テキスト ファイルの場合は差分のみが追加されます)。.zip ファイルは現在約 60 MB であるため、バックアップ スクリプトが毎日実行されることを考えると、SVN には 5 日分のバックアップしか保存できません。
とにかく、次の方法で状況を改善する予定です。
バックアップ スクリプトを変更して、.zip のサイズを SVN の最新の .zip と比較し、それらが異なる場合にのみコミットするようにします。バックアップが最後に実行されてからユーザーがファイルをアップロードしていない場合、2 つのサイズは同じになります。
古いバージョンの .zip ファイルをすべて SVN から削除して、クォータを解放します。しかし、これが実際に可能かどうかはわかりませんか?私の理解では、作業コピーからファイルを削除して削除をコミットしても、ファイルはリポジトリの HEAD から削除されますが、以前にコミットされたバージョンはすべてそこに残ります (私の貴重なクォータを使い果たします)。
古いバージョンの .zip をすべて完全に削除し、上記のより効率的なバックアップ戦略を新たに開始する方法はありますか。
magento - Magento:バックアップオプション
以下にあるMagentoオプションについて質問があります。
管理パネル->システム->ツール->バックアップ
「システムバックアップ」、「データベースとメディアのバックアップ」、「データベースのバックアップ」の違いは何ですか。
2と3、2の違いは、データベースに保存されていないアップロードされた画像や同様のアップロードされたコンテンツのファイルもバックアップされるということで理解できると思いますが、1と2の違いは何でしょうか。
git - gitはすべてのファイルを複製しますか?
gitを使用してWebサイトに新しいバックアップシステムを実装しようとしています。仮想プライベートサーバーには、合計20GBのスペースがあり、5GBの空き容量があります。
(私のお気に入りのパラメーターを使用して)実行するgit add .
と、ハードドライブをいっぱいにする巨大なgitフォルダーがあります。/var/www
.gitignore
.git
ディレクトリにはすべてのファイルのバイナリ複製ではなく、ビットに関するビット(メタ情報)が含まれていると予想されるため、これが発生している理由はすぐにはわかりません。
何が起きてる?私のウェブサイトが14GBの場合、.git
ディレクトリはさらに14 GBを占有しますか?
mysql - mysqldump が完全に遅くなった場合
現在、私のデータベースはほぼ 20 GB の大きさで、まだ拡大中です。mysqldump を使用して毎日バックアップを取っていますが、非常に遅くなっています。非常に遅いため、その間に新しい接続が積み重なり、最終的にこのエラーが発生します。
(受け入れられる接続の量を改善することはできますが、バックアップが完了するのを待って接続がまだ凍結されているため、タイムアウトにつながるため、何もしません)
速度を改善するためのいくつかのオプションを調べてきましたが、これが私が見つけたものです:
- オプション --quick (おそらく役立つでしょう)
- オプション --single-transaction (テーブルがロックされるのを防ぎますが、データベースが正しくなくなる可能性があります)
- マスター/スレーブ レプリケーション (おそらく、私ができる最善のことです。問題が 1 つあります。使用可能なサーバーは 1 つしかありません)
マスター/スレーブ レプリケーションは、スレーブの更新を停止し、バックアップを取り、同期を再開できるため、最良のオプションのように思えます。問題は、使用する物理マシンが 1 台しかないことです。
この 1 つのサーバーに複数の mysql インスタンスをセットアップできることはわかっています。問題は、そうするのが賢明かどうかです。スレーブは実際には、バックアップ ファイル (ネットワーク上の別のディスクにコピーされる) を生成するためにのみ使用されるため、マスターは稼働状態を維持できます。