1

最初のサイトを EC2 マイクロ インスタンスに移動しました。現在、プロジェクトは機能しており、可能であれば Amazon (Glacier? S3?) 内でデータベースと画像フォルダーをバックアップしようとしています。私はそれについてたくさん読んだことがありますが、以前に誰かがこれをスクリプト化したと確信しています。

スタック: - Ubuntu Server 12.04 LTS - Apache 2.2.1 - PHP 5.4.4

4

3 に答える 3

1

通常、防御の最前線として EBS スナップショットを使用します。EBS バックアップを 1 日に 1 回作成し、古いものを削除するスクリプトを作成します。クローンに入れます。

  • サーバーで何かが誤って削除された場合は、スナップショットから EBS ドライブを作成し、どこかにマウントしてから、必要なものをコピーしてください。
  • サーバー ハードウェアが故障した場合、最後のスナップショットを EBS ドライブに変換して、そこから起動できます。死んだコンピューターから既存のドライブを取得してそこから起動するという最適化がありますが、その動作に依存しないでください。サーバーに障害が発生すると、切断中にドライブが何時間も「スタック」することがあります。さらに、同じゾーン内のコンピューターにしか復元できないため、柔軟性がありません。
  • 古いバックアップからデータを読み取る必要がある場合は、新しいサーバーを 1 時間起動して、データをコピーできます。(総費用: 8 セントまたは 9 セント。ドライブは必ず後で削除してください。)
  • バックアップは、変更されていないデータ ブロックを共有することに注意してください。これは、各バックアップが完全バックアップのように見え、機能することを意味しますが、増分バックアップの方が料金が高くなります。

EBS/EC2 に重大な問題が発生した場合の「追加の保険」が必要な場合は、S3 を検討できます。s3sync他の回答で指摘されているように使用してください。圧縮を使用することをお勧めします。EBS スナップショットの場合のように、バックアップ間で「コストを共有する」ことはありません。

Glacier では、復元に非常に長い待機時間 (数時間) と最小復元時間 (90 日より前に復元するとペナルティが発生します) があります。したがって、大量のバックアップを長期間保存する場合にのみ検討する必要があります。何時間もダウンしても大丈夫でない限り、これを災害復旧に使用することはできません。

于 2013-06-16T00:22:27.797 に答える
0

これは非常に基本的なスクリプトです。手順は次のとおりです。

  • 公式サイトからs3cmdをインストール
  • シェルで s3cmd を呼び出し、AWS 認証情報を追加します
  • Glacier よりも優れた、ファイルを保存するための新しい S3 バケットを作成する
  • バケットのプロパティでライフサイクルを設定して、90 日後にそれらを自動削除します
  • シェルに戻り、以下のスクリプトを貼り付けます
  • ここで、ログ ファイル /var/log/my_backups_to_s3 を作成します。
  • 実行するスクリプトとログ ファイルに権限を付与する
  • ./your_script_name で試してください

MYSQLDUMP へのスクリプトの例と S3 へのプッシュ

#!/bin/bash    
MY_FOLDER="/__PATH_TO_WRITABLE_FOLDER__/"
    NOW="`date +%Y-%m-%d-%R`"
    FILE=$MY_FOLDER"___FILE_NAME___"$NOW".sql"
    mysqldump -h localhost -u USER_DB -pPASSDB -c --add-drop-table --add-locks --quick --lock-tables DBNAME > $FILE
    s3cmd put $FILE s3://___YOUR_BUCKET_NAME___
    echo "`date -u`" "BACKUP DONE - MySQL uploaded to hipespace ^^ -> ".$FILE  >> /var/log/my_backups_to_s3     

ノート:

  • -p と PASSDB の間にスペースはありません
  • S3 にプッシュする前にファイルを保存します。これは必須ではありません
  • バケットが完全に利用可能になるまでに約 30 分かかります。その前に接続エラーが発生しました

とにかく、これはデータベースをバックアップするためだけです.s3cmd docsを試してみてください.別のコマンド「sync」を使用してイメージをプッシュできます.

それが役に立てば幸い

于 2013-06-06T15:56:24.377 に答える
0

これはかなり簡単です。おそらく、今のところ s3 を使用する必要があります。

  1. インストールしますs3cmd。リポジトリですでに利用できる場合があります
  2. ファイルのバックアップ方法を決定します。たとえば、すべての画像を同期するだけですか、それとも画像フォルダーの新しいコピーを毎日作成しますか? 好みの戦略に応じて、s3cmd sync または put を使用します。
  3. データベースを SQL ファイルにダンプします。その sql ファイルを圧縮します。おそらく、YYYY-MM-DD.sql.gz のように名前に日付を含めたいと思うでしょう。
  4. そのファイルを s3cmd で任意のバケットにコピーします。

これらすべてを単純な bash スクリプトにまとめてスクリプト化し、定期的に cron で実行することができます。バックアップはパフォーマンスに多少の影響を与えるため、オフピーク時にスケジュールする必要があることに注意してください。

于 2013-06-06T15:55:58.343 に答える