狠狠撸

狠狠撸Share a Scribd company logo
OSC 2014 Kansai@Kyoto
統合バックアップ
Baculaを使ってみよう
株式会社サードウェア 澤田 健
目次
? Baculaとは?
? Baculaの基本
? Bacula構築概要
? Baculaコミュニティ版インストール
? Baculaコミュニティ版設定
? バックアップ
? リストア
? まとめ
2
Baculaとは?
3
Baculaとは?
Baculaとはオープンソースによるネット
ワークバックアップソリューションです。
スイスにあるBacula Systems社が開発し
ています。
4
世界で一番ダウンロードされているバックアップソフトです。
2014年6月現在210万ダウンロードを超えています。
210万という数は2位のソフトの2倍以上です。
http://sourceforge.net/projects/bacula/files/stats/timeline?dates=2002-04-
01+to+2014-06-24
Baculaとは?
スケーラブル
Baculaサーバ1台で5,000台のバックアップ管理が可能
フレキシブル
多様なバックアップ先(ディスク、テープ、USB)
ワンダフル
オープンソース(AGPL)
幅広いOSに対応(Linux、UNIX、Windows、MacOS)
商用向けのエンタープライズ版がある
5
特徴
Baculaとは?
6
?エンタープライズ版
?基本機能はコミュニティ版とほぼ同じ
?豊富なプラグインが使用可能
→Windwos,VMWare,Oracle、SAP
MYSQL、PostgreSQL、VSS、Delta
?重複排除機能がある(サポートレベルSilver以上)
?長期サポート(4年以上)がある
?サーバ台数にもとづくサブスクリプション(容量は関係なし)
?バージョンが偶数で管理されている(最新はVer.8)
→コミュニティ版は奇数(最新はVer.7)
Baculaの基本
7
Baculaの基本
8
Bacula構成図
Copyright 2014, ThirdWare Inc.
Directorデーモン
(bacula全体管理)
+
DB
(カタログ)r
Fileデーモン
(バックアップ対象機)r
Storageデーモン
(バックアップデータ管理)
r
Console操作
r(Bconsole,
Bat,Bweb)
※最小で1台で構築できる
ユーザーr
Baculaの基本
9
Bacula全体を管理する指令塔
SQLデータベースと連携して、すべてのクライアントに関す
るバックアップとリストアの設定を管理し、ジョブの実行を
制御します。
SQLデータベースをカタログと呼びます。
今回の構築ではMYSQLを使用します。
Directorデーモン
(bacula全体管理)
+
DB
(カタログ)r
Fileデーモン
(バックアップ対象機)r
Storageデーモン
(バックアップデータ管理)r
Console
(ユーザ操作)r
Directorデーモン
Baculaの基本
10
多様なプラットフォームをサポート
様々なLinuxディストリビューション
Windows
Mac OSX
FreeBSD
Solaris
AIX
HP-UXなど
Fileデーモン
Directorデーモン
(bacula全体管理)
+
DB
(カタログ)r
Fileデーモン
(バックアップ対象機)r
Storageデーモン
(バックアップデータ管理)r
Console
(ユーザ操作)r
Baculaの基本
11
バックアップしたデータを管理します。
ハードディスク、テープ、オートチェンジャーなど多様なス
トレージを扱えます。
Storageデーモン
Directorデーモン
(bacula全体管理)
+
DB
(カタログ)r
Fileデーモン
(バックアップ対象機)r
Storageデーモン
(バックアップデータ管理)r
Console
(ユーザ操作)r
Baculaの基本
12
Directorを操作するためのコンソールです。
bconsole CUIベースのツール
bat GUIベースのツール
bweb Webベースのツール(エンタープライズ版のみ)
Console
Directorデーモン
(bacula全体管理)
+
DB
(カタログ)r
Fileデーモン
(バックアップ対象機)r
Storageデーモン
(バックアップデータ管理)r
Console
(ユーザ操作)r
Bacula構築概要
13
Bacula構築概要
14
構成図
Baculaサーバ バックアップ対象サーバ
バックアップ取得
IP 192.168.0.10
ホスト名 bacula
IP 192.168.0.20
ホスト名 backup-side
ページ8の構成図のような最小構成で構築します。
Bacula構築概要
15
Virtualbox上に以下の2台のサーバを構築します。
?Baculaサーバ
OS: CentOS6.5(x86_64) minimalインストール
ベースパッケージ追加
DB: MySQL 5.1.73
Bacula 5.0.0
?バックアップ対象サーバ
OS:CentOS6.5(x86_64) minimalインストール
ベースパッケージ追加
Bacula5.0.0(クライアントのみ)
今回の構築環境
Bacula
コミュニティ版
インストール
16
Baculaコミュニティ版インストール
17
yumでインストールします。
リポジトリの追加は不要です。
# yum install bacula-director bacula-client bacula-storage bacula-console
mysql-server
Baculaサーバ側
# yum install bacula-client
バックアップ対象側
Baculaコミュニティ版インストール
18
以下のパッケージがインストールされていることを
確認します。
# rpm -qa | grep bacula
bacula-storage-common-5.0.0-12.el6.x86_64
bacula-common-5.0.0-12.el6.x86_64
bacula-storage-mysql-5.0.0-12.el6.x86_64
bacula-director-mysql-5.0.0-12.el6.x86_64
bacula-console-5.0.0-12.el6.x86_64
bacula-director-common-5.0.0-12.el6.x86_64
bacula-client-5.0.0-12.el6.x86_64
# rpm -qa | grep ^mysql
mysql-server-5.1.73-3.el6_5.x86_64
mysql-5.1.73-3.el6_5.x86_64
mysql-libs-5.1.73-3.el6_5.x86_64
Baculaサーバ側
Baculaコミュニティ版インストール
19
以下のパッケージがインストールされていることを
確認します。
# rpm -qa | grep bacula
bacula-common-5.0.0-12.el6.x86_64
bacula-client-5.0.0-12.el6.x86_64
バックアップ対象側
Baculaコミュニティ版インストール
20
MySQLを使用するための準備をします。
一般的なMySQLの使用手順と同様にMySQLの初回起動と初
期化を実行した後に、Bacula用のデータベースとテーブル
を作成します。
MySQL使用の準備
Baculaコミュニティ版インストール
21
# service mysqld start
MySQL データベースを初期化中: Installing MySQL system tables...
OK
Filling help tables...
OK
(省略)
mysqld を起動中: [ OK ]
#
MySQL初回起動
Baculaコミュニティ版インストール
22
# mysql_secure_installation
(省略)
Set root password? [Y/n] Y ←「Y」を入力
New password: osc2014 ←rootのパスワードを入力
Re-enter new password: osc2014 ←rootのパスワードを再入力
Password updated successfully!
Reloading privilege tables..
... Success!
(省略)
Thanks for using MySQL!
#
MySQL初期化
省略されている部分で[Y/n]を尋ねられることはすべて
Enterキー押下で問題ありません。
Baculaコミュニティ版インストール
23
# mysql -u root –p
Enter password: osc2014 ←rootのパスワードを入力
mysql> create database bacula;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on bacula.* to bacula@localhost identified by ‘osc2014’;
osc2014はDBに対するパスワードを設定↑
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye
#
Bacula用データベース作成
Baculaコミュニティ版インストール
24
# /usr/libexec/bacula/make_bacula_tables -u bacula -p
Making MySQL tables
Enter password: osc2014 ←DBに対するパスワードを入力
Creation of Bacula MySQL tables succeeded.
#
Bacula用のテーブル作成
Bacula
コミュニティ版
設定
25
Baculaコミュニティ版設定
26
最低限必要な設定ファイル
Baculaサーバ
/etc/bacula/bacula-dir.conf
/etc/bacula/bacula-fd.conf
/etc/bacula/bacula-sd.conf
/etc/bacula/bconsole.conf
バックアップ対象サーバ
/etc/bacula/bacula-fd.conf
Baculaコミュニティ版設定
27
Baculaの設定はリソースごとに設定を行います。リソース
とは { で始まり } で終わる一連の固まりを指します。
(例)
Director {
Name = bacula-dir
Password = “osc2014"
}
上記の例はDirectorリソースの設定例になります。
Baculaコミュニティ版設定
28
bacula-dir.confのリソース設定のポイント
Director
Directorの基本設定です。
Job
設定の指示書です。
バックアップ指示をまとめたものをJOBと
して登録し実行します。
FileSet
バックアップ対象とするディレクトリを指定します。
またバックアップ非対象するディレクトリも指定で
きます。
Baculaコミュニティ版設定
29
bacula-dir.confのリソース設定のポイント
Schedule
自動バックアップする際のスケジュール設定します。
Client
バックアップ対象とするクライアント情報を設定
します。
Storage
Storageデーモンと通信するための情報を設定し
ます。
Baculaコミュニティ版設定
30
bacula-dir.confのリソース設定のポイント
Catalog
データベース(カタログ)への接続情報を設定します。
Pool
バックアップ保存先の情報を設定します。
Console
コンソールとの接続情報を設定します。
Baculaコミュニティ版設定
31
/etc/bacula/bacula-dir.conf
Director { # define myself
Name = bacula-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/usr/libexec/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1
Password = “osc2014" # Console password
Messages = Daemon
}
Baculaコミュニティ版設定
32
/etc/bacula/bacula-dir.conf
Job {
Name = "JOB-OSC"
Type = Backup
Level = Full
Client = bacula-fd
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = File
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
主な項目の概要
Levelでフルバックアップを指定
Clientでバックアップ対象を指定
FileSetでバックアップディレクトリ指定
上記のように記載することでJOB-OSCという名前のJobを登録できます。
バックアップ対象はbacula-fd(192.168.0.20)になります。
Baculaコミュニティ版設定
33
/etc/bacula/bacula-dir.conf
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /
}
Exclude {
File = /var/spool/bacula
File = /proc
File = /sys
File = /tmp
}
Includeはバックアップ対象にしたいディレ
クトリを指定します。
Excludeはバックアップ非対象にしたいディ
レクトリを指定します。
Baculaコミュニティ版設定
34
/etc/bacula/bacula-dir.conf
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /etc
}
Exclude {
File = /etc/tmp
}
}
Includeはバックアップ対象にしたいディレ
クトリを指定します。
Excludeはバックアップ非対象にしたいディ
レクトリを指定します。
/etc/tmpはデモ用に作成しています。
※このスライドはデモ用です
Baculaコミュニティ版設定
35
/etc/bacula/bacula-dir.conf
# Client (File Services) to backup
Client {
Name = bacula-fd
Address = 192.168.0.20
FDPort = 9102
Catalog = MyCatalog
Password = "osc2014" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
バックアップ対象機を指定します。
Baculaコミュニティ版設定
36
/etc/bacula/bacula-dir.conf
Storage {
Name = File
# Do not use "localhost" here
Address = 192.168.0.10 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "osc2014"
Device = FileStorage
Media Type = File
}
ここではバックアップの保存先のサーバを指定します。
今回の構築ではDirectorデーモンとStorageデーモンは同じサーバにイ
ンストールしていますので「192.168.0.10」を指定します。
Baculaコミュニティ版設定
37
/etc/bacula/bacula-dir.conf
Catalog {
Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =
dbname = "bacula"; dbuser = "bacula"; dbpassword = "osc2014"
}
ここで設定するパスワードはDB(カタログ)の接続に使うので重要です。
デフォルトは空白になってます。
Baculaコミュニティ版設定
38
/etc/bacula/bacula-dir.conf
Console {
Name = bacula-mon
Password = “osc2014"
CommandACL = status, .status
}
Baculaコミュニティ版設定
39
bacula-fd.confのリソース設定のポイント
Director
Directorとの接続情報を設定します。
FileDaemon
Fileデーモンの基本情報を設定します。
Messages
アラートなどのMessages送信情報を設定します。
Baculaコミュニティ版設定
40
/etc/bacula/bacula-fd.conf
Director {
Name = bacula-dir
Password = "osc2014"
}
Director {
Name = bacula-mon
Password = "osc2014"
Monitor = yes
}
FileDaemon { # this is me
Name = bacula-fd
FDport = 9102 # where we listen for the director
WorkingDirectory = /var/spool/bacula
Pid Directory = /var/run
Maximum Concurrent Jobs = 20
}
Messages {
Name = Standard
director = bacula-dir = all, !skipped, !restored
}
Baculaサーバ側、バックアップ対象側の両
方のファイルに設定を実施してください。
Baculaコミュニティ版設定
41
bacula-sd.confのリソース設定のポイント
Storage
Storageデーモンの基本情報を設定します。
Director
Directorとのデーモンの基本情報を設定します。
Device
バックアップデータを保存するデバイス情報を設定
します。
Baculaコミュニティ版設定
42
bacula-sd.confのリソース設定のポイント
Messages
アラートなどのMessages送信情報を設定します。
Baculaコミュニティ版設定
43
/etc/bacula/bacula-sd.conf
Director {
Name = bacula-dir
Password = "osc2014"
}
Director {
Name = bacula-mon
Password = "osc2014"
Monitor = yes
}
Baculaコミュニティ版設定
44
bconsole.confのリソース設定のポイント
address
DirectorのIPアドレスを指定
Password
Directorに接続するためのパスワード指定
Baculaコミュニティ版設定
45
/etc/bacula/bconsole.conf
Director {
Name = bacula-dir
DIRport = 9101
address = localhost
Password = "osc2014"
}
Baculaコミュニティ版設定
46
Bacula実行
# service bacula-dir start
# service bacula-fd start
# service bacula-sd start
# chkconfig bacula-dir on
# chkconfig bacula-fd on
# chkconfig bacula-sd on
# chkconfig mysqld on
自動起動on
Baculaサーバ側
Baculaコミュニティ版設定
47
Bacula実行
# service bacula-fd start
# chkconfig bacula-fd on
自動起動on
バックアップ対象側
Baculaコミュニティ版設定
48
確認していただきたいのは以下の3点
?Passwordがデフォルトのままになっていませんか?
?Passwordをミスタイプしていませんか?
?DB(カタログ)のPasswordは設定しましたか?
もしもここまででつまづいたら?
とりあえずPasswordをきちんと設定できれば動くはず!
バックアップ
49
バックアップ
50
bconsole(CUIツール)でバックアップを取得し
ます。
bconsoleを起動しlabelを作成します。
labelはバックアップ保存先を認識させるための目印として
作成します。
label作成後にrunコマンドを実行し、対話式でバックア
ップを取得します。
バックアップ
51
そもそもBaculaはpoolという箱の中にVolumeという単位で
データを保存します。
そしてlabelはVolumeの別名として使われデータを識別する
ためにlabelを作成します。
/tmp
Pool
Label1
Volume1
labelとは?
JOB1 結果
JOB2 結果
Label2
Volume2
JOB3 結果
JOB4 結果
Label3
Volume3
JOB5 結果
JOB6 結果
バックアップ
52
# bconsole
bconsole起動
起動が成功するとコマンドプロンプトが以下のように*とな
ります。
バックアップ
53
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: osc-demo ←label名を入力
Defined Pools:
1: Default
2: File
3: Scratch
Select the Pool (1-3): 2 ←2を選択する
Connecting to Storage daemon File at 192.168.0.10:9103 ...
Sending label command for Volume “osc-demo" Slot 0 ...
3000 OK label. VolBytes=194 DVD=0 Volume=" osc-demo "
Device="FileStorage" (/tmp)
Catalog record for Volume " osc-demo", Slot 0 successfully created.
Requesting to mount FileStorage ...
3906 File device "FileStorage" (/tmp) is always mounted.
ラベル作成
Labelの名前は任意で指定することが可能です。
バックアップ
54
*run
A job name must be specified.
The defined Job resources are:
1: OSC-JOB
2: BackupClient1
3: BackupCatalog
4: RestoreFiles
Select Job resource (1-4): 1 ←実行するJobを選択
Run Backup job
JobName: OSC-JOB
Level: Full
Client: bacula-fd
FileSet: Full Set
Pool: File (From Job resource)
Storage: File (From Job resource)
When: 2014-07-11 15:30:50
Priority: 10
OK to run? (yes/mod/no):yes ←yesを入力
バックアップ実行
バックアップ
55
*status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 1 ←1を選択
(省略)
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
===========================================================
1 Full 41,232 931.0 M OK 16- 7?014 15:09 BackupClient1
====
バックアップ確認
実行したJobが「Terminated Jobs」になっていることを確認します。
リストア
56
リストア
57
bconsole(CUIツール)でリストアを実施します。
bconsoleを起動しrestoreコマンドを実行し、対話式でリス
トアを実施します。
例として/etc/bacula/bacula-fd.confファイルをリストアし
ます。
リストア
58
# bconsole
bconsole起動
起動が成功するとコマンドプロンプトが以下のように*とな
ります。
リストア
59
*restore
(省略)
To select the JobIds, you have the following choices:
1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Select item: (1-13): 5 ←5を選択します。
リストア実行
リストア
60
restoreコマンドを実行後に5を選択すると最新のバックア
ップファイルのリストがbaculaサーバに作成されます。
問題なくリストが作成されれば、以下のようにコマンドプロ
ンプトが$になります。
リストア
61
$ cd /etc/bacula
$ ls
bacula-fd.conf
$ mark bacula-fd.conf
1 file marked.
リストアするファイルをmarkコマンドで指定します。
対象のファイルがあるディレクトリに移動してmarkコマン
ドを実行します。
markコマンドは*などを使用して一括指定することも可能
です。
/etc/bacula/bacula-fd.confをリストアします
リストア
62
$ done
Run Restore job
JobName: RestoreFiles
Bootstrap: /var/spool/bacula/bacula-dir.restore.1.bsr
Where: /tmp/bacula-restores ←この場所にリストアされます。
Replace: always
FileSet: Full Set
Backup Client: bacula-fd
Restore Client: bacula-fd
Storage: File
When: 2014-07-14 11:37:58
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no): yes
リストアを実行します。doneコマンドを実行しま
す。
リストア
63
# cd /tmp/bacula-restores
# ls
# etc
# cd cd etc/bacula/
# ls
# bacula-fd.conf
#
リストア確認をします。
バックアップ対象機でファイルを確認します。
bconsoleコマンドは必要ありません。
まとめ
64
まとめ
? Baculaインストールはyumで一発インストール
? 最低限必要な設定は4ファイルだけ
? バックアップはlabelを作成しrunコマンド
? リストアはrestoreコマンド
65
参考サイト
66
参考サイト
67
Bacula.jp
http://www.bacula.jp/
Bacula EnterPrise Edition 概要 (株式会社サードウェア)
http://www.3ware.co.jp/product/bacula-
enterprise-edition/summary
Bacula systems (開発元)
http://www.baculasystems.com/
ご参考
68
bat
69
GUIベースのConsole
Job実行、バックアップ実行、リストアが可能
bat
70
bweb
71
WebベースのConsole
Job登録、 Job実行、バックアップ実行、リストアが可能
bweb
72
bweb
73
bwebのリストア
ご清聴ありがとうございました。
74

More Related Content

OSC2014 Kansai@Kyoto 統合バックアップbaculaを使ってみよう