首页 文章

Firebird数据库升级

提问于
浏览
5

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

应使用旧版本的InterBase或Firebird提供的gbak实用程序进行备份 . 应该使用较新版本的Firebird中的gbak进行恢复 .

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

1 回答

  • 5

    您应该能够使用当前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时,您可能需要考虑使用正确的字符集重新创建数据库,并将数据(具有适当的字符集转换)从旧数据库抽取到新数据库 .

相关问题