Hello, Vlad!

Vlad Horsun wrote:

читаю документацию по nbackup, и вижу именно это.

    Цитату, плс

какую цитату, если там НЕТ такого? :-)
nbackup -f упоминается только в одном месте -
там где вызывается nbackup -l.
Да и вообще, собственно. Откуда в копии базы берется
это флаг, locked? А очень просто!!!
Nbackup БЛОКИРУЕТ базу, затем копирует ее,
а потом разблокирует. Вот поэтому nbackup 0-го уровня
и получается с флагом lock!
Я угадал? Понятно что это как-бы следует из механизма
работы nbackup. Но это же надо в доке написать.

Хочеш цитирования? пожалуйста:

"2. После этого создается резервная копия. Это не обычная копия файла базы данных - восстановление из полученной копии необходимо производить также при помощи nbackup."

и дальше

"Резервная копия всей базы данных восстанавливается следующим образом (перенос на следующую строку сделан исключительно из эстетических соображений):
Например:
    C:\Databases> nbackup -R inventory.fdb inventory_1-Mar-2006.nbk

"
вот сюда как раз можно было бы добавить, что если это копия
nbk, то нет никакой нужды производить такую операцию.
Достаточно переименовать файл и сделать nbackup -f.

unlock. Если я открою nbackup.nbk,
он ведь изменится. Это ж не readonly DB, так?

    Что мешает сделать её ридонли ?

ничто. она и должна быть такая.
т.е. см. выше. nbackup после создания уровня
0 должен
1. убрать lock с дампа
2. поставить флаг readonly.

под "должен" я имею в виду, что так было бы
логично. и можно было бы к этому дампу коннектиться.
И можно эту базу использовать как готовую базу.
А не морочить людям голову :-)

Кстати. В IB 2007 делают более корректно:
добавляют в дампе в header page дату создания дампа.
для nbk дату его создания можно потерять.

т.е. nbackup-у все равно, лоченый "дамп" используется 1-го уровня, или
нет? А если я открою его, поменяю - и что тогда получится?
по идее, битая база.

    Схожу не скажу, ибо не помню. Проверишь ?

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

собственно, идея была не делать вот эту операцию, а "накатить"
nbackup.nb1 прямо на nbackup.nbk.

    Это у кого была такая идея ? И кто сказал, что она единственно верная ?

Влад. ты разработчик сервера. Ты его не пользуешь. Ты не понимаешь,
как люди работают с 20-30-100 гиговыми базами, и чего им надо.
Я хоть и с трудом, но понимаю. И пытаюсь вам, разработчикам,
транслировать то, что хотят люди.

Потому что я не понимаю, зачем читать весь бэкап уровня 0, создавать
новую базу, а потом на новую базу накатывать инкремент,
вместо того чтобы просто накатить инкремент на бэкап уровня 0.

    И потерять этот бекап навсегда ? Сейчас ты скажешь, что ты его
заранее скопировал ? Так какая разница кто и когда его будет копировать -
ты сам (можешь и забыть) или nbackup ?

Да блин, вот тебе пример! :-)

есть 2 сервера. На одном постоянно делается инкрементный бэкап,
0 1 и 2 уровня.

Задача. Обеспечить максимально быстрое и эффективное восстановление
базы из последнего инкремента НА ДРУГОМ СЕРВЕРЕ.

Сейчас мы имеем что. Мы не можем сначала закинуть на 2-ой сервер
бэкап 0-го уровня, а потом передавать туда
ТОЛЬКО инкременты. И соответственно накатывать только инкременты,
если база read_only.

Причем, делать это надо регулярно. Например, база имеет размер 30 гиг.
Инкремент 1-го уровня 5 гиг. И что получается? А получается, что имея
на 2-ом серваке уже бэкап 0-го уровня, мы не можем на него накатить 5
гиг изменений. Мы должны прочитать 30+5 гиг и создать из них 30гиговую
базу. Каждый раз когда получаем новый инкремент с 1-го сервера.

И откуда возникает такая идея - попробуй скопировать 30 гиг
с диска на диск. Сколько это займет времени?
А передать 30 гиг с сервера на другой сервер?

Кстати, я не случайно дал здесь запрос по реальным объемам
бэкапов разных уровней. Это тоже интересный вопрос,
на тему "до каких пор имеет смысл использовать инкременты,
или проще копировать бэкап 0-го уровня?"

Как минимум сейчас ясно, что документацию по nbackup
надо исправить и дополнить.

    Вот эту ?

     http://www.firebirdsql.org/manual/ru/nbackup-ru.html

ну да.

    Никогда не поздно, было бы желание

спроси лучше ДЕ на эту тему.

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34


Ответить