Kjell Rilbe Asked: 2020-01-14 03:18:58 +0800 CST2020-01-14 03:18:58 +0800 CST 2020-01-14 03:18:58 +0800 CST 冒险使用多个 Firebird nbackup -L 是否安全? 772 我每晚都在使用 Firebird 3.0 nbackup 来锁定 + 复制 + 解锁。 如果某些步骤失败或被跳过,例如由于系统重新启动(更新),可能会发生主服务器未解锁(-N)的情况。第二天晚上,它已经处于锁定状态,但计划的备份任务将再次锁定它(-L)。 这安全吗? 第二个 -L 会不会有任何影响,或者它是无操作的,所以单个解锁 (-N) 会将其恢复到正常状态?或者如果它已经处于锁定状态,我是否必须防止第二个锁定(-L)? backup firebird 1 个回答 Voted Best Answer Mark Rotteveel 2020-01-14T08:31:20+08:002020-01-14T08:31:20+08:00 nbackup -L在数据库已锁定时执行将产生错误(并且可执行文件将返回退出代码 1 而不是 0): [ PROBLEM ON "begin backup". unsuccessful metadata update -ALTER DATABASE failed -Database is already in the physical backup mode SQLCODE:-607 ] 在这种情况下,Firebird(或 nbackup)不会更改数据库状态中的任何内容。因此锁定的数据库将保持锁定状态。 理论上继续会很好(因为数据库被锁定),但我认为忽略错误并继续是一个好主意,因为它可能是与此不同的错误。因此,为了进行正确的错误检查,您需要检查错误是Database is already in the physical backup mode不是其他错误。 ALTER DATABASE BEGIN BACKUP顺便说一句,您可以使用andALTER DATABASE END BACKUP实现相同的效果,这也适用于 SuperServer 模式(因为该nbackup工具需要直接文件访问,而 SuperServer 对文件使用排他锁)。
nbackup -L
在数据库已锁定时执行将产生错误(并且可执行文件将返回退出代码 1 而不是 0):在这种情况下,Firebird(或 nbackup)不会更改数据库状态中的任何内容。因此锁定的数据库将保持锁定状态。
理论上继续会很好(因为数据库被锁定),但我认为忽略错误并继续是一个好主意,因为它可能是与此不同的错误。因此,为了进行正确的错误检查,您需要检查错误是
Database is already in the physical backup mode
不是其他错误。ALTER DATABASE BEGIN BACKUP
顺便说一句,您可以使用andALTER DATABASE END BACKUP
实现相同的效果,这也适用于 SuperServer 模式(因为该nbackup
工具需要直接文件访问,而 SuperServer 对文件使用排他锁)。