Baculaによる、無料のエンタープライズ向けバックアップシステムを構築する【前編】

The Open Source Network Backup Solution

はじめに

Baculaは、GPLv2で公開されているネットワークバックアップシステムです。ネットワーク対応のバックアップシステムとしては、Symantec BackupExec(tm)や、CA ARCserve(tm)などの商用システムを企業では利用することが多いですが、Baculaはこれらのシステムにも引けを取らないバックアップソリューションを提供しています。エンタープライズ向けのネットワークバックアップソリューションとして環境構築をご紹介します。

今回は、Baculaによるバックアップシステムの構築方法を前編、後編の2回に分けて解説します。前編では、バックアップサーバーとクライアントの構築方法を解説し、後編ではリモートバックアップとリストア方法について解説します。

情シスや部門サーバを自作スクリプトでバックアップしている場合、低コストで高い信頼性のバックアップソリューションを求めている方にオススメしたいソリューションです。

 

前提条件

構築に必要なサーバー要件および、導入パッケージは下記のとおりです。

  1. サーバー要件サーバー要件は、次のとおりです。
    Baculaサーバー
    ホスト名 bacula-server
    IPアドレス 192.168.0.50
    OS CentOS 6.5 i386
    MySQL 5.5.35
    サードパーティリポジトリ EPEL
    Baculaクライアント
    ホスト名 bacula-client
    IPアドレス 192.168.0.20
    OS CentOS 6.5 i386
    サードパーティリポジトリ EPEL
  2. 導入するパッケージ導入するパッケージは、次のとおりです。
    サーバー パッケージ名 バージョン
    Baculaサーバー bacula-storage-mysql 5.0.0
    bacula-director-mysql
    bacula-client
    bacula-console
    Baculaクライアント bacula-client 5.0.0
    bacula-console

Baculaサーバーの構築

  1. パッケージのインストール
    $ sudo yum --enablerepo=epel install -y bacula-storage-mysql bacula-director-mysql bacula-client bacula-console
    
    [vagrant@bacula-server ~]$ sudo yum --enablerepo=epel install -y bacula-storage-mysql bacula-director-mysql bacula-client bacula-console
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    epel/metalink                                            | 4.8 kB     00:00
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
     * base: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
     * epel: ftp.riken.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
     * extras: www.ftp.ne.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
     * updates: www.ftp.ne.jp
    base                                                     | 3.7 kB     00:00
    epel                                                     | 4.2 kB     00:00
    epel/primary_db                                          | 4.9 MB     00:02
    
      Installing : bacula-director-common-5.0.0-12.el6.i686                    9/11
      Installing : bacula-client-5.0.0-12.el6.i686                            10/11
      Installing : bacula-console-5.0.0-12.el6.i686                           11/11
      Verifying  : bacula-common-5.0.0-12.el6.i686                             1/11
      Verifying  : mailx-12.4-7.el6.i686                                       2/11
      Verifying  : bacula-director-mysql-5.0.0-12.el6.i686                     3/11
      Verifying  : perl-Date-Manip-6.24-1.el6.noarch                           4/11
      Verifying  : bacula-client-5.0.0-12.el6.i686                             5/11
      Verifying  : perl-YAML-Syck-1.07-4.el6.i686                              6/11
      Verifying  : bacula-storage-common-5.0.0-12.el6.i686                     7/11
      Verifying  : bacula-director-common-5.0.0-12.el6.i686                    8/11
      Verifying  : logwatch-7.3.6-52.el6.noarch                                9/11
      Verifying  : bacula-storage-mysql-5.0.0-12.el6.i686                     10/11
      Verifying  : bacula-console-5.0.0-12.el6.i686                           11/11
    
    Installed:
      bacula-client.i686 0:5.0.0-12.el6
      bacula-console.i686 0:5.0.0-12.el6
      bacula-director-mysql.i686 0:5.0.0-12.el6
      bacula-storage-mysql.i686 0:5.0.0-12.el6
    
    Dependency Installed:
      bacula-common.i686 0:5.0.0-12.el6
      bacula-director-common.i686 0:5.0.0-12.el6
      bacula-storage-common.i686 0:5.0.0-12.el6
      logwatch.noarch 0:7.3.6-52.el6
      mailx.i686 0:12.4-7.el6
      perl-Date-Manip.noarch 0:6.24-1.el6
      perl-YAML-Syck.i686 0:1.07-4.el6
    
    Complete!
  2. 実行ファイルの修正環境構築に使用するmake_mysql_tablesコマンド内に記述されているSQL文の一部のフィールド名が、MySQL 5.5系の予約語になっているため、該当箇所を下記のとおり修正します。 なお、この問題はバージョン5.0.4では修正されています。
    $ sudo vi /usr/libexec/bacula/make_mysql_tables
    326行目~330行目を修正する。
    (修正前)
       Counter TINYBLOB NOT NULL,
       MinValue INTEGER DEFAULT 0,
       MaxValue INTEGER DEFAULT 0,
       CurrentValue INTEGER DEFAULT 0,
       WrapCounter TINYBLOB NOT NULL,
    (修正後)
     \`Counter\` TINYBLOB NOT NULL,
     \`MinValue\` INTEGER DEFAULT 0,
     \`MaxValue\` INTEGER DEFAULT 0,
     \`CurrentValue\` INTEGER DEFAULT 0,
     \`WrapCounter\` TINYBLOB NOT NULL,
  3. Baculaデータベース環境の作成Baculaが使用するデータベースなどの環境を作成します。 実行の際には、MySQLのrootユーザーでログインできる必要があります。
    $ sudo /usr/libexec/bacula/grant_mysql_privileges -u root -p
    $ sudo /usr/libexec/bacula/create_mysql_database -u root -p
    $ sudo /usr/libexec/bacula/make_mysql_tables -u root -p
    $ sudo /usr/libexec/bacula/grant_bacula_privileges -u root -p
    4011-03 4011-04 4011-05 4011-06
  4. ユーザーパスワードの変更作成されたMySQL上のbaculaユーザーのパスワードを変更します。 下記のSQLファイルを作成して、実行します。
    $ vi bacula-password.sql
    
    UPDATE mysql.user SET password=PASSWORD("admin") WHERE user='bacula';
    FLUSH PRIVILEGES;
    4011-07 作成したSQL文を実行し、baculaユーザーでログインできるか確認します。
    $ mysql -u root -p < bacula-password.sql
    $ mysql -u bacula -p -e 'status'
    4011-08 4011-09
  5. Bacula Directorの設定変更Directorは、バックアップ・リストアのコントロールおよび、Storage/Fileデーモンとの通信を行う中心的な役割を担っています。 Director設定ファイルを、下記のとおり変更します。
    $ sudo vi /etc/bacula/bacula-dir.conf
    ディレクティブ 設定項目 設定値
    Director Password “admin”
    Storage Address 192.168.0.50
    Password “admin”
    Catalog dbpassword “admin”
    Console Password “admin”
    Client Address 192.168.0.20
    Password “admin”
    4011-10 4011-11 4011-12 4011-13 4011-14
  6. Bacula Consoleの設定変更Directorと同様の手順で変更します。
    $ sudo vi /etc/bacula/bconsole.conf
    ディレクティブ 設定項目 設定値
    Director Password “admin”
    4011-15
  7. Storage Daemonの設定変更Directorディレクティブの変更は2箇所です。
    $ sudo vi /etc/bacula/bacula-sd.conf
    ディレクティブ 設定項目 設定値
    Director Password “admin”
    Password “admin”
    Archive Device /mybackup
    4011-16 4011-17 4011-18
  8. File Daemonの設定変更Directorディレクティブの変更は2箇所です。
    $ sudo vi /etc/bacula/bacula-fd.conf
    ディレクティブ 設定項目 設定値
    Director Password “admin”
    Password “admin”
    4011-19
  9. バックアップフォルダの作成構築するバックアップサーバーでは、任意のフォルダ上にバックアップデータを保存するため、バックアップフォルダを作成し、フォルダ所有者をbaculaに設定します。 バックアップフォルダの容量に問題がある場合、NFSやCIFSなどを用いてリモートサーバーの共有ディスクをマウントすると良いでしょう。
    $ sudo mkdir -p /mybackup
    $ sudo chown bacula:bacula /mybackup
    4011-20
  10. サービス起動Baculaの全ての設定ファイルが準備できましたので、サービスを起動します。
    $ sudo service bacula-dir start
    $ sudo service bacula-fd start
    $ sudo service bacula-sd start
    4011-21
  11. 自動起動設定
    $ sudo chkconfig bacula-dir on
    $ sudo chkconfig bacula-fd on
    $ sudo chkconfig bacula-sd on
    4011-22
  12. サービスの動作確認Baculaのサービスが起動したら、Bacula Consoleを用いて接続確認を行います。
    $ sudo bconsole
    *(アスタリスク)は、コマンドプロンプトです。 status 1を入力すると、Baculaサーバーの状態が確認できます。 exitを入力すると、終了します。 4011-23

以上で、Baculaサーバーの基本設定は終了です。

Baculaクライアントの構築

Baculaクライアントでは、File Daemonおよび、Bacula Consoleのみインストールし、設定ファイルを変更します。

  • パッケージのインストール
    $ sudo yum --enablerepo=epel install -y bacula-client bacula-console
    
    [vagrant@bacula-client ~]$ sudo yum --enablerepo=epel install -y bacula-client bacula-console
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    epel/metalink                                            | 5.0 kB     00:00
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
     * base: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
     * epel: ftp.riken.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
     * extras: www.ftp.ne.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: mirror.fairway.ne.jp
    
    ================================================================================
    Install       3 Package(s)
    
    Total download size: 636 k
    Installed size: 1.4 M
    Downloading Packages:
    (1/3): bacula-client-5.0.0-12.el6.i686.rpm               | 172 kB     00:00
    (2/3): bacula-common-5.0.0-12.el6.i686.rpm               | 357 kB     00:00
    (3/3): bacula-console-5.0.0-12.el6.i686.rpm              | 107 kB     00:00
    --------------------------------------------------------------------------------
    Total                                           1.8 MB/s | 636 kB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : bacula-common-5.0.0-12.el6.i686                              1/3
      Installing : bacula-client-5.0.0-12.el6.i686                              2/3
      Installing : bacula-console-5.0.0-12.el6.i686                             3/3
      Verifying  : bacula-common-5.0.0-12.el6.i686                              1/3
      Verifying  : bacula-client-5.0.0-12.el6.i686                              2/3
      Verifying  : bacula-console-5.0.0-12.el6.i686                             3/3
    
    Installed:
      bacula-client.i686 0:5.0.0-12.el6      bacula-console.i686 0:5.0.0-12.el6
    
    Dependency Installed:
      bacula-common.i686 0:5.0.0-12.el6
    
    Complete!
  • 設定ファイルの変更Baculaサーバーの構築と同様に、File Daemonおよび、Bacula Consoleの設定を変更します。 4011-26 4011-27
  • サービス起動と自動起動設定
    $ sudo service bacula-fd start
    $ sudo chkconfig bacula-fd on
    4011-28
  • サービスの動作確認Baculaのサービスが起動したら、Bacula Consoleを用いて接続確認を行います。
    $ sudo bconsole
    確認方法は、Baculaサーバーの構築と同様の手順です。 4011-29

以上で、Baculaクライアントの基本設定は終了です。

まとめ

ここまで、バックアップサーバーとクライアントの構築方法を解説しました。後編ではリモートバックアップとリストア方法について解説します。

Comments are closed.