LINUX.ORG.RU

Как узнать JobID соответствующего ему дифференциального бекапа?

Последний по дате diff ему всегда соотв. разве нет?

Сами id друг с другом не связаны.

zgen ★★★★★
()
Ответ на: комментарий от zgen

Последний по дате diff ему всегда соотв. разве нет?

Да. В идеальном мире, в котором все бекапы проходят вовремя, volume'ы не повреждаются, а админы не косячат при ручном удалении.

Сами id друг с другом не связаны.

Должны быть как-то связаны. Если добавить нового клиента и попытаться выполнять incremental бекап, bacula скажет, что не видит полного, поэтомоу будет full backup. Т.е. у bacula эта ифнормация есть

Смысл в следующем:

bacula почему-то не удаляет информацию о бекапах из БД после выполнения команды delete volume или delete job

А мне нужно точно знать, какие бекапы у меня есть

В т.ч. мне нужно убедиться, что для инкрементальных и дифференциальных бекапов есть соотвествующая база - полный и дифференциальный бекап, соответственно

Пока я вроде бы могу выбрать полные бекапы, которые у меня точно есть. Но тот же запрос возвращает в т.ч. дифференциальный бекап, у которого уже удалил соответствующий полный

SELECT
  distinct(Job.JobId) as JobId, Job.StartTime as JobStartTime,
  Client.Name as Client, FileSet.FileSet as FileSet, Job.Type as T, Job.Level as L,
  Pool.Name as PoolName, Media.VolumeName as Volume,
  Status.JobStatusLong as Status,
  Job.VolSessionId as V_S_Id,
  Job.JobFiles as Files, Job.JobBytes as Bytes, Job.JobErrors as Errors
FROM 
  Job
  LEFT JOIN Pool on Job.PoolID = Pool.PoolID
  LEFT JOIN Client ON Client.ClientId=Job.ClientId
  LEFT JOIN JobMedia on JobMedia.JobId = Job.JobID
  LEFT JOIN Media on Media.MediaId=JobMedia.MediaId
  LEFT JOIN Status on Status.JobStatus = Job.JobStatus
  LEFT JOIN FileSet on Job.FileSetId=FileSet.FileSetId
WHERE
  ( DATE(Job.StartTime) BETWEEN DATE( current_date() - interval 1 day ) and DATE( current_date() ) )
  and not ( Media.VolumeName is NULL and Job.VolSessionId=0 and Job.JobBytes=0)
  and ( Client.Name like '%client1%')
ORDER by Job.JobId DESC;
router ★★★★★
() автор топика
Ответ на: комментарий от router

not ( Media.VolumeName is NULL and Job.VolSessionId=0 and Job.JobBytes=0)

вот эта часть вроде бы отфильтрует то, что уже удалено ( delete volume, delete jobid )

методом тыка подобрал

но остаются «осиротевшие» differential бекапы. И мне нужно их как-то найти, чтобы понимать текущую ситуацию

router ★★★★★
() автор топика
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от zgen

А, кажется понял. Т.е. bacula не знает, на каком конкретно из full бекапов опирается differential

И тупо берёт последний из full ?

Да, это возможно, хотя и очень печально. Тогда голым sql не обойтись

router ★★★★★
() автор топика
Ответ на: комментарий от router

Если добавить нового клиента и попытаться выполнять incremental бекап, bacula скажет, что не видит полного

Правильно, потому что тупо последнего полного нет. Никакой связи между jobid для этого вывода в этом случае не нужно.

bacula почему-то не удаляет информацию о бекапах из БД после выполнения команды delete volume или delete job

Потому что для удаления информации из бд существуют другие комманды.

prune

И тупо берёт последний из full ?

Да, мне всегда так казалось.
Если не находит full для этого jobname - то твой inc/diff тупо сам становится им.

zgen ★★★★★
()
Ответ на: комментарий от router

http://www.bacula.org/7.4.x-manuals/en/problems/Bacula_Frequently_Asked_Que.h...

I want an Incremental but Bacula runs it as a Full backup. Why?

Before doing an Incremental or a Differential backup, Bacula checks to see if there was a prior Full backup of the same Job that terminated successfully. If so, it uses the date that full backup started as the time for comparing if files have changed. If Bacula does not find a successful full backup, it proceeds to do one.

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.