Bareos

BareOS BackupCatalog 作業卡在 Director 中終止,RunAfterJob 未執行

  • February 5, 2022

這看起來很奇怪。我使用 Bacula 和現在的 BareOS 已有 10 多年了,但現在一個系統出現了奇怪的行為,我不知道為什麼以及如何修復。

當它執行每日備份時,它工作正常,直到它到達 BackupCatalog 作業,該作業被配置為在其他所有操作之後執行。

該作業看起來已成功終止(表中的 JobStatus=T list jobs):

*list jobs
...
+-------+---------------+--------------+---------------------+------+-------+----------+-----------------+-----------+
| JobId | Name          | Client       | StartTime           | Type | Level | JobFiles | JobBytes        | JobStatus |
+-------+---------------+--------------+---------------------+------+-------+----------+-----------------+-----------+
...
| 5,475 | BackupCatalog | kantor-fd    | 2019-12-04 02:56:40 | B    | F     |       21 |      27,364,860 | T         |
+-------+---------------+--------------+---------------------+------+-------+----------+-----------------+-----------+

但是,在messages日誌文件中,我看不到最後一項工作的正常摘要。日誌文件完成如下:

19-Nov 02:32 kantor-dir JobId 5398: shell command: run BeforeJob "/usr/lib/bareos/scripts/make_catalog_backup.pl Kantor"
19-Nov 02:33 kantor-dir JobId 5398: Start Backup JobId 5398, Job=BackupCatalog.2019-11-18_23.10.00_10
19-Nov 02:33 kantor-dir JobId 5398: Using Device "FileStorage" to write.
19-Nov 02:33 kantor-sd JobId 5398: Volume "Kantor-2018-01-08_08:48:50" previously written, moving to end of data.
19-Nov 02:33 kantor-sd JobId 5398: Ready to append to end of Volume "Kantor-2018-01-08_08:48:50" size=4716094462
19-Nov 02:33 kantor-sd JobId 5398: Elapsed time=00:00:05, Transfer rate=5.663 M Bytes/second

就這樣。注意,RunAfterJob 腳本似乎沒有被執行。但是如果我手動執行它,它就可以工作(導出的目錄數據庫文件被刪除)。然而,這不是 RunAfterJob 腳本的唯一工作。

我希望它最終會顯示出這樣的東西。所有其他工作都有它:

19-Nov 02:32 kantor-dir JobId 5397: Bareos kantor-dir 16.2.6 (02Jun17):
 Build OS:               x86_64-pc-linux-gnu debian Debian GNU/Linux buster/sid
 JobId:                  5397
 Job:                    FTP.2019-11-18_23.05.00_09
...
 FD termination status:  OK
 SD termination status:  OK
 Termination:            Backup OK

19-Nov 02:32 kantor-dir JobId 5397: Begin pruning Jobs older than 1 month 10 days .
...

此外,導演的身份看起來很奇怪:

*status dir
kantor-dir Version: 16.2.6 (02 June 2017) x86_64-pc-linux-gnu debian Debian GNU/Linux buster/sid
Daemon started 03-Dec-19 11:10. Jobs: run=4, running=1 mode=0 db=mysql
Heap: heap=135,168 smbytes=222,459 max_bytes=236,758 bufs=543 max_bufs=594

Scheduled Jobs:
...
====

Running Jobs:
Console connected at 04-Dec-19 09:03
JobId Level   Name                       Status
======================================================================
 5475 Full    BackupCatalog.2019-12-03_23.10.00_08 has terminated
====

Terminated Jobs:

JobId  Level    Files      Bytes   Status   Finished        Name 
====================================================================
...
 5471  Incr      6,591    7.499 G  OK       03-Dec-19 23:15 termsrv
 5472  Incr        427    11.37 G  OK       03-Dec-19 23:44 1C
 5473  Incr          3    3.198 G  OK       04-Dec-19 02:56 Oracle
 5474  Incr      5,797    2.600 G  OK       04-Dec-19 02:56 FTP


Client Initiated Connections (waiting for jobs):
...
====

即在“正在執行的工作”中列出的上述工作,但它說它已終止。它沒有在“終止的工作”中列出,好像導演還有事情要做。

它在這種狀態下掛了六個小時。我還看到時間有些奇怪(表和日誌文件中的 StartTime 相差半小時,但是,系統date和 MySQLselect NOW();是同步的)。

director 重啟後,director 狀態看起來更合適:

Running Jobs:
Console connected at 04-Dec-19 09:06
No Jobs running.
====
No Terminated Jobs.

這一切都始於兩週前。如果我讓它掛起,所有後續計劃的作業將無限期地等待這個卡住的作業,這意味著不會執行任何備份。

我覺得這可能是該作業的 RunAfterJob 腳本存在的問題,但它是標準發布的腳本。如果我用手跑進去,它會起作用。作業定義本身也是標準發布的,唯一的修改是我在 FileSet 中添加了 compression=GZIP,但我每次都這樣做,這從未引起任何問題。

要找什麼?怎麼修?


更新:

問題消失了。我不明白,為什麼。備份工作至少兩天。似乎什麼都沒有卡住。

它似乎被配置為在作業備份結束時通過電子郵件發送引導文件BackupCatalog

Write Bootstrap = "|/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" root@localhost"

如果未配置伺服器上的電子郵件發送,則會卡住。如果電子郵件發送受阻但後來在伺服器外部修復,它會突然解開而沒有明顯的跡象表明發生了什麼變化。這似乎是我的情況。

通過刪除這個Write Bootstrap問題可以完全避免。(該作業將按照JobDefs-referencedDefaultJob模板中的配置寫入本地引導文件。)

這是 BareOS 的一個缺陷,它沒有解釋可能出現的問題,也沒有將其記錄為問題並走得更遠。它只是卡住了。太糟糕了。也不可惜,預設情況下也是這樣配置的。

引用自:https://serverfault.com/questions/994232