> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 将任意 MySQL 实例配置为 ClickPipes 的源

# Generic MySQL 源设置指南

<Info>
  如果您使用的是受支持的提供商之一 (见侧边栏) ，请参阅该提供商对应的专用指南。
</Info>

<div id="enable-binlog-retention">
  ## 启用二进制日志保留功能
</div>

二进制日志记录了对 MySQL 服务器实例中数据所做的修改，是进行复制所必需的。

<div id="binlog-v8-x">
  ### MySQL 8.x 及更高版本
</div>

要在 MySQL 实例上启用二进制日志记录，请确保已配置以下设置：

```sql theme={null}
log_bin = ON                        -- 默认值
binlog_format = ROW                 -- 默认值
binlog_row_image = FULL             -- 默认值
binlog_row_metadata = FULL
binlog_expire_logs_seconds = 86400  -- 1天或更长；默认为30天
```

要查看这些设置，请运行以下 SQL 命令：

```sql theme={null}
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';
SHOW VARIABLES LIKE 'binlog_row_metadata';
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
```

如果这些值不一致，可以运行以下 SQL 命令进行设置：

```sql theme={null}
SET PERSIST log_bin = ON;
SET PERSIST binlog_format = ROW;
SET PERSIST binlog_row_image = FULL;
SET PERSIST binlog_row_metadata = FULL;
SET PERSIST binlog_expire_logs_seconds = 86400;
```

如果你更改了 `log_bin` 设置，必须重启 MySQL 实例，更改才能生效。

更改设置后，继续[配置数据库用户](#configure-database-user)。

<div id="binlog-v5-x">
  ### MySQL 5.7
</div>

要在 MySQL 5.7 实例上启用二进制日志记录，请确保已配置以下设置：

```sql theme={null}
server_id = 1            -- 或更大；不能为 0
log_bin = ON
binlog_format = ROW      -- 默认值
binlog_row_image = FULL  -- 默认值
expire_logs_days = 1     -- 或更大；0 表示日志永久保留
```

要查看这些设置，请运行以下 SQL 命令：

```sql theme={null}
SHOW VARIABLES LIKE 'server_id';
SHOW VARIABLES LIKE 'log_bin';
SHOW VARIABLES LIKE 'binlog_format';
SHOW VARIABLES LIKE 'binlog_row_image';
SHOW VARIABLES LIKE 'expire_logs_days';
```

如果这些配置值不一致，您可以在配置文件中设置它们 (通常位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`) ：

```ini theme={null}
[mysqld]
server_id = 1
log_bin = ON
binlog_format = ROW
binlog_row_image = FULL
expire_logs_days = 1
```

你必须重启 MySQL 实例，更改才能生效。

<Note>
  MySQL 5.7 及更早版本不支持列排除和 schema 变更。这些功能依赖于表元数据，而在 [MySQL 8.0.1](https://dev.mysql.com/blog-archive/more-metadata-is-written-into-binary-log/) 之前的 binlog 中不包含这些元数据。
</Note>

<div id="configure-database-user">
  ## 配置数据库用户
</div>

以 root 用户身份连接到你的 MySQL 实例，并执行以下命令：

1. 为 ClickPipes 创建一个专用用户：

   ```sql theme={null}
   CREATE USER 'clickpipes_user'@'%' IDENTIFIED BY 'some_secure_password';
   ```

2. 授予 schema 权限。以下示例展示了 `clickpipes` 数据库的权限。对于你想要复制的每个数据库和主机，请重复执行这些命令：

   ```sql theme={null}
   GRANT SELECT ON `clickpipes`.* TO 'clickpipes_user'@'%';
   ```

3. 向该用户授予复制权限：

   ```sql theme={null}
   GRANT REPLICATION CLIENT ON *.* TO 'clickpipes_user'@'%';
   GRANT REPLICATION SLAVE ON *.* TO 'clickpipes_user'@'%';
   ```

<Note>
  请确保将 `clickpipes_user` 和 `some_secure_password` 替换为你所需的用户名和密码。
</Note>

<div id="ssl-tls-configuration">
  ## SSL/TLS 配置 (推荐)
</div>

SSL 证书可确保与你的 MySQL 数据库建立安全连接。具体配置取决于证书类型：

**受信任的证书颁发机构 (DigiCert、Let's Encrypt 等) ** - 无需额外配置。

**内部证书颁发机构** - 向你的 IT 团队获取根 CA 证书文件。在 ClickPipes UI 中创建新的 MySQL ClickPipe 时上传该文件。

**自托管 MySQL** - 从你的 MySQL 服务器复制 CA 证书 (通常位于 `/var/lib/mysql/ca.pem`) ，并在 UI 中创建新的 MySQL ClickPipe 时上传。主机请使用服务器的 IP 地址。

**无法访问服务器的自托管 MySQL** - 联系你的 IT 团队获取证书。作为最后手段，可在 ClickPipes UI 中启用“跳过证书验证”开关 (出于安全原因，不推荐) 。

如需了解有关 SSL/TLS 选项的更多信息，请参阅我们的 [FAQ](/zh/integrations/clickpipes/mysql/faq#tls-certificate-validation-error)。

<div id="whats-next">
  ## 接下来做什么？
</div>

您现在可以[创建您的 ClickPipe](/zh/integrations/clickpipes/mysql)，并开始将 MySQL 实例中的数据摄取到 ClickHouse Cloud。
请务必记下设置 MySQL 实例时使用的连接信息，因为在创建 ClickPipe 的过程中会用到这些信息。
