# 先决条件

在登陆或复制数据之前，请确保达成以下先决条件：

* 在 数据移动网关 服务器上安装所需的 driver

  信息注释

  只有当您选择使用 数据移动网关 时，才需要这样。有关 数据移动网关 的优势和何时需要它的信息，请参阅 [Qlik Data Gateway - Data Movement](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm)。

  请注意，Qlik Talend Cloud Starter 订阅不可使用 数据移动网关。

* 授予数据源所需的权限

* 配置数据源连接器

## 支持的版本

支持以下 MySQL 版本：

* MySQL Community 版本
* MySQL Standard 版本
* MySQL Enterprise 版本
* MySQL Cluster Carrier Grade 版本

## 驱动程序设置

您可以使用驱动程序安装实用程序（推荐）安装 driver 或手动安装。只有在您遇到驱动程序安装实用程序发生问题的少见情况下，才应尝试手动安装。

### 使用驱动程序安装实用程序安装驱动程序

本部分介绍如何安装所需的 driver。这个过程包括运行一个脚本，该脚本将自动下载、安装和配置所需的 driver。您还可以根据需要运行脚本来更新和卸载 driver。

### 准备安装

* 请确保在 数据移动 网关服务器上安装了 Python 3.6 或更高版本。

  Python 预装在大多数 Linux 发行版上。您可以通过运行以下命令来检查系统上安装了哪个 Python 版本。

  python3 --version

### 安装 driver

下载并安装 driver ：

1. 在 数据移动 网关计算机上，将工作目录更改为：

   opt/qlik/gateway/movement/drivers/bin

2. 然后运行以下命令：

   语法：

   ./install mysql

   如果无法下载 driver（由于访问限制或技术问题），将显示一条消息，为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后，请再次运行 install mysql 命令。

   否则，将显示 driver 的 EULA。

3. 执行以下选项之一：

   * 重复按 [Enter] 可在 EULA 中缓慢滚动。
   * 重复按空格键可快速滚动 EULA。
   * 按 q 退出许可证文本并显示 EULA 接受选项。

4. 执行以下选项之一：

   * 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。

   * 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。

   * 键入“v”并按 [Enter] 以再次查看 EULA。

   将会安装 driver。

### 更新 driver

如果要在安装提供的 driver 之前卸载以前版本的 driver，请运行 update 命令。

下载并更新 driver：

1. 在 数据移动 网关计算机上，将工作目录更改为：

   opt/qlik/gateway/movement/drivers/bin

2. 然后运行以下命令：

   语法：

   ./update mysql

   如果无法下载 driver（由于访问限制或技术问题），将显示一条消息，为您指示在 数据移动 网关机器上下载 driver 的位置和复制驱动程序的位置。完成此操作后，请再次运行 update mysql 命令。

   否则，将显示 driver 的 EULA。

3. 执行以下选项之一：

   * 重复按 [Enter] 可在 EULA 中缓慢滚动。
   * 重复按空格键可快速滚动 EULA。
   * 按 q 退出许可证文本并显示 EULA 接受选项。

4. 执行以下选项之一：

   * 键入 "y" 并按 [Enter] 接受 EULA 并开始安装。
   * 键入 "n" 并按 [Enter] 拒绝 EULA 并退出安装。
   * 键入“v”并按 [Enter] 可从头开始查看 EULA。

   将卸载旧的 driver，并安装新的 driver。

### 卸载 driver

如果要卸载 driver，请运行 uninstall 命令。

卸载 driver：

1. 停止所有配置为使用此连接器的任务。

2. 在 数据移动 网关计算机上，将工作目录更改为：

   opt/qlik/gateway/movement/drivers/bin

3. 然后运行以下命令：

   语法：

   ./uninstall mysql

   将卸载 driver。

### 手动安装驱动程序

只有在自动驱动程序安装未成功完成的情况下，才应尝试手动安装 driver。

安装 数据移动网关 后，下载 mysql-connector-odbc-&lt;版本&gt;.x86\_64.rpm 驱动程序。您可以在此路径下面找到受支持版本的直接下载链接：binary-artifacts in /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml。下载完成后，将 RPM 复制到 数据移动网关 机器上。

在 数据移动网关 服务器上，打开 shell 提示符并执行以下操作：

1. 停止 数据移动网关 服务：

   sudo systemctl stop repagent

2. 可选择确认服务已停止：

   sudo systemctl status repagent

   状态应如下所示：

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. 在 数据移动网关 计算机上安装驱动程序。

4. 将工作目录更改为 &lt;数据移动网关\_Install\_Dir&gt;/bin.

5. 将驱动程序位置复制到 `site_arep_login.sh` 文件：

   `echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh`

   这将把驱动程序添加到 "LD\_LIBRARY\_PATH" 并更新 site\_arep\_login.sh 文件中的驱动程序位置。

6. 可选择确认已将驱动程序位置复制：

   ```
   cat site_arep_login.sh
                           
   ```

7. 确保 /etc/odbcinst.ini 文件包含 MySQL 的条目，如以下示例所示：

   ` [MySQL ODBC 8.0 Unicode Driver]
                            ` ` Driver   = /usr/lib64/libmyodbc8w.so
                            ` ` UsageCount  = 1
                            `

8. 启动 数据移动网关 服务：

   sudo systemctl start repagent

9. 可选择确认服务已启动：

   sudo systemctl status repagent

   状态应如下所示：

   Active: active (running) since &lt;timestamp&gt; ago

## 端口

默认情况下，需要打开端口 3306 以便在 数据移动网关 服务器上进行出站通信。您可以在连接器设置中更改此项。

## 一般前提条件

确保满足以下先决条件：

* 具有 [所需的权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/MySQL/security-req-mysql-source.htm) 的 MySQL 帐户。

* MySQL 8：用于捕获更改的标准身份验证

* 经过认证的 MySQL 版本支持时态数据类型的分数值（在 MySQL 5.6 中引入）。因此，不再支持旧的时态数据类型格式的移动。

  信息注释请注意，升级到支持时态数据类型分数值的 MySQL 版本*不会*自动升级时态数据格式。这需要单独完成。这也适用于从 MariaDB 10.1 升级。有关升级临时数据类型格式的说明，请参阅供应商的在线帮助。

## 从客户安装的 MySQL 数据库捕获更改

以下部分介绍从本地 MySQL 数据库捕获更改的要求。

### 启用二进制日志记录

要启用二进制日志记录（CDC 移动 需要），必须在 MySQL 的 `my.ini` (Windows) 或 `my.cnf` (UNIX) 文件中配置以下参数。

二进制日志记录参数

| 参数 | 值 |
| --- | --- |
| server\_id | 自 1 起的任何值。<br><br>示例：<br><br>` server_id=1<br>` |
| log-bin=&lt;path&gt; | 二进制日志文件的路径（无扩展名）。<br><br>示例：<br><br>` log-bin=E:\MySql_Logs\BinLog<br>` |
| binlog\_format | 必须为：<br><br>` binlog_format=row<br>` |
| binlog\_expire\_logs\_seconds | 为防止磁盘空间问题，强烈建议不要使用默认值 (2592000)。<br><br>示例（持续 5 天）：<br><br>` binlog_expire_logs_seconds=432000<br>` |
| binlog\_row\_image | 必须为：<br><br>` binlog_row_image=full<br>` |

### 群集先决条件

为了能够移动群集的 (NDB) 表（通过连接到任何群集节点），必须在 MySQL 的 my.ini (Windows) 或 my.cnf (UNIX) 文件中配置以下参数。

信息注释

使用 Percona 作为源时，无需执行该部分中所述的过程。

群集参数

| 参数 | 值 |
| --- | --- |
| ndb\_log\_bin | 必须为：<br><br>`ndb_log_bin=on`<br><br>确保将群集表中的更改记录到二进制日志中。 |
| ndb\_log\_update\_as\_write | 必须为：<br><br>`ndb_log_update_as_write=OFF`<br><br>防止将 UPDATE 作为 INSERT 写入二进制日志。 |
| ndb\_log\_updated\_only | 必须为：<br><br>`ndb_log_updated_only=OFF`<br><br>确保二进制日志将包含整个行，而不仅仅是更改的列。 |

## 从 Google Cloud for MySQL 捕获更改

#### 二进制日志记录

捕获更改需要二进制日志记录。要检查是否启用了二进制日志记录（默认值），请确保数据库的 `binlog_row_image` 参数设置为 `全`。

#### Replication

复制使数据能够从主数据库服务器复制到一个或多个辅助服务器。

数据可以从主服务器或辅助服务器登陆。

要从辅助服务器捕获更改，请使用二进制日志记录参数 `log_slave_updates` 需要设置为 ` true  `(`1`)。

另请阅读：https://cloud.google.com/sql/docs/mysql/replication

## 从 Amazon RDS for MySQL 和 Amazon Aurora for MySQL 捕获更改

#### 二进制日志记录

要设置 Amazon RDS for MySQL 或 Amazon Aurora for MySQL for CDC，请执行以下操作：

1. 按照 AWS 帮助中的说明创建新的参数组（请参阅二进制日志格式部分）。

2. 创建新参数组时，请设置： `binlog_format=row`

3. 保存新的参数组。

4. 如果您有 Amazon RDS for MySQL 的现有实例，请编辑该实例以使用上面步骤 2 中指定的参数。如果您正在配置 Amazon RDS for MySQL 的新实例，请参考上面步骤 1 中创建的新参数组。

5. 最后，确保启用了自动备份（默认）。

进一步阅读：https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER\_LogAccess.MySQL.BinaryFormat.html

#### Replication

复制使数据能够从主数据库服务器复制到一个或多个辅助服务器。

数据可以从主服务器或辅助服务器登陆。

要从辅助服务器捕获更改，请使用二进制日志记录参数 `log_slave_updates` 需要设置为 ` true  `(`1`)。

另请阅读：https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER\_MySQL.Replication.html

## 从 Microsoft Azure database for MySQL 捕获更改

捕获更改需要二进制日志记录。要检查是否启用了二进制日志记录（默认值），请确保数据库的 `binlog_row_image` 参数设置为 `全`。