序章

Baculaは、コンピュータシステムのバックアップを作成してデータリカバリを実行できるオープンソースのネットワークバックアップソリューションです。 非常に柔軟で堅牢であるため、構成が少し面倒ですが、多くの状況でのバックアップに適しています。 データ損失からの復旧は多くの場合、ディザスタリカバリ計画の重要な部分であるため、バックアップシステムはほとんどのサーバーインフラストラクチャの重要なコンポーネントです。

このチュートリアルでは、CentOS7サーバーにBaculaのサーバーコンポーネントをインストールして構成する方法を示します。 ローカルバックアップを作成する毎週のジョブを実行するようにBaculaを構成します(つまり、 自身のホストのバックアップ)。 これ自体は、Baculaの特に魅力的な使用法ではありませんが、他のサーバーのバックアップを作成するための良い出発点を提供します。 バックアップクライアント。 このシリーズの次のチュートリアルでは、Baculaクライアントをインストールして構成し、Baculaサーバーを構成することにより、他のリモートサーバーのバックアップを作成する方法について説明します。

代わりにUbuntu14.04を使用したい場合は、次のリンクをたどってください: Ubuntu14.04にBaculaサーバーをインストールする方法

前提条件

CentOS 7サーバーでスーパーユーザー(sudo)アクセス権が必要です。 また、サーバーには、いつでも保持する予定のすべてのバックアップ用に十分なディスク容量が必要です。

DigitalOceanを使用している場合は、Baculaサーバーと同じデータセンターリージョンにあるすべてのクライアントサーバーでプライベートネットワークを有効にする必要があります。 これにより、サーバーがバックアップを実行するときにプライベートネットワークを使用できるようになり、ネットワークのオーバーヘッドが削減されます。

サーバーのプライベートFQDNを使用するようにBaculaを構成します。 bacula.private.example.com。 DNSを設定していない場合は、代わりに適切なIPアドレスを使用してください。 プライベートネットワークを有効にしていない場合は、このチュートリアルのすべてのネットワーク接続情報を、問題のサーバーが到達可能なネットワークアドレスに置き換えてください(例: パブリックIPアドレスまたはVPNトンネル)。

最後の仮定は、SELinuxが無効になっているか、SELinux関連の問題を自分でトラブルシューティングできることです。

Baculaのコンポーネントの概要を見てみましょう。

Baculaコンポーネントの概要

Baculaはいくつかのソフトウェアコンポーネントで構成されていますが、サーバークライアントバックアップモデルに従います。 説明を簡単にするために、個々のBaculaコンポーネントよりも、バックアップサーバーバックアップクライアントに焦点を当てます。 それでも、さまざまなBaculaコンポーネントについて大まかな知識を持っていることが重要なので、ここでそれらについて説明します。

Bacula server (これを「バックアップサーバー」とも呼びます)には、次のコンポーネントがあります。

  • Bacula Director(DIR):ファイルデーモンとストレージデーモンによって実行されるバックアップと復元の操作を制御するソフトウェア
  • ストレージデーモン(SD):バックアップに使用されるストレージデバイスで読み取りと書き込みを実行するソフトウェア
  • カタログ:バックアップされたファイルのデータベースを維持するサービス。 データベースは、MySQLやPostgreSQLなどのSQLデータベースに保存されます
  • Bacula Console:バックアップ管理者がBacula Directorと対話し、制御できるようにするコマンドラインインターフェイス
Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

Bacula client 、すなわち バックアップされるサーバーは、ファイルデーモン(FD)コンポーネントを実行します。 ファイルデーモンは、バックアップされるデータへのアクセスをBaculaサーバー(具体的にはDirector)に提供するソフトウェアです。 これらのサーバーを「バックアップクライアント」または「クライアント」とも呼びます。

はじめに述べたように、独自のファイルシステムのバックアップを作成するようにバックアップサーバーを構成します。 これは、バックアップサーバーがバックアップクライアントでもあり、ファイルデーモンコンポーネントを実行することを意味します。

インストールを始めましょう。

BaculaとMySQLをインストールする

Baculaは、MySQLやPostreSQLなどのSQLデータベースを使用して、バックアップカタログを管理します。 このチュートリアルでは、MySQLのドロップイン代替品であるMariaDBを使用します。

yumを使用してBaculaおよびMariaDBサーバーパッケージをインストールします。

  1. sudo yum install -y bacula-director bacula-storage bacula-console bacula-client mariadb-server

インストールが完了したら、次のコマンドでMySQLを起動する必要があります。

  1. sudo systemctl start mariadb

MySQL(MariaDB)がインストールされて実行されたので、次のスクリプトを使用してBaculaデータベースのユーザーとテーブルを作成しましょう。

  1. /usr/libexec/bacula/grant_mysql_privileges
  2. /usr/libexec/bacula/create_mysql_database -u root
  3. /usr/libexec/bacula/make_mysql_tables -u bacula

次に、いくつかの危険なデフォルトを削除し、データベースシステムへのアクセスを少しロックダウンする簡単なセキュリティスクリプトを実行します。 次のコマンドを実行して、インタラクティブスクリプトを開始します。

  1. sudo mysql_secure_installation

プロンプトで、現在のルートパスワードの入力を求められます。 MySQLをインストールしたばかりなので、MySQLがない可能性が高いので、Enterキーを押して空白のままにします。 次に、rootパスワードを設定するかどうかを尋ねるプロンプトが表示されます。 先に進み、Enterを押して、パスワードを設定します。 残りの質問については、各プロンプトでEnterキーを押すだけで、デフォルト値を受け入れることができます。 これにより、一部のサンプルユーザーとデータベースが削除され、リモートrootログインが無効になり、これらの新しいルールが読み込まれるため、MySQLは行った変更をすぐに尊重します。

次に、Baculaデータベースユーザーのパスワードを設定する必要があります。

ルートMySQLユーザーとしてMySQLコンソールに入ります。

  1. mysql -u root -p

プロンプトで、設定したMySQLrootパスワードを入力します。

次に、Baculaデータベースユーザーのパスワードを設定します。 このコマンドを使用しますが、強調表示された「bacula_db_password」を強力なパスワードに置き換えます。

  1. UPDATE mysql.user SET Password=PASSWORD('bacula_db_password') WHERE User='bacula';
  2. FLUSH PRIVILEGES;

ここで完了したら、MySQLプロンプトを終了します。

  1. exit

MariaDBが起動時に開始できるようにします。 これを行うには、次のコマンドを使用します。

  1. sudo systemctl enable mariadb

MySQLライブラリを使用するようにBaculaを設定する

デフォルトでは、BaculaはPostgreSQLライブラリを使用するように設定されています。 MySQLを使用しているため、代わりにMySQLライブラリを使用するように設定する必要があります。

次のコマンドを実行します。

  1. sudo alternatives --config libbaccats.so

次のプロンプトが表示されます。 1(MySQL)を入力してください:

Output
There are 3 programs which provide 'libbaccats.so'. Selection Command ----------------------------------------------- 1 /usr/lib64/libbaccats-mysql.so 2 /usr/lib64/libbaccats-sqlite3.so *+ 3 /usr/lib64/libbaccats-postgresql.so Enter to keep the current selection[+], or type selection number: 1

これで、Baculaサーバー(およびクライアント)コンポーネントがインストールされました。 バックアップと復元のディレクトリを作成しましょう。

バックアップと復元のディレクトリを作成する

Baculaには、バックアップアーカイブを保存するための backup ディレクトリと、復元されたファイルが配置されるrestoreディレクトリが必要です。 システムに複数のパーティションがある場合は、十分なスペースがあるパーティションにディレクトリを作成してください。

これらの両方の目的のために新しいディレクトリを作成しましょう。

  1. sudo mkdir -p /bacula/backup /bacula/restore

baculaプロセス(およびスーパーユーザー)のみがこれらの場所にアクセスできるように、ファイルのアクセス許可を変更する必要があります。

  1. sudo chown -R bacula:bacula /bacula
  2. sudo chmod -R 700 /bacula

これで、BaculaDirectorを構成する準備が整いました。

BaculaDirectorを設定する

Baculaには、正しく機能するために独立して構成する必要のあるいくつかのコンポーネントがあります。 構成ファイルはすべて/etc/baculaディレクトリにあります。

BaculaDirectorから始めましょう。

お気に入りのテキストエディタでBaculaDirector構成ファイルを開きます。 viを使用します:

  1. sudo vi /etc/bacula/bacula-dir.conf

Directorリソースの構成

ここに示すDirAddress行を追加して、Directorリソースを見つけ、127.0.0.1(localhost)でリッスンするように構成します。

bacula-dir.conf —ディレクターDirAddressを追加します
Director {                            # define myself
  Name = bacula-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/etc/bacula/query.sql"
  WorkingDirectory = "/var/spool/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1
  Password = "@@[email protected]@"         # Console password
  Messages = Daemon
  DirAddress = 127.0.0.1
}

次に、ファイルの残りの部分に移動します。

ローカルジョブの構成

Baculaジョブは、バックアップと復元のアクションを実行するために使用されます。 ジョブリソースは、クライアントの名前、バックアップまたは復元するFileSetなど、特定のジョブが実行する内容の詳細を定義します。

ここでは、ローカルファイルシステムのバックアップを実行するために使用されるジョブを構成します。

Director構成で、「BackupClient1」という名前の Job リソースを見つけます(「BackupClient1」を検索します)。 Nameの値を「BackupLocalFiles」に変更すると、次のようになります。

bacula-dir.conf —BackupClient1ジョブの名前を変更します
Job {
  Name = "BackupLocalFiles"
  JobDefs = "DefaultJob"
}

次に、「RestoreFiles」という名前の Job リソースを見つけます(「RestoreFiles」を検索します)。 このジョブでは、Nameの値を「RestoreLocalFiles」に更新することと、Whereの値を「/bacula/restore」に更新することの2つを変更します。 次のようになります。

bacula-dir.conf —RestoreFilesジョブの名前を変更します
Job {
  Name = "RestoreLocalFiles"
  Type = Restore
  Client=BackupServer-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

これにより、以前に作成したディレクトリである/bacula/restoreにファイルを復元するようにRestoreLocalFilesジョブが構成されます。

ファイルセットの構成

Bacula FileSetは、バックアップ選択からincludeまたはexcludeファイルにファイルまたはディレクトリのセットを定義し、ジョブによって使用されます。

「FullSet」という名前のFileSetリソースを見つけます(「#バックアップするファイルのリスト」というコメントの下にあります)。 ここでは、3つの変更を行います。(1)gzipを使用してバックアップを圧縮するオプションを追加し、(2)インクルードファイルを/usr/sbinから/に変更し、(3)[X158X ]