Baculaのカスタマイズと理解

朝目覚めると、何かがおかしいことがはっきりとわかります。 剃毛したり、自分自身を切ることさえしなかったが、コーヒーをdidでなかったし、路上で晴れた朝だったので、すぐに仕事をすることができた。 しかし、オフィスに入ると、全体がパニックに陥り、すべてがなくなって「オフィスプランクトン全体」が死ぬというヒステリックな叫び声が聞こえます。そして、あなたは死ぬ人の頭にいます。

夜間にファイルサーバーとメールサーバーに障害が発生したことがわかりました。 そして、あなたは朝をそんなにうまく始めることは容易ではなかったことを理解します。 実行するのに十分な作業がありますが、データをバックアップしておいたので、データは安全に保存されます。



データのバックアップがある場合、原則として、通常の作業状況。 今日お話しするのは、「バックアップの時間について」です。

多数のデータバックアップシステムがありますが、オープンソース-はるかに少なく、エンタープライズレベル、さらにはオープンソースでさえ、必要に応じて指先で数えることができます。

可能性を詳細に研究した後、目立たない名前のBaculaが付いたシステムが選択されました。

最小要件リスト:

1.クライアントサーバーアーキテクチャ

2.バックアップする機能。 nixを復元し、システムに勝つ

3.さまざまなバックアップオプション(完全、差分、増分)

4.実行時からバックアップの種類を変更する機能

5.バックアップローテーション

6.「十分な」ドキュメント

7.高い信頼性(スティックで殺すことはできません)

Baculaについて最初に聞いた人は、ウィキペディアにアクセスして、「記事」のトピックについて最小限のアイデアを得るようにしてください。

「たくさんの手紙をマスターした」けれどもウィキペディアに登りたくない人のために、私は主要なモジュールのリストを提供します。

Bacula Director-システム全体を管理するプロセス(管理、計画、バックアップリカバリ)。

Storage Director-データの「物理」ストレージを担当するサーバー上で実行されます。

ファイルディレクター-各クライアントで起動されるサービス。

Bconsoleは管理コンソールです。



タスク:月曜日にserver1とserver3で、火曜日から日曜日までの差分を含む「完全な」バックアップが作成されるように、バックアップとリカバリのシステムをセットアップします。 バックアップ、およびserver2では、1週間のフルバックアップが行われました。

データは少なくとも3週間保存する必要があります。

たとえば、server3からデータをバックアップおよび復元するための構成を取ります。



Baculaディレクターをセットアップすることから始めましょう

(構成ファイル:/etc/bacula/bacula-dir.conf。場所:bacula-directorが実行されているサーバー)

Director {

Name = backup-dir

Dirport = 9101

QueryFile = "/etc/bacula/scripts/query.sql" # sql

WorkingDirectory = "/var/lib/bacula"

PidDirectory = "/var/run/bacula"

Password = "some_password"

Messages = Daemon

DirAddress = 10.10.0.1

}









システムがデータベースにメタデータを集中的に保存するという事実により、mysqlデータベースへのアクセスを設定します。

Catalog {

Name = MyCatalog

dbname = bacula; DB Address = "10.10.0.1"; user = bacula; password = "some_password"

}







管理コンソールへのアクセスを構成する

Console {

Name = backup-mon

Password = "some_password"

CommandACL = status, .status

}







メールで行われた作業に関するレポートを管理者に送信する

Messages {

Name = Daemon

mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"

mail = admin@domain.com = all, !skipped

console = all, !skipped, !saved

append = "/var/lib/bacula/log" = all, !skipped

}







サーバーの「ストレージ」を定義する

Storage {

Name = stor_server1

Address = 10.10.0.2

SDPort = 9103

Password = "storage_pass"

Device = FileStorage

Media Type = File

}







コピーまたは復元タスクを実行するスケジュールに従ってスケジュールを作成します。

月曜日のスケジュールに従って、「フル」バックアップが作成され、残りの日に差分バックアップが作成されます。 そのため、たとえば、金曜日のデータを復元するには、月曜日に実行されたバックアップタスクを展開し、金曜日の差分を上からロールする必要があります。 バックアップ。

Schedule {

Name = "WeeklyDiff"

Run = Level=Full on mon at 05:01

Run = Level=Differential on tue-sun at 02:02

}







「フル」バックアップの作成をスケジュールします。 それはデータに使用され、その損失は誰でも幸運であるので、個人的な問題、または「胸の中」に入ることに関する「あなたの資格」で当局の「完全な」失望につながります。

Schedule {

Name = "WeeklyFull"

Run = Level=Full on mon-sun at 03:03

}







バックアップサーバー3サーバーのタスクを作成する

Job {

Name = "server3" #

Type = Backup # ( )

Level = Differential #

Client=server3-fd #

FileSet="server3" #

Storage = stor_server1 # «»

Pool = mainpool # «»()

Messages = Standard #

Schedule = "WeeklyDiff" #

}









server3サーバーから何をどのように保存するかを正確に指定します

FileSet {

Name = "server3"

Include {

Options {

signature = MD5 # MD5

Compression=GZIP # GZIP

}

File = /etc #

File = /home/

File = /var/www



}



Exclude { # ,

File = /home/logs

File = /var/www/logs

}

}







server3のクライアントパラメータの説明

Client {

Name = server3-fd

Address = 10.10.0.3

FDPort = 9102

Catalog = MyCatalog

Password = "fd_password

File Retention = 28 days #

#

Job Retention = 28 days # #

AutoPrune = yes #

}







このセクションでは、回転パラメーターを決定します。

構成に基づいて、4つのボリュームを使用し、ボリュームは7棟以下の建物を保存します(毎週バックアップ)。ボリュームの保存時間は3週間(21日間)です。

したがって、各タスクを21日間保存し、22日目はこれらのタスクのボリュームをクリアして、再び使用します。

したがって、3週間ではなく4週間のデータを保存する場合、ボリューム保持は21ではなく28、最大ボリュームは5にする必要があります。追加のボリュームを作成することを忘れないでください。

Pool {

Name = mainpool

Pool Type = Backup

Recycle = yes #

AutoPrune = yes #

Volume Retention = 21 days # ""

Maximum Volume Jobs = 7 #

Maximum Volumes = 4 # #

}



,

Job {

Name = "server3-resotre"

Type = Restore

Client=server3

FileSet="server3"

Storage = stor_server1

Pool = mainpool

Messages = Standard

Where = /var/lib/bacula-restores

}









bacula-director、「server3」のバックアップと復元では、この設定で十分です。

私たちがしたこと:月曜日にはサーバーの「完全な」バックアップがあり、火曜日から月曜日までは差分があります。 バックアップ。

北部では、このタスクの「ストレージ」は4つのボリュームを作成し、7つのタスクが各ボリュームに保存されます(ボリュームはlabelコマンドによってリンク(作成)されます)。

4つのボリュームすべてを埋めた後、最も古いボリュームがクリアされます。

次に、サーバーserver3のサーバー「ストレージ」(ストレージディレクター)とクライアント(ファイルディレクター)の構成です。



Bacula Storage Directorの設定の説明

(構成ファイル:/etc/bacula/bacula-sd.conf。場所:bacula-sd(ストレージディレクター)を実行しているサーバー)

Storage {

Name = stor_server1

SDPort = 9103

WorkingDirectory = "/var/lib/bacula"

Pid Directory = "/var/run/bacula"

SDAddress = 10.10.0.2

}

Director {

Name = backup-dir

Password = "storage_pass"

}



Device {

Name = FileStorage

Media Type = File

Archive Device = /var/bacula

LabelMedia = yes;

Random Access = Yes;

AutomaticMount = yes;

RemovableMedia = no;

AlwaysOpen = no;

}



Messages {

Name = Standard

director = backup-dir = all

}









server3のファイルディレクタの設定の説明



(設定ファイル:/etc/bacula/bacula-fd.conf。場所:bacula-fdを実行しているサーバー(server3))

Director {

Name = backup-dir

Password = "server3-fd"

}



FileDaemon {

Name = server3-fd

FDport = 9102

WorkingDirectory = /var/lib/bacula

Pid Directory = /var/run/bacula

FDAddress = 10.10.0.3

}



Messages {

Name = Standard

director = server3-fd = all, !skipped, !restored

}







「ストレージ」サーバーとserver3のクライアントの構成ファイルのコメントが冗長であることを願っています。



この記事の結果は、Baculaという目立たない名前で、柔軟で信頼性の高いバックアップとリカバリのシステムをセットアップする方法を理解することになるかもしれません。



追伸 導入部を読んだ後、なぜ朝目が覚めたのかを尋ねる人のために、監視システムをキャンセルした人がいないため、夜間に2台のサーバーが落ちたことを知りませんでした。

同時に2台のサーバーに障害が発生する状況は架空のものであり、例としてのみ示します。



All Articles