実行中のLinodeサーバーをバックアップする方法は?


21

私たちは、Debianサーバー上のすべてのバックアップを取りたいです。Debianサーバーはシャットダウンせずに、世界の反対側(Linodeがホスト)でリモートで実行されています。

このシステムは、シェル、電子メール、XMPP /韻律、Webを実行しており、いくつかの簡単なnginxセットアップがあります。
安全のために、これらのものに関連するファイルをバックアップしたいと思います。たとえば、ユーザーが自分のホームディレクトリに保存したファイル。

/ etcファイルごとに既存のセットアップを正確にコピーする必要はありません。代わりに、そもそもバックアップを行っている理由は、すべてを新しいセットアップに移動できるようにするためです(Linode上にある新しいバージョンのDebian)。

Linodeはバックアップサービスを提供しています。しかし、長期的には、ここでバックアップが行われたり、何か他の奇妙なことが発生した場合に備えて、独自のバックアップも必要です。

この質問が存在する理由は、過去にバックアップを作成しようとしたときに、次の2つの間違いのいずれかを繰り返したためです。

  • 「OK、/その下のすべてをコピーします」に行った後、コピー先のドライブが/ media / backupの下にマウントされ、再帰的にコピーされていたため、奇妙な無限ループで立ち往生しました[obv rsyncなどでバックアップするため、ここでは当てはまらない特定の問題]または/ procや/ varなどの「生きている」ものをコピーしようとして動けなくなってしまった。または
  • 「OK、必要なものを必要最小限にとどめます。うーん、全員のホームディレクトリ、Webサーバーのディレクトリ(すべて下/var)を取得/etcし、/ var /の下にあるすべての古いメールのコピーを取得します。vmail」を使用して、ファイルのアクセス許可またはタイムスタンプを常にめちゃくちゃにしました(今回はUNIXファイルをFATドライブにバックアップしないようにします)または何かを忘れました(「ああ、シュート、/ usr /にカスタムスクリプトがありました他の場所に保存したことのないローカル/ビン、それらを取得するのを忘れてしまった、今はなくなっていると思います」)。

したがって、ドライブ全体をまっすぐにコピーすると落とし穴が生じ、ディレクトリを選択的にコピーすると落とし穴が生じます。私はそれを正しく行う方法を知りたいです。

サーバー障害の質問完全なバックアップシステムには何が必要ですか?哲学とグッドプラクティスをカバーしていますが、私はこれらのより具体的な詳細を探しています:

  • コピーする必要があるディレクトリと除外するディレクトリ
  • タイムスタンプ、所有者、グループなど、どのファイル属性を提示する必要がありますか?←質問のこの半分に自分で答えることができるrsync -HXazと思います。-z本当に「私は何を守るか」で、質問に関連していないOBV

を使用するなどdd、私が見る多くのバックアップのアドバイスは、ドライブがマウントされておらず、使用されていないことを前提としているようです。しかし、/ procのような「生きている」ディレクトリと、/ varの下のサブディレクトリ(ただし、/ varの下にあるもののいくつかは間違いなく保持する必要があるとわかってます)および/ mount を除外することは想定されていませんか?この状況で考えなければならないことは他にありますか?それから、rsyncでたくさんの--excludeフラグを使ってそれを切り取ることができると思います。

または、より良いアイデア、特にFOSSフレンドリーなアイデアはありますか?


私はこの質問は非常に基本的なようだことを得るが、私は何度も何度もこれを台無しにしましたし、私は本当に正しいそれを行う方法をgrokked決して走っこの種のシステムは、このような長い時間持つ
サンドラ


価値のあるものについては、cp -r -aファイルをコピーするときに(ターゲットファイルシステムがサポートするものに基づいて)できるだけ多くのファイル属性を保持します。-aフラグが指示しcpた属性を維持するために。ネットワークまたは必要な属性をサポートしていないファイルシステムを介してコピーするtar -cために、私のために常に機能しましたが、カバーしていないエッジケースがいくつかあると信じtarています両方のシステム。そうは言ってtarも、明らかな問題なしに使用して(マウントされていない)Linuxシステム全体をコピーしました。
マイケルジョンソン

また、システムをライブでコピーする必要がある特別な理由はありますか?
マイケルジョンソン

linodeのスナップショットサービスを使用しますか?
ivanivan

回答:


15

したがって、これらすべての厄介なミスをせずにすべてのドライブをバックアップし、すべての/ procおよびその他の一時フォルダーも除外したいですか?

次のように、ファイルシステム内の別のフォルダーにルートフォルダーをマウントするオプションがあります。

$ cd /mnt
$ mkdir drive
$ mount --bind / drive

これにより、ドライブ上にある一時的とは見なされないすべてのファイル(/ procまたは/ sysフォルダーなど)が得られます。

ルートフォルダがきれいに表示されたので、標準cpまたはを使用してバックアップドライブにコピーできますrsync。以下の線に沿ったもの:

cp -R /mnt/drive /mnt/backupdrive

これにより、前述の問題の両方が解決されます。

  • バックアップディスクがドライブ内にマウントされていないため、再帰にはなりません(観点)
  • あなたはそれらをすべて取っているので、重要なファイルを見逃すことはありません

参照:man mount(8)


6
このソリューションでは、データベースなどの書き込み中のファイルをコピーできます。ファイルをコピーする前に、スクリプトを実行してデータベースを別のファイルにダンプすることをお勧めします。たとえば、MySQLの場合はmysqldumpを使用できます。
マルコマルティネリ

10

Linuxでは、すべてがファイルです。rsyncを介してそれを行うことは可能ですが、注意すべきことがあります。それは(せいぜい)回避するのが難しいものです。

特にデータベースの場合は、まず複製について検討する必要があります。また、プライマリサーバーの前にプロキシ/ロードバランサーを設定することをお勧めします。これにより、移行中にプライマリサーバーとミラーサーバーを簡単に切り替えることができます。

ハードウェアレベルでの最良の状況は、同じ数のイーサネットポート、同じhddレイアウトなどを備えたミラーのようなサーバーを別の側に置くことです。異なるものはすべて、システム構成を変更する必要があることを意味します。

つまり、2つのethポートがある場合、ネットワーク構成、ファイアウォールなどが両方のサーバーのインターフェイス名と一致することを確認し、異なる場合は、rsync後に構成を変更するか、2番目のデバイス名を変更する必要があります(宛先)サーバー。

パーティションレイアウトと同じです。プライマリサーバーと同じパーティションを作成する必要がありますが、最初から作成する場合は異なるUUIDになるため、fstab、grub、mdadm(soft-raidが関係する場合)などを変更する必要があります。 。

しかし、データベースのように、以前に(rsyncを実行する前に)停止していないと矛盾する可能性があるなど、問題が発生する可能性のあるものも多くあります。

最善の戦略は、最初にハードウェアとファイルシステム(パーティション)を準備し、プライマリサーバーの構成に一致させることです。次に、中間システムを介して空のパーティションをマウントします(ssh-serverが一時的にインストールされたライブCDなど)。空の/ proc、/ dev、/ sysを作成し、残りを次のようにrsyncします。

rsync -avz -H --delete /etc /bin (...and so on) destserver:/mnt/yourrootfs/

次に、デバイスにgrubをインストールして設定を行い、ブート可能にする、ネットワーク設定、fstab、および前述したその他のものを変更する必要があります。

また、(プライマリサーバーで使用しているものと同じバージョンの)新しいシステムをインストールしてから、電源をオフにし、別の一時システム(ライブcdなど)経由でマウントしてから、/ proc以外のものを置き換えます/ sys、/ dev、およびrboot付きの/ boot。

しかし、それは一般的な考えにすぎません。このサーバーに実際にあるもの、構成、ネットワーク、ハードウェアのセットアップによっては、状況が複雑になる場合があります。そして、結局のところ、これは顕著なダウンタイムなしにそれを行うのは本当に難しいか不可能かもしれません。


データベースの再作成:適切なファイルシステムの抽象化(LVMなど)がある場合、完全なDBレプリケーションを行わなくても、ドライブの一貫したスナップショットを取得できる場合があります。ただし、これにはデータベースがkill -9安全である必要があります。そうでない場合、データベースが回復できない可能性があります。優れたデータベースそのような状況処理するはずですが、驚くほど多くの製品はそうではありません(または、さらに悪いことに、ほとんど常に回復しますが、実際に動作させる必要があるときにブルームーンで一度失敗します)。したがって、実際には、とにかくレプリケーションの方がおそらくより信頼性があります。
ケビン

5

実際に必要なのは復元です。何をするにしても、定期的にテストを復元する必要があります。


Linodeにはバックアップサービスがあります。スナップショットは、事前に定義された限られたスケジュールで、またはAPIを使用して取得できます。

スナップショットベースのバックアップの利点は、コピーの作成中にデータが変更されないため、それらがシャープな時点を提供することです。スナップショットは、別のホスト(この場合は新しいLinode)に簡単に復元することもできます。


たとえば、これらのバックアップが引き続き機能することを確認することについては何も見ていません。Linodeは破産します。
マーク

私の質問に対する編集の1つを入力しているときにLinodeのバックアップサービスを見つけたので、同僚と話し合い、それを探しました。これは当面の危機を解決しましたが、私たちは自分の家にもデータを保存する方法を見つけようとしています。だから、彼らがそのサービスを持っていることを育てたことで、私が最初に投稿したときには気がつかなかった。しかし、復元には次の問題があります。サーバーの構成が不適切な場合、チューインガムとワイヤーハンガーのボールがある場合、必ずしも同じ構成の誤った状態に復元する必要はありません。ただし、お気に入りのデータが必要です。
サンドラ

リカバリポイントの目的と障害ドメインに適している場合、このバックアップを別のストレージにエクスポートすることについても、もう少し書きました。しかし、私は簡潔にするためにそれを省きました。バックアップが単なる一部である、優れたビジネス継続性計画は、そのようなリスクを特定し、対処します。
ジョンマホワルド

1

私は小さな仮想プライベートサーバーにBackupPCを使用していますが、これはかなりうまく機能します。BackupPCは、内部でrsyncを使用でき、完全バックアップと増分バックアップをサポートしています。それを見て、それがあなたの要件をカバーするかどうかを確認してください。


1

ZFSでシステムを実行します。次に、次のようなものを使用して、瞬間的なアトミックスナップショットを作成できます。

# zfs snap -r tank@name-of-backup

どこtankあなたのZFSプールの名前は何でもあります。このスナップショットは、ファイルシステムとそのすべての子ファイルシステムの瞬間的な瞬間スナップショットであることが保証されています。

スナップショットを作成したら、使用して別のホストに転送することができますzfs sendし、ssh


0

私は、内部linuxコマンドを使用してサーバーを実行している場所と場所によって異なるため、完全なデータとライブラリを模倣/パイプする必要があります。vmwareで実行し、適切に構成すると、ライブマイグレーションが提供されます。または、サードパーティのツールを使用する必要があります。これがお役に立てば幸いです。その他の参考資料ライブサーバーのバックアップを作成するにはどうすればよいですか?

Rsyncは、サーバー間でデータを同期するのに適したコマンドです。


0

チェックリストが不完全であるため、または単に何かが見過ごされているために、リストから1つの項目が欠落しているだけでなく、不足しているビットに(もはや)依存する必要のない2つのソリューションがあります。

まず、基盤となるハードウェアプラットフォームをさらに制御できるプラットフォームにこれを移動すると、サーバーの実行中にすべてのファイルのディスクスナップショットを取得できます。たとえば、AWSでEBSディスクのスナップショットを作成し、後で別のスナップショットを作成する場合にのみ差額を支払うこともできます。

次に、Ansibleなどの構成管理システムを使用してサーバー全体のセットアップをスクリプト化することをお勧めします。この意志

  • ソース管理で設定したすべてを文書化する

  • バックアップまたはベアメタルからサーバーの再作成をテストして、スクリプトが最新であることを確認できます。

  • 通常はごくわずかな変更を加えて、新しいオペレーティングシステムでスクリプトを再実行できます。


1
Linodeでもスナップショットを作成できることがわかりました。Ansibleをチェックします!それは私が最初に知りたいことの副題のようなものですが、そのようなもの-そして、私はそれを聞いたことがありません(つまり、素晴らしいヘイニッシュの本から架空のデバイスを聞いたことがあります)-素晴らしい音!
サンドラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.