中兴通讯股份有限公司 (中国广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦, Guangdong 7, 518057, CN)
| 权 利 要 求 书 一种数据库备份恢复方法, 其特征在于, 包括: 备份旧版本数据库, 其中, 保存所述旧版本数据库的表结构; 获取所述新版本数据库的表结构; 比较所述旧版本数据库的表结构与所述新版本数据库的表结构, 确 定表结构发生变化; 根据变化的类型以及对应的预设策略, 将所述旧版本数据库的备份 恢复到所述新版本数据库中。 根据权利要求 1所述的方法, 其特征在于, 确定表结构发生变化包括确 定所述新版本数据库的表结构发生了以下至少一种变化: 所述新版本数据库中删除了表; 所述新版本数据库中增加了表; 所述新版本数据库中的表改名; 所述新版本数据库中的表删除了列; 所述新版本数据库中的表增加了列; 所述新版本数据库中的表中的列改名; 所述新版本数据库中的表中的列改变了顺序; 所述新版本数据库中的表中的列改变了数据类型。 才艮据权利要求 2所述的方法, 其特征在于, 所述对应的预设策略包括以 下至少一项: 对于变化 1 , 略过对所述删除的表的恢复; 对于变化 2 , 略过对所述新增的表的恢复; 对于变化 3 , 将所述备份中被改名的表恢复到所述新版本数据库中 所述改名的表; 对于变化 4 , 略过对所述删除的列的恢复; 对于变化 5 , 如果预设了默认值, 则将所述新增的列设置为所述默 认值, 如果没有预设默认值, 则将所述新增的列设置为 NULL值, 或者 指示的值; 或者略过对所述新增的列的恢复; 对于变化 6, 将所述备份中被改名的列恢复到所述新版本数据库中 所述改名的列; 对于变化 7, 按照所述新的顺序, 将所述备份中的列恢复到所述新 版本数据库中的列; 对于变化 8, 将所述备份中的列中的值转换为所述新的数据类型, 然后恢复到所述新版本数据库中的列中, 如果无法转换, 则将所述新版 本数据库中的列恢复为指定的值。 4. 根据权利要求 3所述的方法, 其特征在于, 还包括预先建立配置文件, 通过解析所述配置文件, 执行将所述旧版本数据库的备份恢复到所述新 版本数据库中, 其中, 所述配置文件中包括执行所述预设策略 3、 5、 6、 8的至少一项的规则。 5. 根据权利要求 4所述的方法, 其特征在于, 所述配置文件中还包括以下 至少一项规则: 列 4爹改规则: 指示将所述新版本数据库中指定的列的值设置成默认 值; 列删除规则: 指示将所述新版本数据库中指定的列的值设置成 NULL值; 表修改规则: 指示对所述新版本数据库中的表中的多个列釆用所述 列修改规则和所述列删除规则的组合; 后处理规则: 指示在已经将所述备份恢复到所述新版本数据库的基 础上,通过执行 SQL语句或专门的代码段以修改所述新版本数据库中的 数据。 6. 根据权利要求 3所述的方法, 其特征在于, 还包括预先建立执行程序, 通过所述执行程序直接执行所述预设策略 1、 2、 4、 7的至少一项的规则。 7. 根据权利要求 1所述的方法, 其特征在于, 通过块拷贝 bcp方式将所述 旧版本数据库的所述备份恢复到所述新版本数据库中。 8. 根据权利要求 1所述的方法, 其特征在于, 所述表结构的信息包括: 数 据库名、 表名、 列名、 列长度和列数据类型。 9. 一种数据库备份恢复装置, 其特征在于, 包括: 备份模块, 用于备份旧版本数据库, 其中, 保存所述旧版本数据库 的表结构; 获取模块, 用于清空新版本数据库的所有表的记录, 并获取所述新 版本数据库的表结构; 比较模块, 用于比较所述旧版本数据库的表结构与所述新版本数据 库的表结构, 确定表结构发生变化; 恢复模块, 用于根据变化的类型以及对应的预设策略, 将所述旧版 本数据库的备份恢复到所述新版本数据库中。 10. 根据权利要求 9所述的装置, 其特征在于, 所述比较模块确定表结构发 生变化包括确定所述新版本数据库的表结构发生了以下至少一种变化: 所述新版本数据库中删除了表; 所述新版本数据库中增加了表; 所述新版本数据库中的表改名; 所述新版本数据库中的表删除了列; 所述新版本数据库中的表增加了列; 所述新版本数据库中的表中的列改名; 所述新版本数据库中的表中的列改变了顺序; 所述新版本数据库中的表中的列改变了数据类型。 11. 居权利要求 10所述的装置, 其特征在于, 所述对应的预设策略包括以 下至少一项: 对于变化 1 , 略过对所述删除的表的恢复; 对于变化 2 , 略过对所述新增的表的恢复; 对于变化 3 , 将所述备份中被改名的表恢复到所述新版本数据库中 所述改名的表; 对于变化 4 , 略过对所述删除的列的恢复; 对于变化 5 , 如果预设了默认值, 则将所述新增的列设置为所述默 认值, 如果没有预设默认值, 则将所述新增的列设置为 NULL值, 或者 指示的值; 或者略过对所述新增的列的恢复; 对于变化 6, 将所述备份中被改名的列恢复到所述新版本数据库中 所述改名的列; 对于变化 7, 按照所述新的顺序, 将所述备份中的列恢复到所述新 版本数据库中的列; 对于变化 8, 将所述备份中的列中的值转换为所述新的数据类型, 然后恢复到所述新版本数据库中的列中, 如果无法转换, 则将所述新版 本数据库中的列恢复为指定的值。 |
( 1 ) 启动旧版本数据库; ( 2 ) 启动新版本数据库; ( 3 ) 清空新版本数据库中所有表的记录;
( 4 ) 人工判断每一个新旧表格是否发生变化;
( 5 ) 对于没有变化的表格, 釆用数据库管理系统提供的数据迁移工具, 将旧数据库中表结构相同的每一个表的记录迁 移到新数据库中;
( 6 ) 釆用数据库管理系统提供的数据迁移工具, 对于旧数据库中表结 构不相同的每一个表, 判断哪些列需要舍弃, 哪些列需要进行数据类型转换 等特殊策略, 选择对应的操作类型后, 将记录迁移到新数据库中;
( 7 ) 如果某些表的记录内容还需要进行特殊修改才 能满足新版本程序 的要求, 则可以执行一系列 sql语句, 或者执行一些程序来进行处理; 数据恢复结束。 上述步骤是个非常繁瑣的过程, 尤其是第(4)、(5)、(6 )三步, 在表格比 较多的情况, 操作起来是非常耗时的事情。 发明内容 本发明旨在提供数据库备份恢复方法和装置, 以实现数据库备份恢复的 前向兼容。 根据本发明的一个方面, 提供了一种数据库备份恢复方法, 包括: 备份 旧版本数据库, 其中, 保存旧版本数据库的表结构; 清空新版本数据库的所 有表的记录, 并获取新版本数据库的表结构; 比较旧版本数据库的表结构与 新版本数据库的表结构, 确定表结构发生变化; 根据变化的类型以及对应的 预设策略, 将旧版本数据库的备份恢复到新版本数据库中 。 根据本发明的另一方面, 提供了一种数据库备份恢复装置, 包括: 备份 模块, 用于备份旧版本数据库, 其中, 保存旧版本数据库的表结构; 获取模 块,用于清空新版本数据库的所有表的记录, 并获取新版本数据库的表结构; 比较模块, 用于比较旧版本数据库的表结构与新版本数据 库的表结构, 确定 表结构发生变化; 恢复模块, 用于根据变化的类型以及对应的预设策略, 将 旧版本数据库的备份恢复到新版本数据库中。 本发明通过分析表结构的变化, 解决了现有技术不能够将备份的旧版本 的数据库恢复到数据库结构设计发生变化的新 版本的数据库中的问题, 进而 实现了数据库备份恢复的前向兼容。 附图说明 此处所说明的附图用来提供对本发明的进一步 理解, 构成本申请的一部 分, 本发明的示意性实施例及其说明用于解释本发 明, 并不构成对本发明的 不当限定。 在附图中: 图 1示出了现有技术中的数据库备份恢复方法的 程图; 图 2示出了根据本发明实施例的数据库备份恢复 法的流程图; 图 3示出了根据本发明优选实施例的数据库备份 复方法的流程图; 图 4示出了根据本发明实施例的数据库备份恢复 置的示意图。 具体实施方式 下文中将参考附图并结合实施例来详细说明本 发明。 需要说明的是, 在 不冲突的情况下, 本申请中的实施例及实施例中的特征可以相互 组合。 数据库通常包括多个数据表, 每个数据表由多个列构成, 每列都具有数 据结构。 本发明的实施例以该数据库为基础予以实施。 图 2示出了根据本发明实施例的数据库备份恢复 法的流程图, 包括: 步骤 S 10, 备份旧版本数据库, 其中, 保存旧版本数据库的表结构, 例 如在旧版本中备份所需的表结构信息、 表数据以及当前版本号, 用文件形式 保存起来; 步骤 S20, 清空新版本数据库的所有表的记录, 并获取新版本数据库的 表结构; 步骤 S30, 比较旧版本数据库的表结构与新版本数据库的 表结构, 确定 表结构发生变化; 步骤 S40, 根据变化的类型以及对应的预设策略, 将旧版本数据库的备 份恢复到新版本数据库中。 该实施例通过分析表结构的变化, 解决了现有技术不能够将备份的旧版 本的数据库恢复到数据库结构设计发生变化的 新版本的数据库中的问题, 进 而实现了数据库备份恢复的前向兼容。 优选地, 确定表结构发生变化包括确定新版本数据库的 表结构发生了以 下至少一种变 4匕:
1、 新版本数据库中删除了表;
2、 新版本数据库中增加了表;
3、 新版本数据库中的表改名;
4、 新版本数据库中的表删除了列; 5、 新版本数据库中的表增加了列; 6、 新版本数据库中的表中的列改名;
7、 新版本数据库中的表中的列改变了顺序;
8、 新版本数据库中的表中的列改变了数据类型。 以上几种数据库结构的变化, 可能单独出现, 也可能组合在一起出现, 比如新版本中可能出现这种情形: 某个表 A?丈名为表 B, 同时表 B里面的某 个列 a也被删除。 另外, 以上的表或者列并不限定于一个或者多个。 本实施例通过大量地分析研究, 最后对各种数据库结构变化归纳为以上 八类。 以上八类变化, 通过表结构的比较, 可以很容易地识别。 优选地, 对应的预设策略包括以下至少一项: 1、 对于变化 1 , 略过对删除的表的恢复;
2、 对于变化 2, 略过对新增的表的恢复;
3、 对于变化 3 , 将备份中被改名的表恢复到新版本数据库中改 名的表;
4、 对于变化 4, 略过对删除的列的恢复;
5、 对于变化 5 , 如果预设了默认值, 则将新增的列设置为默认值, 如果 没有预设默认值, 则将新增的列设置为 NULL值, 或者指示的值; 或者略过 对新增的列的恢复;
6、 对于变化 6, 将备份中被改名的列恢复到新版本数据库中改 名的歹' J;
7、 对于变化 7, 按照新的顺序, 将备份中的列恢复到新版本数据库中的 列; 8、 对于变化 8, 将备份中的列中的值转换为新的数据类型, 然后恢复到 新版本数据库中的列中, 如果无法转换, 则将新版本数据库中的列恢复为指 定的值。 通过执行上述兼容处理, 就可以适应新老版本数据库的结构设计的所有 八种变化, 从而很好地实现了数据库备份恢复的前向兼容 , 能够应用于绝大 多数场景。 优选地, 本方法还包括预先建立 XML文件, 通过解析 XML文件, 执行 将旧版本数据库的备份恢复到新版本数据库中 , 其中, XML文件中包括执行 预设策略 3、 5、 6、 8的至少一项的规则。 预设策略 3、 5、 6、 8比较特殊, 需要灵活多变地适应用户的设置, 所以不适合直接固化到程序中。 而 XML 文件可以很容易地由用户来编辑, 所以适合配置预设策略 3、 5、 6、 8 的规 则。 优选地, XML文件中还包括以下至少一项规则: 列修改规则: 指示将新版本数据库中指定的列的值设置成默 认值; 列删除规则: 指示将新版本数据库中指定的列的值设置成 NULL值; 表^ ί'爹改规则: 指示对新版本数据库中的表中的多个列釆用列 4爹改规则和 列删除规则的组合; 后处理规则: 指示在已经将备份恢复到新版本数据库的基础 上, 通过执 行 SQL语句或专门的代码段以修改新版本数据库中 的数据。 在某些场景下, 新版本数据库的结构也许没有变化, 但是用户期望能自 由地设置新版本数据库中表的内容, 即不希望将备份中的内容直接恢复到新 版本数据库中, 而是可以在恢复过程中改变内容。 而本实施例通过在 XML 文件中配置上述的规则, 很好地满足了用户的上述需求。 优选地, 本方法还包括预先建立执行程序, 通过执行程序直接执行预设 策略 1、 2、 4、 7的至少一项的规则。 因为预设策略 1、 2、 4和 7比较简单, 不需要用户进行配置, 所以可以直接写入程序, 以减轻用户操作负担和加快 执行速度。 优选地, 通过 bcp ( block copy, 块拷贝) 方式将旧版本数据库的备份恢 复到新版本数据库。 这可以提高备份恢复的速度。 优选地, 表结构的信息包括: 数据库名、 表名、 列名、 列长度和列数据 类型。 使用这些信息可以很容易地判断出新老版本数 据库是否发生了结构变 化。 图 3示出了根据本发明优选实施例的数据库备份 复方法的流程图, 该 优选实施例综合了上述多个实施例的技术方案 , 包括以下步骤: 1、 在旧版本中执行备份操作, 将所有需要备份的相关表的结构信息、 表数据和当前版本号导出为文件, 统一放到一个单独的文件夹中。
2、 针对新版本制定一个特殊恢复策略 XML配置文件, 将所有需要人工 千预的处理步 4聚以特定的规则写入 XML配置文件中; 如果所有差异都是备 份恢复程序能够自动识别的情况, 该 XML配置文件可以设置为空。 将备份 文件夹拷贝到新版本软件中, 开始执行恢复操作。
3、 先清空新版数据库中所有相关的表的记录, 并获取各个表的结构信 息, 包括数据库名、 表名、 包含的所有列名、 列长度和列数据类型。
4、 读取备份文件夹中所有备份的相关表格结构信 息, 依次处理每一个 备份表格, 比较新旧版本的表结构差异性、 并判断是否在 XML配置文件中 预设了特殊规则。
5、 判断是否有表结构变化和制定特殊规则? 如果判断结果为是, 执行 步骤 6, 否则执行步 4聚 7。
6、 如果当前备份表格不存在表结构变化, 而且 XML配置文件中没有指 定特殊恢复策略, 则使用 bcp方式直接导入表数据文件, 将备份记录恢复到 数据库中。
7、 如果当前备份表格存在表结构变化, 或者 XML配置文件中有指定特 殊恢复策略, 则恢复程序按照特定的规则进行兼容处理。
8、 在所有备份文件都导入数据库以后, 检查 XML 配置文件中的 SQL 规则和命令码规则。 如果没有 SQL规则, 就可以结束恢复过程了。
9、 如果存在 SQL规则, 则依次执行该类规则中指定的所有 SQL语句, 来对数据库中现有数据进行 4爹改。
10、 最后检查 XML配置文件中的命令码规则, 依次执行每个命令码对 应的特定代码, 来对数据库中现有数据进行爹改。 恢复操作结束。 该实施例通过备份恢复程序和特殊恢复策略 XML配置文件相结合的方 式, 来处理数据库内容的各种兼容性问题。 通过适当调整 XML文件的规则, 就能满足绝大多数应用场景的需求。 同时, 釆用 bcp导入导出方式可以提高 备份恢复的速度。 图 4示出了根据本发明实施例的数据库备份恢复 置的示意图, 包括: 备份模块 10 , 用于备份旧版本数据库, 其中, 保存旧版本数据库的表结 构; 获取模块 20 , 用于清空新版本数据库的所有表的记录, 并获取新版本数 据库的表结构; 比较模块 30 , 用于比较旧版本数据库的表结构与新版本数据 库的表结 构, 确定表结构发生变化; 恢复模块 40 , 用于根据变化的类型以及对应的预设策略, 将旧版本数据 库的备份恢复到新版本数据库中。 该实施例通过分析表结构的变化, 解决了现有技术不能够将备份的旧版 本的数据库恢复到数据库结构设计发生变化的 新版本的数据库中的问题, 进 而实现了数据库备份恢复的前向兼容。 优选地, 比较模块 30 确定表结构发生变化包括确定新版本数据库的 表 结构发生了以下至少一种变化: 新版本数据库中删除了表; 新版本数据库中增加了表; 新版本数据库中的表改名; 新版本数据库中的表删除了列; 新版本数据库中的表增加了列; 新版本数据库中的表中的列改名; 新版本数据库中的表中的列改变了顺序; 新版本数据库中的表中的列改变了数据类型。 以上八类变化, 通过表结构的比较, 可以很容易地识别。 优选地, 在上述的装置中, 对应的预设策略包括以下至少一项: 对于变化 1 , 略过对删除的表的恢复; 对于变化 2 , 略过对新增的表的恢复; 对于变化 3 , 将备份中被改名的表恢复到新版本数据库中改 名的表; 对于变化 4, 略过对删除的列的恢复; 对于变化 5 , 如果预设了默认值, 则将新增的列设置为默认值, 如果没 有预设默认值, 则将新增的列设置为 NULL值, 或者指示的值; 或者略过对 新增的列的恢复; 对于变化 6 , 将备份中被改名的列恢复到新版本数据库中改 名的列; 对于变化 7, 按照新的顺序, 将备份中的列恢复到新版本数据库中的歹 'J ; 对于变化 8, 将备份中的列中的值转换为新的数据类型, 然后恢复到新 版本数据库中的列中, 如果无法转换, 则将新版本数据库中的列恢复为指定 的值。 通过执行上述兼容处理, 就可以适应新老版本数据库的结构设计的所有 八种变化, 从而很好地实现了数据库备份恢复的前向兼容 , 能够应用于绝大 多数场景。 从以上的描述中, 可以看出, 本发明可以将数据库内容从旧版本软件环 境中快速恢复到新版本软件环境中, 并解决数据库结构变化带来的兼容性问 题。 针对各种不同的数据库结构差异性, 只需要简单修改 XML配置文件, 即可满足向前兼容的备份恢复需求。 显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可 以用通用的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布 在多个计算装置所组成的网络上, 可选地, 它们可以用计算装置可执行的程 序代码来实现, 从而, 可以将它们存储在存储装置中由计算装置来执 行, 并 且在某些情况下, 可以以不同于此处的顺序执行所示出或描述的 步骤, 或者 将它们分别制作成各个集成电路模块, 或者将它们中的多个模块或步骤制作 成单个集成电路模块来实现。 这样, 本发明不限制于任何特定的硬件和软件 结合。 以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本 领域的技术人员来说, 本发明可以有各种更改和变化。 凡在本发明的 ^"神和 原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护 范围之内。
Next Patent: PROTECTION SWITCHING METHOD AND SYSTEM
