170311【bacula】cent os7で統合バックアップbacula7.4を使ってみよう

61
CentOS7 統合バックアップ Bacula7.4 を使ってみよう サワダ ケン (@ksawada1979) Version 1.2 2017/03/11

Upload: ken-sawada

Post on 22-Jan-2018

241 views

Category:

Software


0 download

TRANSCRIPT

CentOS7で統合バックアップBacula7.4を使ってみよう

サワダ ケン (@ksawada1979)

Version 1.22017/03/11

改訂履歴

Version 日付 改訂内容

1.0 2015/04/03 初版

1.1 2016/11/05 Bacula7.4対応

1.2 2017/03/11 Bacula7.4.5対応

はじめに

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

Baculaについての情報は以下のサイトでも公開しています。

https://www.bacula.jp/

目次

構築概要

リポジトリ追加

Bacula7.4.5インストール

MariaDB準備

Bacula設定

Bacula起動

バックアップ

リストア

・・・・・・・・ 5

・・・・・・・・ 9

・・・・・・・・ 11

・・・・・・・・ 15

・・・・・・・・ 23

・・・・・・・・ 43

・・・・・・・・ 49

・・・・・・・・ 54

構築概要

Bacula構築概要

構成図

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

バックアップ取得

IP 192.168.0.70

ホスト名 Bacula7

IP 192.168.0.80

ホスト名 Backup-side

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

Bacula構築概要

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

対象 バージョン 備考

OS CentOS 7.2.1611 最小限のインストール

DB mariaDB 5.5.52

Bacula 7.4.5

対象 バージョン 備考

OS CentOS 7.2.1611 最小限のインストール

Bacula 7.4.5 クライアントのみ

バックアップ対象サーバ

Baculaサーバ

構築概要

構築を開始する前にfirewalldを一時的に停止します。

Baculaのインストールおよび設定完了後に再び有効にしてください。

# systemctl stop firewalld

以下のコマンドでfirewalldが停止したことを確認します。

# systemctl status firewalldfirewalld.service - firewalld - dynamic firewall daemon

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)Active: inactive (dead) since 金 2015-04-03 11:33:44 JST; 1s ago

<省略>

#

Active: inactive (dead) となっていることを確認します。

本ドキュメントではfirewalldの設定については記載しません。

リポジトリ追加

リポジトリ追加

# yum -y install wget

# cd /etc/yum.repos.d/# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo

Baculaサーバ、バックアップ対象サーバにBacula7用のリポジトリをwgetコマンドで追加します。

まず以下のコマンンドでwgetを追加します。

次にBacula7用リポジトリを追加します。

# lsCentOS-Base.repo CentOS-Debuginfo.repo CentOS-Vault.repo CentOS-CR.repoCentOS-Sources.repo CentOS-fasttrack.reposlaanesh-Bacula-epel-7.repo

リポジトリが追加されたことを確認します。

slaanesh-Bacula-epel-7.repoが追加されたことを確認します。

10

Bacula7.4

インストール

Bacula7.4インストール

Baculaサーバ、バックアップ対象サーバにそれぞれyumでパッケージをインストールします。

# yum -y install bacula-director bacula-client bacula-storage bacula-console mariadb-server

Baculaサーバ

# yum –y install bacula-client

バックアップ対象サーバ

Bacula7.4インストール

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

# rpm -qa | grep baculabacula-libs-7.4.5-1.el7.centos.x86_64bacula-storage-7.4.5-1.el7.centos.x86_64bacula-director-7.4.5-1.el7.centos.x86_64bacula-console-7.4.5-1.el7.centos.x86_64bacula-common-7.4.5-1.el7.centos.x86_64bacula-libs-sql-7.4.5-1.el7.centos.x86_64bacula-client-7.4.5-1.el7.centos.x86_64

# rpm -qa | grep mariadbmariadb-libs-5.5.52-1.el7.x86_64mariadb-5.5.52-1.el7.x86_64mariadb-server-5.5.52-1.el7.x86_64

Baculaサーバ

Bacula7.4インストール

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

# rpm -qa | grep baculabacula-libs-7.4.5-1.el7.x86_64bacula-client-7.4.5-1.el7.x86_64bacula-common-7.4.5-1.el7.x86_64

バックアップ対象サーバ

MariaDB準備

MariaDB準備

MariaDBを使用するための準備をします。

一般的なMariaDBの使用手順と同様にMariaDBの初回起動と初期化を実行した後に、Bacula用のデータベースとテーブルを作成します。

※MariaDB準備はBaculaサーバのみ実施します。

MariaDB準備

MariaDB初回起動

# systemctl start mariadb#

以下のコマンドでMariaDBが起動したことを確認します。

# systemctl status mariadbmariadb.service - MariaDB database server

Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)Active: active (running) since 木 2015-04-02 10:41:23 JST; 1min 15s ago

<省略>

#

Active(running)となっていることを確認します。

MariaDB準備

MariaDB初期化

# mysql_secure_installation(省略)

Set root password? [Y/n] Y ←「Y」を入力New password: dbpass ←rootのパスワードを入力Re-enter new password: dbpass ←rootのパスワードを再入力Password updated successfully!Reloading privilege tables..... Success!

(省略)Thanks for using MariaDB!#

省略されている部分で[Y/n]を尋ねられることはすべてEnterキー押下で問題ありません。

MariaDB準備

Bacula用データベース作成

# mysql -u root –pEnter password: dbpass ←rootのパスワードを入力

MariaDB > create database bacula;Query OK, 1 row affected (0.00 sec)

MariaDB > grant all privileges on bacula.* to bacula@localhost identified by ‘dbpass’;bacula7はDBに対するパスワードを設定↑

Query OK, 0 rows affected (0.01 sec)

MariaDB > quitBye

MariaDB準備

Bacula用テーブル作成

# /usr/libexec/bacula/make_bacula_tables mysql -u bacula -pMaking mysql tablesEnter password: dbpass ←DBに対するパスワードを入力Creation of Bacula MySQL tables succeeded.

MariaDB準備

1を入力しEnterキーを押下します。

# alternatives --config libbaccats.so

3 プログラムがあり 'libbaccats.so' を提供します。

選択 コマンド-----------------------------------------------

1 /usr/lib64/libbaccats-mysql.so2 /usr/lib64/libbaccats-sqlite3.so

*+ 3 /usr/lib64/libbaccats-postgresql.so

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:1

Bacula用のデータベース切り替えをします。以下のコマンドで現状の設定を確認します。

MariaDB準備

「+」がlibbaccats-mysql.soになっていることを確認します。

# alternatives --config libbaccats.so

3 プログラムがあり 'libbaccats.so' を提供します。

選択 コマンド-----------------------------------------------+ 1 /usr/lib64/libbaccats-mysql.so

2 /usr/lib64/libbaccats-sqlite3.so* 3 /usr/lib64/libbaccats-postgresql.so

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

Bacula用のデータベース切り替え確認をします。再度以下のコマンドで実行し設定を確認します。

Bacula設定

Bacula設定

Baculaの設定を行います。

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

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設定

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

(例)Director {

Name = bacula-dir

Password = “bacula7"

}

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

Bacula設定

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

Director

Directorの基本設定です。

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

FileSet

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

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

Bacula設定

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

Schedule

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

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

Storage

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

Bacula設定

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

Catalog

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

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

Console

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

Bacula設定

/etc/bacula/bacula-dir.conf

Director { # define myselfName = bacula-dirDIRport = 9101 # where we listen for UA connectionsQueryFile = "/usr/libexec/bacula/query.sql"WorkingDirectory = "/var/spool/bacula"PidDirectory = "/var/run"Maximum Concurrent Jobs = 1Password = “bacula7" # Console passwordMessages = Daemon

}

Bacula設定

/etc/bacula/bacula-dir.conf

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

}

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

上記のように記載することでJOB-Bacula7という名前のJobを登録できます。

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

Bacula設定

/etc/bacula/bacula-dir.conf

FileSet {Name = "Full Set"Include {

Options {signature = MD5

}File = /

}

Exclude {File = /var/spool/baculaFile = /procFile = /sysFile = /tmp

}

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

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

Bacula設定

/etc/bacula/bacula-dir.conf

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

}

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

Bacula設定

/etc/bacula/bacula-dir.conf

Storage {Name = File

# Do not use "localhost" hereAddress = 192.168.0.70 # N.B. Use a fully qualified name hereSDPort = 9103Password = “bacula7"Device = FileStorageMedia Type = FileMaximum Concurrent Jobs = 10 # run up to 10 jobs a the same time

}

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

Bacula設定

/etc/bacula/bacula-dir.conf

Catalog {Name = MyCatalogdbname = "bacula"; dbuser = "bacula"; dbpassword = “dbpass"

}

ここで設定するパスワードはDB(カタログ)の接続に使うので重要です。デフォルトは空白になってます。

Bacula設定

/etc/bacula/bacula-dir.conf

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

}

Bacula設定

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

Director

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

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

Messages

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

Bacula設定

/etc/bacula/bacula-fd.conf

Director {Name = bacula-dirPassword = " bacula7"

}Director {

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

}FileDaemon { # this is me

Name = bacula-fdFDport = 9102 # where we listen for the directorWorkingDirectory = /var/spool/baculaPid Directory = /var/runMaximum Concurrent Jobs = 20

}Messages {

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

}

Baculaサーバ側、バックアップ対象側の両方のファイルに設定を実施してください。

Bacula設定

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

Storage

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

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

Device

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

Bacula設定

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

Messages

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

Bacula設定

/etc/bacula/bacula-sd.conf

Director {Name = bacula-dirPassword = “bacula7"

}

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

}

Bacula設定

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

address

DirectorのIPアドレスを指定

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

Bacula設定

/etc/bacula/bconsole.conf

Director {Name = bacula-dirDIRport = 9101address = localhostPassword = “bacula7"

}

Bacula起動

Bacula起動

# systemctl start bacula-dir# systemctl start bacula-fd# systemctl start bacula-sd

Baculaの設定が完了したら、Baculaを実行します。

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

# systemctl enable bacula-dir# systemctl enable bacula-fd# systemctl enable bacula-sd# systemctl enable mariadb

また、以下のコマンドで自動起動をonにします。

Bacula起動

# systemctl start bacula-fd

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

# systemctl enable bacula-fd

また、以下のコマンドで自動起動をonにします。

Bacula起動

# systemctl status bacula-dirbacula-dir.service - Bacula-Director, the Backup-server

Loaded: loaded (/usr/lib/systemd/system/bacula-dir.service; enabled)Active: active (running) since 木 2015-04-02 13:32:16 JST; 14s ago

<省略>

#

Baculaの起動確認をします。

「bacula-dir.service; enabled」「 active (running) 」となっていることを確認します。またbacula-sd、 bacula-fd、mariadbも同様に起動確認および自動起動がonになっていることを確認します。

Bacula起動

# ss –antState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 50 *:3306 *:*LISTEN 0 50 *:9101 *:*LISTEN 0 50 *:9102 *:*LISTEN 0 50 *:9103 *:*LISTEN 0 128 *:22 *:*

<省略>

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

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

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

Bacula起動

# ss –antState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 50 *:9102 *:*LISTEN 0 128 *:22 *:*LISTEN 0 100 127.0.0.1:25 *:*

<省略>

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

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

バックアップ

バックアップ

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

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

バックアップ

# bconsoleConnecting to Director localhost:91011000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)Enter a period to cancel a command.*

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

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

バックアップ

* run ←「run」と入力しEnterキー押下A job name must be specified.The defined Job resources are:

1: JOB-Bacula72: BackupClient13: BackupCatalog4: RestoreFiles

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

バックアップ実行

runコマンドでバックアップ実行します。

バックアップ

* status ←「status」と入力しEnterキー押下Status 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 02- 4・015 14:49 JOB-Bacula7

バックアップ確認

statusコマンドで状態を確認します。

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

リストア

リストア

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

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

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

リストア

# bconsoleConnecting to Director localhost:91011000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)Enter a period to cancel a command.*

まずbconsoleを起動します。

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

リストア

* 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を選択します。

リストアを実行します。

リストア

+-------+-------+----------+-------------+---------------------+------------+| JobId | Level | JobFiles | JobBytes | StartTime | VolumeName |+-------+-------+----------+-------------+---------------------+------------+| 1 | F | 29,971 | 896,094,352 | 2015-04-02 14:47:19 | Vol-0001 |+-------+-------+----------+-------------+---------------------+------------+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」を選択すると自動的に以下のような画面になります。

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

リストア

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

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

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

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

リストア

$ done ←「done」と入力しEnterキー押下Run Restore jobJobName: RestoreFilesBootstrap: /var/spool/bacula/bacula-dir.restore.1.bsrWhere: /tmp/bacula-restores ←この場所にリストアされます。Replace: alwaysFileSet: Full SetBackup Client: bacula-fdRestore Client: bacula-fdStorage: File1When: 2015-04-02 14:55:46Catalog: MyCatalogPriority: 10OK to run? (yes/mod/no): yes ←yesを入力します。

リストア実行

doneコマンドを実行します。

リストア

# cd /tmp/bacula-restores# ls# etc# cd cd etc/bacula/# ls# bacula-fd.conf#

リストア確認をします。

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

/tmp/bacula-restores に出力したので、該当のディレクトリを参照します。

「bacula-fd.conf」がリストアされたことを確認します。