170311【bacula】cent os7で統合バックアップbacula7.4を使ってみよう
TRANSCRIPT
はじめに
本ドキュメントは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インストール
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の初回起動と初期化を実行した後に、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サーバ/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設定
/etc/bacula/bacula-sd.conf
Director {Name = bacula-dirPassword = “bacula7"
}
Director {Name = bacula-monPassword = " bacula7"Monitor = yes
}
Bacula設定
/etc/bacula/bconsole.conf
Director {Name = bacula-dirDIRport = 9101address = localhostPassword = “bacula7"
}
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ポートが空いていることを確認します
バックアップ
# 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コマンドを実行します。