upgrade - Firebird 数据库升级

标签 upgrade firebird

我们公司在其产品中使用 Firebird 数据库已有 4 - 5 年了。在此之前我们一直使用Interbases数据库。最近出现了新的需求,需要启用 unicode 字符集(目前我们使用字符集“NONE”)。在调查该问题后,我发现解决方案需要升级 ODS(磁盘结构)二进制格式的数据库文件作为步骤之一。我读到推荐的解决方案是使用 gbak 实用程序备份然后恢复数据库。这有一个问题。在 original manual给 Firebird 的信中写道:

The backup should be taken using the gbak utility supplied by the old ODS version of InterBase or Firebird. The restore should be carried out using gbak from the newer version of Firebird.

这是一个问题,因为我正在开发的产品已经开发了 20 年,我真的无法说出我们的客户使用的所有 ODS 版本。如果我遵循上述说明,则意味着我的升级实用程序应该具有从 Interbase 1.0 至今发布的所有可能版本的 gbak 实用程序。根据检测到的 ODS 版本(例如,通过调用作为 Firebird 安装的一部分提供的命令行实用程序“gstat”),我应该调用正确的 gbak.exe 文件。对我来说,这似乎过于复杂的解决方案。是否可以仅使用最新的 gbak 实用程序进行备份和恢复阶段?我担心的是我在这个过程中犯了一些错误并且数据会丢失。所以我不能仅仅依靠 gbak 实用程序进行备份,而是手动备份 *.gdb 文件。

最佳答案

您应该能够使用当前 Firebird 版本的 gbak 备份数据库,并使用要迁移到的 Firebird 版本的 gbak 进行恢复。如果这是同一个版本,那就没问题。

专门使用创建 ODS 版本的 Firebird 或 Interbase 版本的 gbak 的指令通常是多余的,因为 gbak 可以理解旧格式。如果您的数据库在当前 Firebird 版本上运行良好,那么应该可以使用该版本的 gbak 进行备份。据我所知,该指令的含义是,您应该使用目标Firebird版本的gbak进行恢复。

忽略一些边缘情况,通常在升级 ODS 时它可以工作到 Firebird 2.5。从 Firebird 2.5 迁移到 Firebird 3 时,您需要按照此说明正确升级。

还要确保在进行正常备份时使用正确的版本。例如,使用 Firebird 2.1 gbak 备份 ODS 11.2/Firebird 2.5 数据库似乎可以工作,但它会使备份在 Firebird 2.5 上无法恢复,因为较旧的 gbaks 不知道它们需要跳过 RDB$ADMIN角色。恢复到 Firebird 2.5 时,这会导致尝试插入重复的角色,这将破坏恢复。

但是,当您将数据库更改为使用 UTF-8 时,您可能需要考虑使用正确的字符集重新创建数据库,并将数据(通过适当的字符集转换)从旧数据库抽取到新数据库。

关于upgrade - Firebird 数据库升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621143/

相关文章:

postgresql - 升级 PostgreSQL 数据库。函数会发生什么?

deployment - Azure 升级域、域计数

database - 计算 Firebird 3.0 bigint 与 Firebird 2.5 整数

firebird - 如何在 Firebird 中轻松更改字段类型或字段长度?

php - 使用 ODBC Firebird 驱动程序在 PHP 中不带 FROM 子句的 SQL SELECT

c# - 使用 ADO.Net 提供程序将 Firebird 2.5 迁移到 4.0

node.js - 通过 npm 升级 Node.js 时出错

java - jetty 9.0.4 -> 9.1.2 : WebServlet not loading any more

使用JOIN时不使用Firebird索引,为什么?

java - SSLException : Received fatal alert: illegal_parameter after Java 1. 7 升级