夜間にファイルサーバーとメールサーバーに障害が発生したことがわかりました。 そして、あなたは朝をそんなにうまく始めることは容易ではなかったことを理解します。 実行するのに十分な作業がありますが、データをバックアップしておいたので、データは安全に保存されます。
データのバックアップがある場合、原則として、通常の作業状況。 今日お話しするのは、「バックアップの時間について」です。
多数のデータバックアップシステムがありますが、オープンソース-はるかに少なく、エンタープライズレベル、さらにはオープンソースでさえ、必要に応じて指先で数えることができます。
可能性を詳細に研究した後、目立たない名前の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台のサーバーに障害が発生する状況は架空のものであり、例としてのみ示します。