:::: MENU ::::

OSSバックアップツール Baculaの設定


SovaのPOPです。
今回はOSSのバックアップツール“Bacula”の使い方を紹介します。
国内ではあまり話題になりませんが、海外では利用実績の多いツールです。
高機能なバックアップツールであるため、ビジネスでも利用されているようです。
Linuxのほか、Windowsも対応をしているみたいです。

Baculaの特徴としてはネットワーク越しのバックアップが容易に実現できるところです。
また、複数のバックアップ対象が合った場合も、1つのバックアップサーバに簡単に集約することができます。
バックアップ先はHDD上に保存する他、テープ装置等にも対応しています。

まずはBaculaの仕組みから紹介します。
Baculaは主に以下の3つのデーモンで構成されています。

・bacula-dir:バキュラ全体の管理。バックアップジョブ管理も行う
・bacula-sd:バキュラのバックアップデータ書き込み先のストレージの管理
・bacula-fd:バキュラのバックアップを実際に実行するクライアント

処理の流れとしては以下の通りとなります
bacula-dirがバックアップジョブを実行するように、bacula-fdに命令を送る
 その際bacula-dirはバックアップ対象、バックアップ先の情報、バックアップ方法(フルバックアップ、差分バックアップ)等の情報もbacula-dirへ送る
badula-dirから命令を受けたbacula-fdbacula-sdに対してバックアップ転送を開始する。

bacula-dirが司令塔で、bacula-fd、bacula-sdは命令を受けたとおり動作する、といった感じとなります。

さて、それでは具体的な設定方法について説明します。
今回は、以下のような2台構成とします。
・バックアップサーバ:CentOS 6.5
・バックアップ対象サーバ:CentOS 6.5
・Bacula:ver5.0

まずはサーバ側で、必要なソフトを追加します。
バックアップカタログ情報等を記録するためのデータベースを導入します。

MySQL、PostgreSQL、SQLiteが選択できるようですが、今回はMySQLを使用します。
mysqlを以下のコマンドでインストールします。
yum install mysql-server
chkconfig mysqld on

次にBaculaのインストールです。
bacula-dir,bacula-sd,bacula-fdは全部入れます。
以下のコマンドでインストールします。
yum install bacula-storage-mysql bacula-director-mysql bacula-client bacula-console

まずはデータベースの設定です。
baculaをインストールすると、データベース初期設定を行うスクリプトが以下の場所に配置されます。
/usr/libexec/bacula/make_mysql_tables
こちらを一部修正する必要があります。
323〜330行を以下の通り修正します。(MySQLの予約語の関係で修正が必要です)
323 CREATE TABLE Counters (
324 \`Counter\` TINYBLOB NOT NULL,
325 \`MinValue\` INTEGER DEFAULT 0,
326 \`MaxValue\` INTEGER DEFAULT 0,
327 \`CurrentValue\` INTEGER DEFAULT 0,
328 \`WrapCounter\` TINYBLOB NOT NULL,
329 PRIMARY KEY (Counter(128))
330 );

mysql自体も設定を行います。rootにパスワードを設定します。
mysql -uroot -e “set password for root@localhost=password(‘パスワード’);”

rootでログインし、baculaユーザを作成します。
mysql -u root -p
GRANT ALL PRIVILEGES ON bacula.* TO bacula@localhost IDENTIFIED BY ‘パスワード';
FLUSH PRIVILEGES;

データベースも作成します。
CREATE DATABASE bacula;

mysqlから抜けて、baculaデータベース初期設定を行うスクリプトを実行します。
/usr/libexec/bacula/make_mysql_tables -p

以上でデータベースの設定は完了です。

それではbaculaの設定に移ります。

まずはbacula-sdの設定から。
vimなどで設定ファイルを開きます。
vim /etc/bacula/bacula-sd.conf

なお、/backupというディレクトリに対して、baculaユーザに書き込み権限を与えておく必要があります。

次にbconsole.confの設定を行います。
bconsoleとはbacula専用のコンソールにアクセスするためのものです。
このコンソール上からジョブの実行等をさせることができます。
こちらもパスワードの設定のみで完了です。
vim /etc/bacula/bconsole.conf

なお、addressのところにlocalhostを設定していますが、ここはbacula-dirのアドレスをしていますので、
もしbacula-dirが別のサーバだった場合、そのサーバのアドレスを設定する必要が有ります。

次にbacuka-fdの設定です。
サーバ側になぜバックアップクライアントであるbacula-fdを設定しているかというと、
BackupCatalogのバックアップにこのクライアントが使われるからです。
vim /etc/bacula/bacula-fd.conf

さて、一番設定量の多い、bacula-dirの設定です。
今回は以下の条件で設定してみます。
・毎日23時にバックアップ対象サーバのバックアップを実施
・日曜日にフルバックアップを撮り、月曜日〜土曜日は差分バックアップを取る
・バックアップデータの保持期間は14日間(2週間)とする
以下の設定はすべてbacula-dir.confの設定となります。
vim /etc/bacula/bacula-dir.conf

まずはDirectorの設定。ここはパスワードの設定をすれば良いです。

次にジョブのデフォルトの設定、JobDefsの設定を行います。
Baculaでは、まずは全体的に共通するデフォルトのジョブを設定し、
個別のジョブはそのデフォルトジョブの設定から必要事項を上書きすることで、設定していきます。

次に個別のバックアップジョブの設定を行います。

ここで出てくるClient,Schedule,FileSetは後ほど設定します。
その設定の名前と同じ名前を入れる必要が有ります。

リストアのジョブも作っておくといいと思います。

ポイントとしてはClientとFileSetはバックアップジョブと同じものを指定する必要があります。
Whereの設定は、リストア先のパスになります。
リストアを実行すると、バックアップ対象サーバの/tmp/bacula-restoresの配下にリストアしたデータが配置されます。

次にFileSetの設定を行います。
ここでバックアップ対象のファイルを指定します。

NameにはジョブのFileSetで設定した名前を入れる必要があります。

次にスケジュールの設定を行います。

NameにはジョブのScheduleに設定した名前を入れる必要が有ります。
バックアップ方式は他に増分バックアップがあり、増分バックアップではIncrementalと記述します。

次にクライアントの設定です。

NameにはジョブのClientに設定した名前を入れる必要があります。
Addressにはバックアップ対象サーバのIPアドレスを入力するか、ドメインを入力します。

次にバックアップストレージの設定です。

ここの注意点としては、Addressにはbacula-fdから到達できるアドレスを入れる必要があることです。
最初に説明したとおり、bacula-fdからbacula-sdは直接、接続しに行きます。
その際、このAddress情報を用いてbacula-fdはbacula-sdを特定します。
つまり、localhostを設定してしまうと、bacula-fdは自分自身のアドレス宛に接続しようとしてしまいます。
同じセグメント内であればbacula-sdの動いているサーバのローカルIPアドレスを入れればいいです。
同じセグメント内にバックアップサーバ、バックアップ対象サーバがない場合、
bacula-fdからbacula-sdへ通信できるようにルーティングをする必要があります。

次にバックアップカタログの設定です。

ここではmysqlで設定したbaculaデータベース、mysqlのbaculaユーザを指定します。

次にストレージのボリュームプールの設定です。

NameにはジョブのPoolに設定した名前を入れる必要があります。

次にbacula操作用のコンソールの設定です。

長くなりましたが、以上でbacula-dirの設定が完了です。

あとサーバに必要なのはファイアウォールのポート開放です。
9101,9102,9103のポートを開放する必要があります。
DIRportという設定値を変えれば使用するポート番号を変えられます。
9101はbacula-dirが使用、9102はbacula-fdが使用、9103はbacula-sdが使用しています。

サービスを起動します。

では次にクライアント側の設定です。
まずは必要なパッケージをインストールします。
yum install bacula-client

インストール後、bacula-fdの設定を行います。
vim /etc/bacula/bacula-fd.conf

FileDaemonのNameについては、bacula-dirのClientのNameの設定値と同じにする必要があります。

バックアップ対象サーバもファイアウォールの9102ポートを開ける必要があります。

サービスを起動します。

以上で設定は終わりです。次回は実際にBacula専用コンソールbconsoleを用いてジョブを動かしてみます。


So, what do you think ?