Baculaでバックアップしてみる

噂のBacula。
噂かどうかは知らないけど、社長がBaculaに注目してるような事を言ってた。
最近サーバの異音が酷いので、そろそろヤバイのではないかと思い、バックアップしてみる。
 

環境

FedoraのEPELを追加して、Yumでインストールする。
ネットワークバックアップとして最小の2台構成。
2台だけでやる分には、サンプルコンフィグを殆ど弄らなくてもいい気がする。
 

Baculaサーバ

バックアップスケジュールを管理して、ファイルを保存する側。
bacula-sdとbacila-dirを動かす。
 
OS : CentOS 5.3 (2.6.18-128.el5xen)
DB : mysql Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1
Bacula : 2.0.3-10.el5
GUI : なし
 

Baculaクライアント

大事なファイルがある側。
bacula-fdを動かす。
 
OS : CentOS 5.3 (2.6.29.4)
Bacula : 2.0.3-10.el5
GUI : なし
 

サーバ インストール

インストール
yum install --enablerepo=epel bacula-console bacula-director bacula-director-mysql bacula-storage-mysql

 

データベース設定

用意されたBashファイルを使ってもいいんだけど、よく解らないから自分でする。
baculaデータベース作成。
baculaユーザ作成。

CREATE DATABASE bacula;
GRANT ALL PRIVILEGES ON bacula.* TO bacula@localhost IDENTIFIED BY 'bacula';

 
テーブル作成。

/usr/libexec/bacula/make_mysql_tables -ubacula -pbacula

 
すぐ忘れるので、MySQLの基礎っぽいコマンドも書いておく。

-- データベース作成
CREATE DATABASE bacula;
-- ユーザ作成
GRANT ALL PRIVILEGES ON bacula.* TO bacula@localhost IDENTIFIED BY 'bacula';
-- パスワード作成
SET PASSWORD FOR bacula@localhost=PASSWORD('bacula');
-- ユーザ削除
DELETE FROM mysql.user WHERE user='bacula' AND host='localhost';
-- ユーザ確認
SELECT user,host,password FROM mysql.user;

 

サーバ bacula-dir

bacula-dir.confを編集する。
 
サンプルでのパスワードは全て、"@@XX_PASSWORD@@"と書かれてる。("XX"の部分が"DIR"とか"SD"とか)
一括置換した方がいいかもしれない。

grep @@ /etc/bacula/*

 

最低限変更箇所

Director -> Password
Job(Name=BackupCatalog) -> RunBeforeJob = 引数3つ目はDBパスワード
Client -> Password
Storage -> Password
Catalog -> dbname
Messages(Name=Standard) -> mail,operator
Messages(Name=Daemon) -> mail
Console -> Password
 

バックアップ対象ディレクトリ設定

FileSet -> Include -> File = /home
 

バックアップファイルを圧縮する

GZIPで圧縮 : FileSet -> Include -> Options -> Compression = GZIP
GZIP9で圧縮 : FileSet -> Include -> Options -> Compression = GZIP9
 

バックアップファイルを削除するまでの日数設定

365日が流石に長すぎるのは解るけど、果たしてどれ位の期間が丁度いいのか見当が付かない。
Client -> File Retentionが30日になってるから、それよりは長い方がいいんだろう、きっと。
ハードディスク使用量を見つつ、後々変更する予定。
Pool -> Volume Retention = 60 days
 

bacula-dir起動
service bacula-dir start
chkconfig bacula-dir on

 
コンフィグのパスワードを変更してないとこうなるっぽい。
パスワードは空じゃないし、とりあえずデフォルトでいいかと思ったら怒られた。

Starting bacula-dir: Error: Not been configured            [FAILED]

 

サーバ bacula-sd

bacula-sd.confを編集する。
 

最低限編集箇所

Director -> Password
 

bacula-sd起動
service bacula-sd start
chkconfig bacula-sd on

 

クライアント インストール

インストール
yum install --enablerepo=epel bacula-client bacula-console

 

データベース設定

baculaユーザ作成。
mysqldumpするために全ての権限が必要。

GRANT ALL PRIVILEGES ON *.* TO bacula@localhost IDENTIFIED BY 'bacula';

 

クライアント bacula-fd

bacula-fd.confを編集する。
 

最低限変更箇所

Director -> Password
Director -> Password
 

bacula-fd起動
service bacula-fd start
chkconfig bacula-fd on

 

サーバ/クライアント bconsole

bconsole.confを編集する。
 

最低限編集箇所

Director -> address,Password
 

バックアップ実行

コンソールに入る。

bconsole

 
ヘルプ表示。

*help

 
ステータス表示。見方はよく解らない。

*status all

 
ラベルをつける。

*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: eth0
Automatically selected Pool: Default
Connecting to Storage daemon File at 192.168.0.200:9103 ...
Sending label command for Volume "eth0" Slot 0 ...
3000 OK label. VolBytes=188 DVD=0 Volume="eth0" Device="FileStorage" (/var/backup)
Catalog record for Volume "eth0", Slot 0  successfully created.
Requesting to mount FileStorage ...
3906 File device "FileStorage" (/var/backup) is always mounted.

 
バックアップ実行。

*run
A job name must be specified.
The defined Job resources are:
     1: Client1
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3): 1
Run Backup job
JobName:  Client1
Level:    Incremental
Client:   bacula-fd
FileSet:  Full Set
Pool:     Default (From Job resource)
Storage:  File (From Job resource)
When:     2009-09-27 10:34:34
Priority: 10
OK to run? (yes/mod/no): mod
Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Client
     6: When
     7: Priority
     8: Pool
Select parameter to modify (1-8): 1
Levels:
     1: Base
     2: Full
     3: Incremental
     4: Differential
     5: Since
Select level (1-5): 2
Run Backup job
JobName:  Client1
Level:    Full
Client:   bacula-fd
FileSet:  Full Set
Pool:     Default (From Job resource)
Storage:  File (From Job resource)
When:     2009-09-27 10:34:34
Priority: 10
OK to run? (yes/mod/no): yes
Job queued. JobId=1
*
27-Sep 10:37 bacula-dir: Start Backup JobId 1, Job=Client1.2009-09-27_10.37.19
27-Sep 10:37 bacula-sd: Wrote label to prelabeled Volume "eth0" on device "FileStorage" (/var/backup)

 

あとがき

全体的によく解らん。
リストアもまだやってない。
スケジュールも不明。
データベースのバックアップを使用とすると、ファイルが見つからないエラーが出て、0バイトバックアップ成功になる。
データベースは、差分も糞もなくダンプしてフルバックアップするだけみたいだから、他のツールを使ってもいいかも知れない。
データベースは、MySQLPostgreSQLの2つを使ってるから、両方出来る奴だと尚いい。
どうやらBaculaにはブラウザから確認が出来るWebaculaというツールがあるらしい。
今度入れてみよう。