Ubuntu14.04で統合バックアップBaculaを使ってみよう

71
Ubuntu14.04 統合 バックアップ Bacula 使って みよう サワダ ケン (@ksawada1979) Version 1.0 2015/06/01

Transcript of Ubuntu14.04で統合バックアップBaculaを使ってみよう

Ubuntu14.04で統合バックアップBaculaを使ってみよう

サワダ ケン (@ksawada1979)

Version 1.02015/06/01

改訂履歴

2

Version 日付 改訂内容

1.0 2015/06/01 初版

はじめに

本ドキュメントはUbuntu14.04上でBaculaバージョン5.2.6を構築する手順について記載します。

Ubuntuは最新のLTS版である14.04を使用します。

またBaculaの最新バージョンは7ですが、Ubuntuに採用されているバージョン5を使用します。

本ドキュメントで解説をしているBaculaの設定ファイルは以下で公開しております。https://github.com/ksawada1979/Bacula-Ubuntu/

3

目次

構築概要

MySQLインストール

Baculaインストール

Bacula設定

Bacula再起動

バックアップ

リストア

Bacula参考資料

4

・・・・・・・・ 5

・・・・・・・・ 8

・・・・・・・・ 13

・・・・・・・・ 26

・・・・・・・・ 49

・・・・・・・・ 55

・・・・・・・・ 61

・・・・・・・・ 69

構築概要

5

Bacula構築概要

6

構成図

Baculaサーバ バックアップ対象サーバ

バックアップ取得

IP 192.168.0.150

ホスト名 Bacula

IP 192.168.0.151

ホスト名 Backup-side

本手順書は上記の構成を想定した手順書になります。

Bacula構築概要

7

Virtualbox上に以下の2台のサーバを構築します。

対象 バージョン 備考

OS Ubuntu14.04 LTS 日本語 Remix

DB MySQL 5.5.43

Bacula 5.2.6

対象 バージョン 備考

OS Ubuntu14.04 LTS 日本語 Remix

Bacula 5.2.6 クライアントのみ

バックアップ対象サーバ

Baculaサーバ

MySQLインストール

8

MySQLインストール

$ sudo apt-get update

BaculaではデータベースにMySQLを採用しています。

Baculaをインストールする前にMySQLをインストールします。

まずパッケージのインデックスを更新します。

9

MySQLインストール

$ sudo apt-get install mysql-server

次にMySQLをインストールします。

10

MySQLインストール

インストールの途中でMySQLのrootパスワードの入力を求められますので、パスワードを設定します。

11

MySQLインストール

パスワードを入力後に再度以下の画面が表示されます。

再びMySQLのrootパスワードを入力します。

12最後にエラーなくコマンドプロンプトが返ってくることを確認します。

Bacula

インストール

13

Baculaインストール

14

Baculaをインストールします。まずBaculaサーバ側にインストールします。

$ sudo apt-get install bacula-server bacula-client

Baculaサーバ

Baculaインストール

インストールの途中でメールサーバの設定形式を求められます。

「了解」が選ばれている状態でEnterキーを入力します。

15

Baculaインストール

次にメール設定の一般形式について確認が求められます。

「インターネットサイト」が選ばれている状態了解を選択しEnterキーを入力します。

16

Baculaインストール

次にシステムメール名について問われます。

表示されている名前から特に変更せずに了解を選びEnterキーを入力します。

17

Baculaインストール

次にdbconfig-commonの使用について問われます。

「はい」を選びEnterキーを入力します。

18

Baculaインストール

次にbacula-director-mysqlの管理権限パスワードに設定をします。

任意のパスワードを入力し「了解」を選びEnterキーを入力します。

19

Baculaインストール

次にbacula-director-mysql用のMySQLアプリケーションパスワードを設定をします。任意のパスワードを入力し「了解」を選びEnterキーを入力します。

20

Baculaインストール

次にbacula-director-mysql用のMySQLアプリケーションパスワードの確認が表示されますので、再度同じパスワードを入力し「了解」を選びEnterキーを入力します。

21最後にエラーなくコマンドプロンプトが返ってくることを確認します。

Baculaインストール

22

以下のパッケージがインストールされていることを確認します。

Baculaサーバ

$ dpkg –l | grep baculaii bacula-client 5.2.6+dfsg-9.1ubuntu3ii bacula-common 5.2.6+dfsg-9.1ubuntu3ii bacula-common-mysql 5.2.6+dfsg-9.1ubuntu3ii bacula-console 5.2.6+dfsg-9.1ubuntu3ii bacula-director-common 5.2.6+dfsg-9.1ubuntu3ii bacula-director-mysql 5.2.6+dfsg-9.1ubuntu3ii bacula-fd 5.2.6+dfsg-9.1ubuntu3ii bacula-sd 5.2.6+dfsg-9.1ubuntu3ii bacula-sd-mysql 5.2.6+dfsg-9.1ubuntu3ii bacula-server 5.2.6+dfsg-9.1ubuntu3ii bacula-traymonitor 5.2.6+dfsg-9.1ubuntu3

※一部パッケージ名以外の表示結果を省略しています。

Baculaインストール

23

以下のパッケージがインストールされていることを確認します。

Baculaサーバ

$ dpkg –l | grep mysqlii bacula-common-mysql 5.2.6+dfsg-9.1ubuntu3 ii bacula-director-mysql 5.2.6+dfsg-9.1ubuntu3 ii bacula-sd-mysql 5.2.6+dfsg-9.1ubuntu3 ii libdbd-mysql-perl 4.025-1 ii libmysqlclient18:amd64 5.5.43-0ubuntu0.14.04.1ii mysql-client-5.5 5.5.43-0ubuntu0.14.04.1ii mysql-client-core-5.5 5.5.43-0ubuntu0.14.04.1ii mysql-common 5.5.43-0ubuntu0.14.04.1ii mysql-server 5.5.43-0ubuntu0.14.04.1ii mysql-server-5.5 5.5.43-0ubuntu0.14.04.1ii mysql-server-core-5.5 5.5.43-0ubuntu0.14.04.1

※一部パッケージ名以外の表示結果を省略しています。

Baculaインストール

24

次にバックアップ対象サーバにBaculaをインストールします。

$ sudo apt-get install bacula-client

バックアップ対象サーバ

Baculaインストール

25

以下のパッケージがインストールされていることを確認します。

$ dpkg –l | grep baculaii bacula-client 5.2.6+dfsg-9.1ubuntu3ii bacula-common 5.2.6+dfsg-9.1ubuntu3ii bacula-console 5.2.6+dfsg-9.1ubuntu3ii bacula-fd 5.2.6+dfsg-9.1ubuntu3ii bacula-traymonitor 5.2.6+dfsg-9.1ubuntu3

バックアップ対象サーバ

Bacula設定

26

Bacula設定

27

Baculaの設定を行う前にバックアップデータを保存する領域を作成します。

Baculaサーバで以下のコマンドで領域を作成します。

合わせてディレクトリに対して所有者と権限を変更します。

$ sudo mkdir /BackupDATA$ sudo chown bacula:bacula /BackupDATA$ sudo chmod 700 /BackupDATA

Bacula設定

28

まずBaculaサーバで変更を行います。

Baculaサーバで最低限必要な設定ファイルは以下になります。

Baculaサーバ/etc/bacula/bacula-dir.conf/etc/bacula/bacula-fd.conf

/etc/bacula/bacula-sd.conf

/etc/bacula/bconsole.conf

Bacula設定

29

Baculaの設定はリソースごとに設定を行います。リソースとは { で始まり } で終わる一連の固まりを指します。

(例)Director {

Name = bacula-dir

Password = “bacula"

}

上記の例はDirectorリソースの設定例になります。

Bacula設定

30

bacula-dir.confのリソース設定のポイント

Director

Directorの基本設定です。

Job設定の指示書です。バックアップ指示をまとめたものをJOBとして登録し実行します。

FileSet

バックアップ対象とするディレクトリを指定します。

またバックアップ非対象するディレクトリも指定できます。

Bacula設定

31

bacula-dir.confのリソース設定のポイント

Schedule

自動バックアップする際のスケジュール設定します。

Clientバックアップ対象とするクライアント情報を設定します。

Storage

Storageデーモンと通信するための情報を設定します。

Bacula設定

32

bacula-dir.confのリソース設定のポイント

Catalog

データベース(カタログ)への接続情報を設定します。

Poolバックアップ保存先の情報を設定します。

Console

コンソールとの接続情報を設定します。

※次のページ以降で最低限変更が必要なリソースのみを記載します。

Bacula設定

33

/etc/bacula/bacula-dir.conf

Director { # define myselfName = Bacula-dirDIRport = 9101 # where we listen for UA connectionsQueryFile = "/etc/bacula/scripts/query.sql“WorkingDirectory = "/var/lib/bacula"PidDirectory = "/var/run/bacula"Maximum Concurrent Jobs = 1Password = “bacula" # Console passwordMessages = DaemonDirAddress = 192.168.0.150

}

PasswordとDirAddressを変更します。

パスワードはデフォルトから必ず任意のパスワードに変更してください。

Bacula設定

34

/etc/bacula/bacula-dir.conf

Job {Name = "JOB-Ubuntu"Type = BackupLevel = FullClient = bacula-fdFileSet = "Full Set"Schedule = "WeeklyCycle"Storage = FileMessages = StandardPool = FilePriority = 10Write Bootstrap = "/var/spool/bacula/%c.bsr"

}

主な項目の概要Levelでフルバックアップを指定Clientでバックアップ対象を指定FileSetでバックアップディレクトリ指定

ここでは上記のようにリソースごと追加します。

JOB-Ubuntuという名前のJobを登録できます。

バックアップ対象はbacula-fd(192.168.0.151)になります。

Bacula設定

35

/etc/bacula/bacula-dir.conf

Job {Name = "RestoreFiles"Type = RestoreClient=bacula-fdFileSet="Full Set" Storage = File Pool = DefaultMessages = StandardWhere = /tmp

}

リストアの設定をします。

ファイルをリストアする際の出力先を指定します。

Bacula設定

36

/etc/bacula/bacula-dir.conf

FileSet {Name = "Full Set"Include {

Options {signature = MD5

}File = /

}

Exclude {File = /var/lib/baculaFile = /BackupDATAFile = /procFile = /tmpFile = /.journalFile = /.fsck

}

Includeはバックアップ対象にしたいディレクトリを指定します。

Excludeはバックアップ非対象にしたいディレクトリを指定します。

Bacula設定

37

/etc/bacula/bacula-dir.conf

# Client (File Services) to backupClient {Name = Bacula-fdAddress = 192.168.0.151FDPort = 9102Catalog = MyCatalogPassword = “bacula“ # password for FileDaemonFile Retention = 30 days # 30 daysJob Retention = 6 months # six monthsAutoPrune = yes # Prune expired Jobs/Files

}

バックアップ対象機を指定します。

ここでは上記のようにリソースごと追加します。

Bacula設定

38

/etc/bacula/bacula-dir.conf

Storage {Name = File

# Do not use "localhost" hereAddress = 192.168.0.150 # N.B. Use a fully qualified name hereSDPort = 9103Password = “bacula"Device = FileStorageMedia Type = File

}

ここではバックアップの保存先のサーバを指定します。今回の構築ではDirectorデーモンとStorageデーモンは同じサーバにインストールしていますので「192.168.0.150」を指定します。

Bacula設定

39

/etc/bacula/bacula-dir.conf

Console {Name = Bacula-monPassword = “bacula"CommandACL = status, .status

}

パスワードはデフォルトから必ず任意のパスワードに変更してください。

Bacula設定

40

bacula-sd.confのリソース設定のポイント

Storage

Storageデーモンの基本情報を設定します。

DirectorDirectorとのデーモンの基本情報を設定します。

Device

バックアップデータを保存するデバイス情報を設定します。

Bacula設定

41

bacula-sd.confのリソース設定のポイント

Messages

アラートなどのMessages送信情報を設定します。

Bacula設定

42

/etc/bacula/bacula-sd.conf

Storage { # definition of myselfName = Bacula-sdSDPort = 9103 # Director's port WorkingDirectory = "/var/lib/bacula"Pid Directory = "/var/run/bacula"Maximum Concurrent Jobs = 20SDAddress = 192.168.0.150

}

Director {Name = Bacula-dirPassword = “bacula"

}

Director {Name = Bacula-monPassword = " bacula"Monitor = yes

}

ここではStorageデーモンのインストールされているサーバのIPアドレスを指定します。

Bacula設定

43

/etc/bacula/bacula-sd.conf

Device {Name = FileStorageMedia Type = FileArchive Device = /BackupDATALabelMedia = yes; # lets Bacula label unlabeled mediaRandom Access = Yes;AutomaticMount = yes; # when device opened, read itRemovableMedia = no;AlwaysOpen = no;

}

Archive Deviceにバックアップデータの保存先を指定します。

Bacula設定前に作成したバックアップデータを保存する領域を指定します。

Bacula設定

44

bconsole.confのリソース設定のポイント

address

DirectorのIPアドレスを指定

PasswordDirectorに接続するためのパスワード指定

Bacula設定

45

/etc/bacula/bconsole.conf

Director {Name = Bacula-dirDIRport = 9101address = 192.168.0.150Password = “bacula"

}

Directorがインストールされているサーバを指定します。

パスワードはDirectorで設定したパスワードを入力します。

Bacula設定

46

次にバックアップ対象サーバで変更を行います。

バックアップ対象サーバで最低限必要な設定ファイルは以下になります。

バックアップ対象サーバ/etc/bacula/bacula-fd.conf

Bacula設定

47

bacula-fd.confのリソース設定のポイント

Director

Directorとの接続情報を設定します。

FileDaemonFileデーモンの基本情報を設定します。

Messages

アラートなどのMessages送信情報を設定します。

Bacula設定

48

/etc/bacula/bacula-fd.conf

Director {Name = Bacula-dirPassword = " bacula"

}Director {

Name = Bacula-monPassword = " bacula"Monitor = yes

}FileDaemon { # this is me

Name = Bacula-fdFDport = 9102 # where we listen for the directorWorkingDirectory = /var/lib/baculaPid Directory = /var/run/baculaMaximum Concurrent Jobs = 20FDAddress = 192.168.0.151

}Messages {

Name = Standarddirector = Bacula-dir = all, !skipped, !restored

}

各NameとパスワードをBaculaサーバ側で設定した値に合わせます。

バックアップ対象サーバのIPアドレスを指定します。

Bacula再起動

49

Bacula再起動

50

$ sudo service bacula-director restart$ sudo service bacula-fd restart$ sudo service bacula-sd restart

Baculaの設定が完了したら、設定を有効にするためにBaculaを再起動します。

Baculaサーバで以下のコマンドで各デーモンを再起動します。

Bacula再起動

51

$ sudo service bacula-fd restart

バックアップ対象サーバで以下のコマンドで各デーモンを起動します。

Bacula再起動

52

$ netstat –ln | grep tcp稼働中のインターネット接続 (サーバのみ)Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:631 0.0.0.0:* LISTENtcp 0 0 0.0.0.0:25 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTENtcp 0 0 192.168.0.150:9101 0.0.0.0:* LISTENtcp 0 0 192.168.0.150:9102 0.0.0.0:* LISTENtcp 0 0 192.168.0.150:9103 0.0.0.0:* LISTEN

<省略>

Baculaサーバで使用するポートを確認します。

Baculaの各デーモンが使用する9101~9103ポートが空いていることを確認します。

また、MySQLが使用する3306ポートが空いていることも確認します。

Bacula再起動

53

$ netstat –ln | grep tcp稼働中のインターネット接続 (サーバのみ)Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:631 0.0.0.0:* LISTENtcp 0 0 192.168.0.151:9102 0.0.0.0:* LISTEN

<省略>

バックアップ対象サーバで使用するポートを確認します。

Bacula-fdデーモンが使用する9102ポートが空いていることを確認します

もしもここまででつまづいたら?

54

確認していただきたいのは以下の3点・Passwordがデフォルトのままになっていませんか?

・Passwordをミスタイプしていませんか?

・各デーモンの名前の整合性が取れていますか?

→本書ではbacula-dir、bacula-sd、bacula-fdと名

前をつけている箇所です。

とりあえずPasswordとデーモンの名前の整合性が取れていればきちんと動くはずです!

バックアップ

55

バックアップ

56

bconsole(CUIツール)でバックアップを取得します。

bconsoleを起動しlabelを作成します。

labelはバックアップ保存先を認識させるための目印として作成します。

label作成後にrunコマンドを実行し、対話式でバックアップを取得します。

バックアップ

57

$ sudo bconsoleConnecting to Director localhost:91011000 OK: Bacula Version: 5.2.6 (21 February 2012)Enter a period to cancel a command. *

まずbconsole起動を起動します。

コマンドプロンプトが「*」に変わったことを確認します。

バックアップ

58

Labelを作成します。labelコマンドで作成します。

*labelAutomatically selected Catalog: MyCatalogUsing Catalog "MyCatalog"Automatically selected Storage: FileEnter new Volume name: bacula ←label名を入力Defined Pools:

1: Default2: File3: Scratch

Select the Pool (1-3): 2 ←2を選択するConnecting to Storage daemon File at 192.168.0.150:9103 ...Sending label command for Volume “bacula" Slot 0 ...3000 OK label. VolBytes=194 DVD=0 Volume=" bacula " Device="FileStorage" (/BackupDATA)Catalog record for Volume " bacula", Slot 0 successfully created.Requesting to mount FileStorage ...3906 File device "FileStorage" (/ BackupDATA) is always mounted.

バックアップ

59

*run ←runを入力A job name must be specified.The defined Job resources are:

1: JOB-Ubuntu2: BackupClient13: BackupCatalog4: RestoreFiles

Select Job resource (1-4): 1 ←実行するJobを選択Run Backup jobJobName: JOB-UbuntuLevel: FullClient: bacula-fdFileSet: Full SetPool: File (From Job resource)Storage: File (From Job resource)When: 2015-05-25 14:47:15Priority: 10OK to run? (yes/mod/no): yes ←yesを入力

バックアップ実行します。Runコマンドでバックアップを取得します。

バックアップ

60

*statusStatus available for:

1: Director2: Storage3: Client4: Scheduled5: All

Select daemon type for status (1-5): 1 ←1を選択

(省略)

Terminated Jobs:JobId Level Files Bytes Status Finished Name

===============================================1 Full 29,971 896.0 M OK 25- 5・015 14:49 JOB-Ubuntu

バックアップ確認

実行したJobが「Terminated Jobs」になっていることを確認します。

リストア

61

リストア

62

bconsole(CUIツール)でリストアを実施します。

bconsoleを起動しrestoreコマンドを実行し、対話式でリストアを実施します。

例として/etc/bacula/bacula-fd.confファイルをリストアします。

リストア

63

$ sudo bconsoleConnecting to Director localhost:91011000 OK: 1 bacula-dir Version: 5.2.6 (21 February 2012)Enter a period to cancel a command.*

まずbconsoleを起動します。

コマンドプロンプトが「*」に変わったことを確認します。

リストア

64

* restore(省略)To select the JobIds, you have the following choices:

1: List last 20 Jobs run2: List Jobs where a given File is saved3: Enter list of comma separated JobIds to select4: Enter SQL list command5: Select the most recent backup for a client6: Select backup for a client before a specified time7: Enter a list of files to restore8: Enter a list of files to restore before a specified time9: Find the JobIds of the most recent backup for a client

10: Find the JobIds for a backup for a client before a specified time11: Enter a list of directories to restore for found JobIds12: Select full restore to a specified Job date13: Cancel

Select item: (1-13): 5 ←5を選択します。

リストアを実行します。

リストア

65

+-------+-------+----------+-------------+---------------------+------------+| JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |+-------+-------+----------+-------------+---------------------+------------+| 1 | F | 29,971 | 896,094,352 | 2015-05-25 14:47:19 | bacula |+-------+-------+----------+-------------+---------------------+------------+You have selected the following JobId: 1

Building directory tree for JobId(s) 1 ... ++++++++++++++++++++++++++++++++++++++++++++26,641 files inserted into the tree.

You are now entering file selection mode where you add (mark) andremove (unmark) files to be restored. No files are initially added, unlessyou used the "all" keyword on the command line.Enter "done" to leave this mode.

cwd is: /$

「5」を選択すると自動的に以下のような画面になります。

コマンドプロンプトが「$」になるとリストアの準備が完了になります。

リストア

66

$ cd /etc/bacula$ lsbacula-fd.conf$ mark bacula-fd.conf1 file marked.

リストアするファイルをmarkコマンドで指定します。対象のファイルがあるディレクトリに移動してmarkコマンドを実行します。

markコマンドは*などを使用して一括指定することも可能です。

/etc/bacula/bacula-fd.confをリストアします

リストア

67

$ doneRun Restore jobJobName: RestoreFilesBootstrap: /var/spool/bacula/bacula-dir.restore.1.bsrWhere: /tmp ←この場所にリストアされます。Replace: alwaysFileSet: Full SetBackup Client: bacula-fdRestore Client: bacula-fdStorage: FileWhen: 2015-05-25 14:55:46Catalog: MyCatalogPriority: 10OK to run? (yes/mod/no): yes ←yesを入力します。

リストアを実行します。doneコマンドを実行します。

リストア

68

$ cd /tmp$ ls$ etc$ cd cd etc/bacula/$ ls$ bacula-fd.conf$

リストア確認をします。

バックアップ対象機でファイルを確認します。

bconsoleコマンドは必要ありません。

Bacula参考資料

69

Bacula参考資料

70

Baculaドキュメントのご紹介

Baculaの基本、インストールおよび設定

http://www.slideshare.net/kensawada14/140801oscbacula/

Bacula GUI管理ツールのインストールおよび設定

http://www.slideshare.net/kensawada14/141114baculabaculagui/

Ansibleを使ってサーバ100台にBaculaクライアントをインストールhttp://www.slideshare.net/kensawada14/150105-bacula-clientansiblesetting/

Serverspecを使ってサーバ5000台のBaculaクライアントをテスト

http://www.slideshare.net/kensawada14/serverspec5000bacula/

※全てCentOS6、Bacula5.0をベースとした資料になります。

Bacula参考資料

71

Baculaドキュメントのご紹介

CentOS7で統合バックアップBacula7.0を使ってみようhttp://www.slideshare.net/kensawada14/150403-cent-os7bacula7/

統合バックアップBaculaでBacula-webを使ってみようhttp://www.slideshare.net/kensawada14/150511-bacula-web/

※全てCentOS7、Bacula7.0.5をベースとした資料になります。