はじめに
Baculaは、GPLv2で公開されているネットワークバックアップシステムです。ネットワーク対応のバックアップシステムとしては、Symantec BackupExec(tm)や、CA ARCserve(tm)などの商用システムを企業では利用することが多いですが、Baculaはこれらのシステムにも引けを取らないバックアップソリューションを提供しています。エンタープライズ向けのネットワークバックアップソリューションとして環境構築をご紹介します。
今回は、Baculaによるバックアップシステムの構築方法を前編、後編の2回に分けて解説します。前編では、バックアップサーバーとクライアントの構築方法を解説し、後編ではリモートバックアップとリストア方法について解説します。
情シスや部門サーバを自作スクリプトでバックアップしている場合、低コストで高い信頼性のバックアップソリューションを求めている方にオススメしたいソリューションです。
前提条件
構築に必要なサーバー要件および、導入パッケージは下記のとおりです。
- サーバー要件サーバー要件は、次のとおりです。
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 - 導入するパッケージ導入するパッケージは、次のとおりです。
サーバー パッケージ名 バージョン Baculaサーバー bacula-storage-mysql 5.0.0 bacula-director-mysql bacula-client bacula-console Baculaクライアント bacula-client 5.0.0 bacula-console
Baculaサーバーの構築
- パッケージのインストール
$ 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!
- 実行ファイルの修正環境構築に使用する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,
- 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
- ユーザーパスワードの変更作成されたMySQL上のbaculaユーザーのパスワードを変更します。
下記のSQLファイルを作成して、実行します。
$ vi bacula-password.sql UPDATE mysql.user SET password=PASSWORD("admin") WHERE user='bacula'; FLUSH PRIVILEGES;
作成したSQL文を実行し、baculaユーザーでログインできるか確認します。$ mysql -u root -p < bacula-password.sql $ mysql -u bacula -p -e 'status'
- 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” - Bacula Consoleの設定変更Directorと同様の手順で変更します。
$ sudo vi /etc/bacula/bconsole.conf
ディレクティブ 設定項目 設定値 Director Password “admin” - Storage Daemonの設定変更Directorディレクティブの変更は2箇所です。
$ sudo vi /etc/bacula/bacula-sd.conf
ディレクティブ 設定項目 設定値 Director Password “admin” Password “admin” Archive Device /mybackup - File Daemonの設定変更Directorディレクティブの変更は2箇所です。
$ sudo vi /etc/bacula/bacula-fd.conf
ディレクティブ 設定項目 設定値 Director Password “admin” Password “admin” - バックアップフォルダの作成構築するバックアップサーバーでは、任意のフォルダ上にバックアップデータを保存するため、バックアップフォルダを作成し、フォルダ所有者をbaculaに設定します。
バックアップフォルダの容量に問題がある場合、NFSやCIFSなどを用いてリモートサーバーの共有ディスクをマウントすると良いでしょう。
$ sudo mkdir -p /mybackup $ sudo chown bacula:bacula /mybackup
- サービス起動Baculaの全ての設定ファイルが準備できましたので、サービスを起動します。
$ sudo service bacula-dir start $ sudo service bacula-fd start $ sudo service bacula-sd start
- 自動起動設定
$ sudo chkconfig bacula-dir on $ sudo chkconfig bacula-fd on $ sudo chkconfig bacula-sd on
- サービスの動作確認Baculaのサービスが起動したら、Bacula Consoleを用いて接続確認を行います。
$ sudo bconsole
*(アスタリスク)は、コマンドプロンプトです。 status 1を入力すると、Baculaサーバーの状態が確認できます。 exitを入力すると、終了します。
以上で、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の設定を変更します。
- サービス起動と自動起動設定
$ sudo service bacula-fd start $ sudo chkconfig bacula-fd on
- サービスの動作確認Baculaのサービスが起動したら、Bacula Consoleを用いて接続確認を行います。
$ sudo bconsole
確認方法は、Baculaサーバーの構築と同様の手順です。
以上で、Baculaクライアントの基本設定は終了です。
まとめ
ここまで、バックアップサーバーとクライアントの構築方法を解説しました。後編ではリモートバックアップとリストア方法について解説します。