使用 Enterprise Replication 还原

如果使用 Enterprise Replication,那么从新版本的 GBase 8s 还原时必须完成其他与复制相关的任务。

您不能还原以下类型的服务器:
  • 具有一个或多个“仅发送”参与者的复制中的参与者。 必须从复制定义中删除作为参与者的服务器。
  • 允许复制外部文件的网格的成员。 必须通过运行以下命令来禁用复制此服务器的外部文件的能力:
    cdr modify grid grid_name --disablegridcopy server_groupname

在还原到具有 Enterprise Replication 的较早版本 GBase 8s 期间:

如果已在服务器上定义 Enterprise Replication,并且希望还原到早于在此服务器上定义 Enterprise Replication 时的版本,那么还原之前,必须从此服务器中除去 Enterprise Replication。有关更多信息,请参阅

一旦删除 Enterprise Replication 后,即可以使用从 GBase 8s V8.5 还原中的指示信息来还原服务器。如果在此服务器上定义 Enterprise Replication 时的 GBase 8s 版本等于或高于目标还原版本,请使用以下步骤。

还原到 GBasedbt 11.10、10.00、9.40 或 9.30 的过程与还原到 GBasedbt 9.21 或 7.31 的过程稍有不同。 要还原到 GBasedbt 7.31,数据库服务器必须是 Enterprise Replication 根服务器(数据库服务器分级组织的集合中的最高级别)。

本过程描述如何还原到 GBasedbt 11.50、11.10 或 10.00。要还原到较早版本,请首先还原到中间版本,例如 V11.50 或 V10.0。

但是,如果要从 V11.70xC3 或更高版本还原到 V11.70.xC1 或 11.70.xC2,那么无需执行本主题中所述的其他 Enterprise Replication 迁移过程。

先决条件

以用户 gbasedbt 身份执行所有还原操作。

还原之前,Enterprise Replication 必须正在运行,或者必须删除复制服务器。

要从具有 Enterprise Replication 的 GBasedbt 还原到 V11.10、V10.00、V9.40 或 V9.30:

要从具有 Enterprise Replication 的 GBasedbt 还原到 V11.50、V11.10 或 V10.00:

  1. 停止正在执行可复制事务的应用程序。
  2. 从无法还原的当前发行版中除去 Enterprise Replication 功能部件。请参阅还原需求和限制以获取更多信息。
  3. 如果 Enterprise Replication 处于更改模式则不能还原,所以要确保 Enterprise Replication 未处于更改模式。请使用 onstat -g cat repls 查看 Enterprise Replication 是否处于更改模式。 如果它处于更改模式,请更改此模式。
  4. 删除影子复制。
  5. 确保控制及 TRG 发送队列为空:
    • 运行 onstat -g grp 以确保 Enterprise Replication 分组器没有任何正在审批的事务。
    • 运行 onstat -g rqm 检查已排队消息。
  6. 使用以下命令停止 Enterprise Replication
    cdr stop
    
  7. 使用 dbschema 或 UNLOAD 备份 syscdr 数据库。
  8. 如果要执行定点还原,请将 $GBASEDBTDIR/etc/conv 目录(在 UNIX™ 上)中的 revcdrintrepl.sql 脚本以及 revcdrintrepl.shrevcdrintrepl.bat 脚本复制到非 GBASEDBTDIR 目录下的目录。
    这些脚本用于还原内部复制。还原到较早版本后,将运行这些脚本。
  9. 运行 $GBASEDBTDIR/etc/conv 目录(在 UNIX 上)中名为 revcdr.sh 的还原脚本,如本示例中所示:
    % sh revcdr.sh 11.70 11.50
    % sh revcdr.sh 11.50 11.10

    有效的 to_version 值为 11.5011.1010.00

    有效的 to_version 值为 11.1010.009.409.30

    此脚本先执行还原测试,然后执行实际的 Enterprise Replication 还原。
  10. 如果还原测试或实际还原失败,请分别检查文件 $GBASEDBTDIR/etc/revtestcdr.outrevcdr.out。解决报告的问题后再尝试还原。
  11. 从 GBase 8s V8.5 还原中所述执行数据库服务器还原任务。
  12. 运行 onmode -lonmode -c。如果还原之后和启动 Enterprise Replication 之前没有这样做,当您启动 Enterprise Replication 时数据库服务器可能失败。
  13. 启动 Enterprise Replication
    % cdr start
    
  14. 如果要执行定点还原,请将 revcdrintrepl.sql 脚本以及 revcdrintrepl.shrevcdrintrepl.bat 脚本复制到 $GBASEDBTDIR/etc/conv 目录(在 UNIX 上)。
  15. 运行 revcdrintrepl.sh 脚本(在 UNIX 上)。

要从具有 Enterprise Replication 的 GBase 8s V8.5 还原到 GBasedbt V9.21 或 V7.31:

  1. 删除所有复制集。
  2. 删除任何包含智能大对象或用户定义数据类型的复制。
  3. 停止正在执行可复制事务的应用程序。
  4. 从无法还原的当前发行版中除去 Enterprise Replication 功能部件。请参阅还原需求和限制以获取更多信息。
  5. 确保控制及 TRG 发送队列为空:
    • 运行 onstat -g grp 以确保 Enterprise Replication 分组器没有任何正在审批的事务。
    • 运行 onstat -g rqm 检查已排队消息。
  6. 使用以下命令停止 Enterprise Replication
    cdr stop
    
  7. 使用 dbschema 或 UNLOAD 备份 syscdr 数据库。
  8. 运行 $GBASEDBTDIR/etc/conv 目录(在 UNIX 上)中名为 revcdr.sh 的还原脚本。
    % sh revcdr.sh 11.50 to_version

    有效的 to_version 值为 9.219.207.31

    此脚本先执行还原测试,然后执行实际的 Enterprise Replication 还原。

  9. 如果还原测试或实际还原失败,请分别检查文件 $GBASEDBTDIR/etc/revtestcdr.outrevcdr.out。解决报告的问题后再尝试还原。
  10. 删除 Enterprise Replication 智能大对象空间。
  11. 从 GBase 8s V8.5 还原中所述执行数据库服务器还原任务。
  12. 运行 onmode -lonmode -c。如果还原之后和启动 Enterprise Replication 之前没有这样做,当您启动 Enterprise Replication 时数据库服务器可能失败。
  13. 启动 Enterprise Replication
    % cdr start