序章

アプリケーションサーバーを起動して実行した後、重要な次のステップはバックアップシステムをセットアップすることです。 バックアップシステムを使用すると、データの定期的なバックアップコピーを作成し、それらのバックアップからデータを復元できます。 ユーザーエラーやコンピュータシステムで発生しがちな最終的なハードウェア障害が原因でデータが失われる可能性があるため、バックアップをセーフティネットとして設定する必要があります。

このチュートリアルでは、Baculaを実行している別のバックアップサーバーを使用して、単一のUbuntu14.04サーバーでLAMPスタックを実行してPHPアプリケーションの適切なバックアップを作成する方法を示します。 Baculaのようなバックアップシステムを使用する利点の1つは、個々のファイルレベルで何をバックアップおよび復元する必要があるか、およびバックアップを作成するタイミングのスケジュールを完全に制御できることです。 バックアップを作成するときにファイルレベルの粒度を設定すると、バックアップの選択を必要なファイルのみに制限できるため、ファイルシステム全体をバックアップする場合に比べてディスク容量を節約できます。

Backup Diagram

これが過度に思われる場合は、 DigitalOcean Droplet Backups (Droplet全体のスナップショットバックアップ)を検討することをお勧めします。これは、Dropletを作成するときに有効にする必要があります。 これらのバックアップはセットアップが簡単で、毎週のバックアップのみが必要な場合は、ニーズに十分対応できる場合があります。 DigitalOceanバックアップを選択する場合は、データベースのホットバックアップの作成セクションに従って、データベースのホットバックアップを設定してください。これは、データベースバックアップの一貫性(使用可能)を確保するために必要です。

前提条件

このチュートリアルでは、プライベートネットワークが有効になっている単一のUbuntu 14.04サーバー上のLAMP(Linux、Apache、MySQL / MariaDB、およびPHP)スタックで実行されているWordPressなどのPHPアプリケーションを実行していることを前提としています。 これをLAMPサーバーと呼びます。 この例では、次のチュートリアルに従って作成されたWordPressサーバーのバックアップを作成します。

別のPHPアプリケーションを実行している場合、またはApacheの代わりにNginxを使用している場合でも、バックアップの選択に必要な調整を加えれば、このチュートリアルは正常に機能します。

もちろん、Baculaサーバーソフトウェアがインストールされるサーバーへのsudoアクセスが必要になります。これをbackupsサーバーと呼びます。 理想的には、LAMPサーバーと同じデータセンターにあり、プライベートネットワークが有効になっている必要があります。 作成されたバックアップはこのサーバー上に存在するため、選択したバックアップの複数のコピーを保存するのに十分なディスク容量が必要になります。

バックアップの選択

はじめに述べたように、バックアップの選択(バックアップが作成されるたびにコピーされるファイル)は、アプリケーションを以前の状態に復元するために必要なファイルのみで構成されます。 つまり、これは次のデータをバックアップすることを意味します。

  • PHPアプリケーションファイル:これはWebサーバーのDocumentRootになります。 Ubuntuでは、これはデフォルトで/var/www/htmlになります
  • MySQLデータベース:MySQLデータファイルは通常/var/lib/mysqlに保存されますが、データベースのホットバックアップを別の場所に作成する必要があります。 ホットバックアップは、バックアップの選択の一部になります

便宜上、バックアップの選択にApacheおよびMySQL構成ファイルも含めます。 SSLキーや証明書ファイルなど、他に重要なファイルがある場合は、それらも必ず含めてください。

サーバー上の残りのファイルは、初期設定のソフトウェアインストール手順に従って置き換えることができます。 サーバーに障害が発生した場合は、前提条件のチュートリアルに従ってバックアップを復元し、適切なサービスを再起動することで、代替のLAMPサーバーを作成できます。

前述のファイルをバックアップの選択に含める理由がわからない場合は、マルチパート本番環境用の構築:Webアプリケーションチュートリアルシリーズのリカバリ計画セグメントを確認してください。 マルチサーバーセットアップを例として使用して、Webアプリケーションの回復計画を作成する方法について説明します。

データベースのホットバックアップを設定しましょう。

データベースのホットバックアップを作成する

一貫性のある(つまり 使用可能)アクティブなデータベースのバックアップ。特別な注意が必要です。 MySQLでホットバックアップを作成する簡単で効果的な方法は、PerconaXtraBackupを使用することです。

PerconaXtraBackupをインストールします

LAMP サーバーで、次のチュートリアルに従ってPerconaXtraBackupをインストールおよび構成します。Ubuntu14.04でPerconaXtraBackupを使用してMySQLデータベースのホットバックアップを作成する方法。 フルホットバックアップの実行セクションに到達したら停止します。

XtraBackupスクリプトを作成する

Percona XtraBackupは、MySQLデータベースのホットバックアップを作成する準備ができています。これは、最終的にBacula(またはDigitalOcean Backups)によってバックアップされますが、ホットバックアップは何らかの方法でスケジュールする必要があります。 最も簡単なソリューションであるbashスクリプトとcronジョブを設定します。

/usr/local/binrun_extra_backup.shというbashスクリプトを作成します。

  1. sudo vi /usr/local/bin/run_xtrabackup.sh

次のスクリプトを追加します。 ユーザーとパスワードは、XtraBackupのインストール時に設定したものに置き換えてください。

/usr/local/bin/run_xtrabackup.sh
#!/bin/bash

# pre xtrabackup
chown -R mysql: /var/lib/mysql
find /var/lib/mysql -type d -exec chmod 770 "{}" \;

# delete existing full backup
rm -r /data/backups/full

# xtrabackup create backup
innobackupex --user=bkpuser  --password=bkppassword --no-timestamp /data/backups/full

# xtrabackup prepare backup
innobackupex --apply-log /data/backups/full

保存して終了。 このスクリプトを(スーパーユーザー権限で)実行すると、/data/backups/fullにある既存のXtraBackupバックアップが削除され、新しい完全バックアップが作成されます。 つまり、このスクリプトはデータベースのホットバックアップの単一コピーを維持します。 XtraBackupを使用したバックアップの作成の詳細については、XtraBackupチュートリアルのフルホットバックアップの実行セクションを参照してください。

スクリプトを実行可能にします。

  1. sudo chmod +x /usr/local/bin/run_xtrabackup.sh

データベースを適切にバックアップするには、Baculaがデータベースのバックアップを試みる前に、XtraBackupスクリプトを実行(および完了する)する必要があります。 良い解決策は、スクリプトを「事前バックアップスクリプト」として実行するようにBaculaバックアップジョブを構成することですが、単純にするためにcronジョブを使用することを選択します。

cron構成ファイルを作成します(/etc/cron.dのファイルはrootのcrontabに追加されます):

  1. sudo vi /etc/cron.d/xtrabackup

次のcronジョブを追加します。

/etc/cron.d/xtrabackup
30 22    * * *   root    /usr/local/bin/run_xtrabackup.sh

これにより、スクリプトが毎日午後10時30分(22時間30分)にrootとして実行されるようにスケジュールされます。 Baculaのデフォルトのバックアップジョブは毎日午後11時5分に実行されるようにスケジュールされているため、今回を選択しました。これについては後で調整します。 これにより、XtraBackupスクリプトが完了するまで35分かかります。

データベースのホットバックアップが設定されたので、バックアップサーバーにBaculaをインストールしましょう。

バックアップサーバーにBaculaをインストールする

backups サーバーで、次のチュートリアルに従ってBaculaサーバーをセットアップします: Ubuntu14.04にBaculaサーバーをインストールする方法。

次に、このチュートリアルの Organize Bacula Director Configuration(Server)セクションに従ってください:Baculaを使用してUbuntu14.04サーバーをバックアップする方法。 (バックアップするサーバー上で)Baculaクライアントをセットアップするときにディレクター名が必要になります。 BaculaClientのインストールと設定セクションに到達したら停止します。

設定するすべてのバックアップジョブにRemoteFileプールを使用することに注意してください。 そうは言っても、先に進む前にいくつかの設定を変更することをお勧めします。

LAMPサーバーにBaculaクライアントをインストールする

LAMP サーバーで、このチュートリアルのBaculaクライアントのインストールと構成セクションに従ってBaculaクライアントをインストールします。Baculaを使用してUbuntu14.04サーバーをバックアップする方法ファイルセットの追加(サーバー)セクションに到達したら停止します。

FileDaemon Name (通常は「-fd」が付加されたホスト名)と Director Password (BaculaサーバーがBaculaクライアントに接続するために使用するパスワード)が必要になることに注意してください)LAMPサーバーのbacula-fd.confファイルから。

バックアップクライアントをバックアップサーバーに追加する

backups サーバーであるBaculaサーバーで、LAMPサーバーのクライアントリソース/etc/bacula/conf.d/clients.confファイルに追加します。

clients.confファイルを開きます。

  1. sudo vi /etc/bacula/conf.d/clients.conf

LAMPサーバーのクライアントリソース定義は、次のコードブロックのようになります。 Name の値は、 FileDaemon リソースの名前と一致する必要があり、 Password は、Directorリソースのパスワードと一致する必要があることに注意してください。 、LAMPサーバー上-これらの値は、LAMPサーバー上の/etc/bacula/bacula-fd.confにあります。

projects.conf —クライアントリソース定義の例
Client {
  Name = lamp-fd
  Address = lamp_private_IP_or_hostname
  FDPort = 9102
  Catalog = MyCatalog
  Password = "PDL47XPnjI0QzRpZVJKCDJ_xqlMOp4k46"          # password for Remote FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

保存して終了。 これにより、 backupsサーバー上のBaculaDirectorが、各サーバー上のBaculaクライアントに接続できるように構成されます…

このセクションの詳細については、[X54X]Baculaを使用したUbuntuサーバーのバックアップ方法チュートリアル