# 高级运行选项

除了标准的运行、停止和恢复选项外，还提供了其他几个用于运行任务的选项。您可以通过执行以下任一操作打开高级运行选项对话框：

* 从复制任务的 the 菜单按钮由 3 个垂直点组成。 icon 菜单中，在管道视图或磁贴视图中选择高级运行选项。
* 打开复制任务，然后从右上角的 the 高级运行选项 icon 菜单中选择。

## 处理更改

在高级运行选项对话框中，选择处理更改。有以下选项可用：

* [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)表已加载。从以下位置开始处理更改[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)：

  信息注释当任务从以前的时间或位置 (SCN/LSN) 恢复时，将不会捕获在任务停止时对源表执行的元数据更改（例如，DROP COLUMN）。在这种情况下，将捕获任务恢复时存在的元数据。

  * 日期和时间：设置要开始捕获更改的日期和时间。

    信息注释

    * 从数据库中删除日志时（例如，由于清除策略），可能不存在与指定日期和时间匹配的日志。在这种情况下，数据任务将在指定的日期和时间之后从尽可能早的时间点恢复任务。
    * 对于 IBM DB2 for LUW 源端点，此选项不能用于从 ApplyChanges 任务的原始开始时间之前的某个点启动应用更改任务。或者，换句话说，它只能用于在“应用更改”任务的原始开始时间之后的任何时间启动任务。
    * 时间戳使用浏览器计算机的本地时间。

  * [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)源更改位置（SCN 或 LSN）：指定日志中恢复更改处理的位置。源更改位置格式因数据源而异。有关更多信息，请参阅[如何查找源变更位置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm#How)。

    信息注释

    仅以下源端点支持源更改位置选项：

    * oracle
    * Microsoft SQL Server
    * MySQL
    * PostgreSQL
    * IBM DB2 for z/OS
    * IBM DB2 for LUW

## 恢复任务

在高级运行选项对话框中，选择恢复。有以下选项可用：

* 使用本地存储的检查点进行恢复：如果无法使用已加载的 表进行恢复，请使用此选项。从 [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm)[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm) 选项开始处理更改（例如，由于交换文件损坏）。选择此选项后，复制任务将使用 `<Data_Folder_Path>/data/tasks/<task_name>/StateManager` 中存储的检查点数据来恢复任务。

  信息注释

  使用此选项时，请注意以下限制和注意事项：

  * 仅在事务性应用更改模式中受支持，并且仅对支持事务的数据目标受支持。

  * 仅支持以下数据源：
    * oracle

    * Microsoft SQL Server

    * MySQL

    * PostgreSQL

    * IBM DB2 for z/OS

    * SAP Hana
  * 任务只能在 CDC 期间恢复（即满负载完成后）

* 使用存储在目标上的检查点进行恢复：使用 attrep\_txn\_state 表（在目标数据库中创建）中的 `CHECKPOINT` 值恢复任务。

  示例检查点值：

  ` checkpoint:V1#15#0000038b:000033f1:0004#0#261#0000038b:0000348b:0009#0#273  `

  如果数据文件夹中的文件已损坏或包含数据文件夹的存储设备出现故障，请选择此选项（与使用本地存储的检查点恢复选项相反）。

  有关如何使用 attrep\_txn\_state 表设置和实现恢复的详细说明，请参阅[从夹丢失或损坏数据文件中进行恢复](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating_advanced_run.htm#Recoveri)。

## 如何查找源变更位置

以下部分介绍如何定位每个受支持数据库的源更改位置。

#### MySQL

选项 1：

1. 执行：

   ` SHOW BINARY LOGS;  `

2. 选择一个 binlog 文件（例如 log.000123）。

3. 执行：

   `SHOW BINLOG EVENTS IN 'binlog_filename';`

   ：

   `SHOW BINLOG EVENTS IN 'log.000123';`

4. 定位 BEGIN 或 DDL 语句的位置（例如 1777888）。

   信息注释

   MySQL 不支持位于事务中间的“从位置开始”，这就是为什么必须选择 BEGIN 或 DDL。

5. 设置内部参数：

   `StartFromPosition = binlog_filename:begin_or_ddl_position`

   ：

   `StartFromPosition = log.000123:1777888`

选项 2：

1. 执行：

   `SHOW MASTER STATUS;`

2. 将“从位置开始”设置为：

   firstColumnValue:secondColumnValue

   ：

   mysql.007472:775

#### Microsoft SQL Server

执行：

`SELECT MAX([Current LSN]) FROM fn_dblog(null,null);`

示例：00002717:00000e08:0003

#### oracle

执行：

`SELECT current_scn FROM V$DATABASE;`

示例：1471212002

#### PostgreSQL

请注意，该命令根据您的 PostgreSQL 版本而有所不同。

PostgreSQL 10 及更高版本

执行：

`SELECT * FROM pg_current_wal_lsn();`

#### IBM DB2 for z/OS

指定 LSN，它是非数据共享环境中的 RBA，以及数据共享环境下的 LRSN

#### IBM DB2 for LUW

1. 执行 `db2pd` 以查找正确的日志名称。

2. 使用返回的日志名称执行 ` db2flsn  `，并使用当前 LRI 值。

   另请参阅： [在pureScale环境中从LRI恢复或启动任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/IBM4DB2-luw/IBM4DB2-luw-source.htm#ar_ibm_db2_456845099_55844)

   有关更多信息，请参阅 Replicate 帮助中的“在 pureScale 环境中从 LRI 恢复或启动任务”。

## 从夹丢失或损坏数据文件中进行恢复

在正常操作期间，移动 状态存储在以下位置：

`<Data_Folder_Path>/data/tasks/<task_name>/StateManager`

这使得无法正常恢复的任务（例如，由于交换文件损坏）可以使用上述使用本地存储的检查点恢复选项进行恢复。但是，如果数据文件夹中的文件已损坏，或者包含数据文件夹的存储设备出现故障，则必须使用使用存储在目标上的检查点恢复选项来恢复任务。

### 考虑事项和限制

使用此选项时，请注意以下注意事项和限制：

* 仅当在 CDC 完成之前，在“任务设置”*更改处理调节*选项卡中启用了将任务恢复数据存储在目标数据库中选项时，此选项才可用。

* “应用更改”模式必须设置为事务性。

* 仅支持以下数据源类型：

  * Amazon RDS for MySQL
  * Amazon RDS for PostgreSQL
  * Amazon RDS for SQL
  * AWS Aurora Cloud for PostgreSQL
  * Google Cloud SQL for MySQL
  * Google Cloud SQL for PostgreSQL
  * IBM DB2 for z/OS
  * Microsoft Azure Database for MySQL
  * Microsoft Azure SQL 托管的实例
  * Microsoft SQL Server
  * MySQL
  * oracle
  * PostrgreSQL
  * SAP Hana

* 仅支持 Microsoft SQL Server 目标类型。

* 任务只能在 CDC 期间恢复（满负载完成后）

### 设置和启动任务恢复

要使恢复成功，源数据库事务日志必须在任务失败时可用。

设置要恢复的任务

1. 请确保启用“任务设置”的更改处理调整选项卡中的将任务恢复数据存储在目标数据库中选项。此选项可以在 CDC 期间的任何时间启用，但必须在 CDC 完成之前启用。

2. 运行任务。

除了选定的源表之外，该任务还将检查点数据写入目标数据库中的 attrep\_txn\_state 表（如果其他任务尚未创建该表，则会自动创建该表）。

启动恢复

1. 访问目标数据库中的 attrep\_txn\_state 表，并在 TASK\_NAME 列中查找失败的任务。如果在多个 Qlik Talend Data Integration 服务器上运行具有相同名称的任务，则还需要在 SERVER\_NAME 列中找到相应的服务器。找到相关任务后，将值复制到相应的 CHECKPOINT 列中。
2. 选择使用存储在目标上的检查点恢复选项，然后如上所述提供 CHECKPOINT 值（最好通过粘贴）。
3. 单击确定开始恢复。

在恢复期间，复制任务不会向目标数据库写入任何内容，直到它识别出与 CHECKPOINT 值相对应的提交事件。一旦识别出 CHECKPOINT 提交事件，就会执行恢复，任务将恢复到标准操作。