|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
Здравствуйте! На одном из серверов при создании бэкапа, с помощью nbackup -B 0 ..., произошла ошибка и больше пока не воспроизводится. Команда: Код: sql 1.
Ошибка: Код: sql 1. 2. 3. 4. 5. 6. 7.
В каких случаях может происходить такая ошибка? Судя по ошибке, она произошла в конце бэкапа во время выполнения команды END BACKUP, т.е. BEGIN BACKUP был выполнен успешно. А раз так, то как БД оказалась в "not in the physical backup mode"? В логе firebird.log ничего интересного нет (за интервал времени выполнения этого бэкапа), кроме: 1) Sat Jan 8 07:00:16 2022 Fatal lock manager error: invalid lock id (309760), errno: 0 2) Sat Jan 8 11:55:05 2022 Shutting down the server with 1 active connection(s) to 1 database(s), 0 active service(s) 1-е сообщение не относится ко времени бэкапа - оно на 3 часа раньше его старта. Или время в логе пишется в UTC? 2-е сообщение, на сколько я понимаю, штатное для nbackup, которое происходит во время его дисконнекта от БД, из-за того что он работает в embedded режиме? Или тут ошибаюсь? БД на "побитость" проверял (gfix -validate -full) - ошибок нет. Используется Firebird 4.0.0.2496 Classic x64. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 15:25 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalov Судя по ошибке, она произошла в конце бэкапа во время выполнения команды END BACKUP, т.е. BEGIN BACKUP был выполнен успешно. А раз так, то как БД оказалась в "not in the physical backup mode"? rashid.abzalov 2-е сообщение, на сколько я понимаю, штатное для nbackup, которое происходит во время его дисконнекта от БД, из-за того что он работает в embedded режиме? Или тут ошибаюсь? rashid.abzalov БД на "побитость" проверял (gfix -validate -full) - ошибок нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 15:33 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
hvladКто-то другой уже выполнил END BACKUP Это совершенно точно исключено. С БД в это время админских задач больше никто не выполнял. Сейчас проверил, в rdb$backup_history есть только 1 запись с временем окончания (RDB$TIMESTAMP) как раз в 11:55:05. Есть ли способ как-то обеспечить монопольный доступ к БД для nbackup? И почему он сам этого не делает? Получается, что в процессе его работы кто-то может легко сделать END BACKUP, и nbackup остановится с такой ошибкой? И после этого не получится найти никаких концов (ни в логе, ни в rdb$backup_history) - кто это сделал и откуда? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 15:49 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalov hvladКто-то другой уже выполнил END BACKUP Это совершенно точно исключено. С БД в это время админских задач больше никто не выполнял.Другого объяснения у меня пока что нет. Все ошибаются, админ тоже человек. rashid.abzalov Сейчас проверил, в rdb$backup_history есть только 1 запись с временем окончания (RDB$TIMESTAMP) как раз в 11:55:05. rashid.abzalov Есть ли способ как-то обеспечить монопольный доступ к БД для nbackup? И почему он сам этого не делает? nbackup этого не делает, т.к. это совершенно не нужно. rashid.abzalov Получается, что в процессе его работы кто-то может легко сделать END BACKUP, и nbackup остановится с такой ошибкой? Проблем с БД это не создаёт. nbackup и Firebird на это рассчитаны. А вот файл бекапа я бы проверил. rashid.abzalov И после этого не получится найти никаких концов (ни в логе, ни в rdb$backup_history) - кто это сделал и откуда? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 16:11 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
Посмотрел ещё раз на nbackup - запись в rdb$backup_history делает nbackup и комиттит тр-цию до выполнения END BACKUP Это значит, что ещё один END BACKUP (предположительный) выполнялся не nbackup'ом, например из isql. - если была ошибка при выполнении END BACKUP, то nbackup не делает detach, так что сообщение в логе ("Shutting down the server...") скорее всего оставил он ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 16:25 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
В целом понятно, спасибо. >>Монопольный доступ обеспечивается шатдауном, например с gfix. Но ведь после такого шатдауна sysdba все равно сможет соединиться с этой БД и выполнить END BACKUP, пусть даже и по ошибке. Т.е получается, что внешними средствами не обеспечить монопольный доступ. Мне кажется, такой доступ должен обеспечиваться внутренними средствами и nbackup-у он нужен, т.к. раз уж он смог сделать BEGIN BACKUP, то только он в этом же сеансе бэкапа и должен мочь сделать END BACKUP. И только если что-то пошло не так (по сути это только прибитие процесса, т.к. обработанные исключения должны снимать блокировку - сейчас это не так, но по логике вещей должно быть так), то только тогда sysdba может явной отдельной командой снять такую блокировку (с записью в лог). >>nbackup этого не делает, т.к. это совершенно не нужно. nbackup рассчитан на одновременный параллельный бэкап? Если нет, то кто-то должен обеспечивать блокировку. Сейчас это предлагается делать регламентными средствами (на уровне договоренностей), а нужно иметь технические. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 18:48 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalovНо ведь после такого шатдауна sysdba все равно сможет соединиться с этой БД и выполнить END BACKUP, пусть даже и по ошибке. речь про single-user shutdown mode. Здесь "с головой будет только один админ". мультиюзер шатдаун в массе это абсурд. Потому что в массе приложений коннект под сисдба (или владельцем). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 19:15 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalov, вообще-то, если из ДВУХ isql дать alter database begin backup, то второй получит Код: plaintext 1. 2. 3. 4.
то же самое должно быть и при параллельном запуске двух нбэкапов, но мне проверять лениво (надо искать баальшую базу, чтобы успеть запустить 2 нбэкапа). p.s. самое смешное, что второй isql, увидев ошибку, может дать alter database end backup, ибо они оба равноправные sysdba, а первый isql при такой же команде теперь обломится Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 19:20 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
kdvречь про single-user shutdown mode Ага, увидел новые опции, спасибо! Хорошо, что nbackup однопоточный, и не создаст несколько соединений :) Хотя, это может измениться, да и зачем разрабатывали целую механику дельта-файлов..., если нужно делать целый shutdown. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 20:11 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
kdvвообще-то, если из ДВУХ isql дать alter database begin backup, то второй получит. то же самое должно быть и при параллельном запуске двух нбэкапов Да, это так и есть и это правильно. Но раз ни nbackup, ни BEGIN BACKUP не должны работать одновременно в разных сеансах, то почему бы не обеспечивать монопольный доступ к блокированию БД для одной конкретной операции BEGIN BACKUP в рамках одной команды бэкапа в nbackup? kdvp.s. самое смешное, что второй isql, увидев ошибку, может дать alter database end backup, ибо они оба равноправные sysdba, а первый isql при такой же команде теперь обломится. Однако, они оба SYSDBA, и их конкуренция - не проблема FB. Очень "удобная гибкость" ... для создания граблей. А для решения простых административных задач требуется прямолинейная однозначность - если процесс начался, то на пол пути его у тебя никто не уведет, хоть по ошибке, хоть по злому умыслу. И самое печальное, обо всех этих вклиниваниях не будет никакого упоминания в логах... kdvПервый isql мог вообще сделать дисконнект, и потом опять коннект и alter ... Если рассматривать BEGIN BACKUP и END BACKUP как инструмент решающий 3 задачи за один присест - для бэкапа nbackup, для блокировки nbackup -L и для непосредственных команд sql BEGIN BACKUP, то да, такое компромиссное решение выглядит логичным. Но если рассматривать конкретную операцию бэкапа с nbackup, то такая гибкость уже не выглядит логичным. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 20:13 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalovда и зачем разрабатывали целую механику дельта-файлов..., если нужно делать целый shutdown. Затем и создавали чтобы было не нужно. Считалось, что nbackup нужен только солидным организациям с большими базами, а там пароль sysdba не раздают кому попало. Оптимисты... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 20:18 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalov >>Монопольный доступ обеспечивается шатдауном, например с gfix. Но ведь после такого шатдауна sysdba все равно сможет соединиться с этой БД и выполнить END BACKUP, пусть даже и по ошибке. Т.е получается, что внешними средствами не обеспечить монопольный доступ. Более того, я вообще не вижу ни одной точки зрения с такой необходимостью. Невозможно на 100% защититься от ошибок админа. Ни в какой системе. Далее. nbackup (как и gbak) предназначен для работы с БД параллельно с пользователями и было бы странно делать иначе. Если сильно хочется - пишите свою утилиту, которая при коннекте будет переводить БД в single-user shutdown, выполнять бекап и переводить БД в online. Это возможно. Но до сих пор никому не было нужно. Может проблема не там, где кажется ? rashid.abzalov Мне кажется, такой доступ должен обеспечиваться внутренними средствами и nbackup-у он нужен, т.к. раз уж он смог сделать BEGIN BACKUP, то только он в этом же сеансе бэкапа и должен мочь сделать END BACKUP. Вы сейчас придумываете какие-то правила под себя, но хотите чтобы они действовали для всех. rashid.abzalov И только если что-то пошло не так (по сути это только прибитие процесса, т.к. обработанные исключения должны снимать блокировку - сейчас это не так, но по логике вещей должно быть так), то только тогда sysdba может явной отдельной командой снять такую блокировку (с записью в лог). rashid.abzalov >>nbackup этого не делает, т.к. это совершенно не нужно. nbackup рассчитан на одновременный параллельный бэкап? Если нет, то кто-то должен обеспечивать блокировку. Сейчас это предлагается делать регламентными средствами (на уровне договоренностей), а нужно иметь технические. PS я правильно понимаю, что про это речь уже не идёт ? rashid.abzalov Это совершенно точно исключено PPS если же речь идёт о "монопольном доступе" к команде END BACKUP тем же процессом , который выдал BEGIN BACKUP, то это совершенно другой разговор, и всё равно выглядит весьма сомнительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 20:29 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
hvladНевозможно на 100% защититься от ошибок админа. Ни в какой системе. Но залогировать и выдать warning можно. Сценарий когда nbackup начал бэкап, и вдруг по среди процесса в другом сеансе сделали END BACKUP - не может считаться нормальным. Это, как минимум, нужно залогировать, а как максимум, другому сеансу нужно было дать отлуп. Остальные варианты с shutdown и прочее произрастают из невозможности достичь исходной цели штатными средствами. Я только за параллельную работу с пользователями, но не за одновременную работу над одной задачей, в данном случае процессом бэкапа. hvladВы сейчас придумываете какие-то правила под себя, но хотите чтобы они действовали для всех. Еще раз, речь только про сценарий когда nbackup начал бэкап, и вдруг по среди процесса в другом сеансе сделали END BACKUP. Я сильно удивлюсь если такой сценарий ожидаемый для всех. hvladКакую блокировку ? Может стоит почитать - как работает nbackup? Фраза вырвана из контекста. Там не описывалось текущее поведение nbackup. Там описывался гипотетический вариант блокировки которая могла бы быть: rashid.abzalovМне кажется, такой доступ должен обеспечиваться внутренними средствами и nbackup-у он нужен, т.к. раз уж он смог сделать BEGIN BACKUP, то только он в этом же сеансе бэкапа и должен мочь сделать END BACKUP. И только если что-то пошло не так (по сути это только прибитие процесса, т.к. обработанные исключения должны снимать блокировку - сейчас это не так, но по логике вещей должно быть так), то только тогда sysdba может явной отдельной командой снять такую блокировку (с записью в лог). hvladPS я правильно понимаю, что про это речь уже не идёт? Нет, идет. Там никто не мог выполнить sql команды END BACKUP, а бэкап с nbackup-ом это был регламентный процесс, выполнялся планировщиком заданий. Но подтвердить это я никак не могу (в тексте ошибки нет никаких подробностей кто и когда опередил nbackup, и в логах ничего нет, и в rdb$backup_history тоже ничего нет), поэтому, чтобы не наступать на эти же грабли и ведется этот разговор. А сейчас пока придется пробовать это воспроизводить или наблюдать пока не воспроизведется снова. PS. База ~200 Гб, бэкапилась на внешний USB диск, обычно процесс занимается от 2,5 до 3,5 часов, но на этот раз ошибка произошла примерно через час после старта. По крайней мере, судя по коду nbackup, "commit history insert" произошел успешно и завершился в это время, но commit был последним действием перед блоком catch, т.е. получается, что internal_unlock_database вызывался не из catch блока. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 21:22 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalovСценарий когда nbackup начал бэкап, и вдруг по среди процесса в другом сеансе сделали END BACKUP - не может считаться нормальным. да чего бы это вдруг? Вам Влад посоветовал почитать про nbackup, я вот даже подкину доку: http://www.ibase.ru/files/firebird/nbackup_ru.pdf nbackup -L равно alter database begin backup nbackup -N равно alter database end backup. Почему вы хотите запретить выполнение этих команд "в разных сеансах"??? Что с вашей точки зрения является "сеансом"? Кто такой "он же" в смысле выполнителя этих команд? (вообще это может быть один и тот же человек, либо по глупости, либо по специфическим причинам) Я разве что согласен, что если - запускаем nbackup -b (аналог -L, копирования, и -N) - в процессе этого некий сумасшедший админ выполняет nbackup -n - по окончании nbackup -b получает отлуп (потому что оба были SYSDBA, а база не заблокирована от нескольких sysdba). Ну так кто вам такую схему мешает провернуть выше с командами -L и -N? - админ дает nbackup -L - начинает копировать базу средствами ОС - другой админ (или тот же) дает nbackup -N - ... конфликт интересов? (особенно при том, что первый админ получает шлак вместо скопированной БД). Тогда да, как и сказал Влад - переводите перед нбэкапом базу в single-user shutdown. Но это ваши внутренние проблемы и прихоти. rashid.abzalovБаза ~200 Гб, бэкапилась на внешний USB диск, обычно процесс занимается от 2,5 до 3,5 часов как-то тормозно. 18 мегабайт в секунду всего. p.s. я еще добавлю, что "иллюзия блокирования" может происходить из того, что nbackup -b это как бы одна команда. Но у нас тут не файловый сервер - в этот момент (а это СМЫСЛ нбэкапа) с базой могут работать другие пользователи и другие SYSDBA. Иначе, ваш вариант с "блокированием" - это остановка ФБ, копирование файла, и запуск ФБ. Тогда никакие sysdba этому процессу не помешают (если опять же, какой-то админ параллельно во время копирования не запустит ФБ). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 22:23 |
|
nbackup -B 0 - PROBLEM ON "end backup" ... "Database is not in the physical backup mode"
|
|||
---|---|---|---|
#18+
rashid.abzalov hvladНевозможно на 100% защититься от ошибок админа. Ни в какой системе. Но залогировать и выдать warning можно. Сценарий когда nbackup начал бэкап, и вдруг по среди процесса в другом сеансе сделали END BACKUP - не может считаться нормальным. Это, как минимум, нужно залогироватьВы и получили ошибку, нет ? Сценарий, когда сумасшедший админ удаляет проводки через одну - может считаться нормальным ? СУБД должна от этого защищать ? rashid.abzalov База ~200 Гб, бэкапилась на внешний USB диск, Мне добавить пока нечего. Будет новая информация, воспроизведение баги (если это бага) - welcome. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2022, 23:04 |
|
|
start [/forum/topic.php?fid=40&tid=1559846]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 276ms |
total: | 410ms |
0 / 0 |