Skip to content

Commit

Permalink
ticdc: update ticdc time-zone docs (#14197) (#14226)
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-chi-bot authored Jun 14, 2023
1 parent 2bde576 commit 349bb25
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 32 deletions.
2 changes: 1 addition & 1 deletion ticdc/ticdc-server-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ summary: 了解 TiCDC 详细的命令行参数和配置文件定义。
- `cert`:TiCDC 创建 TLS 连接时使用的证书文件路径,PEM 格式,可选。
- `cert-allowed-cn`:TiCDC 创建 TLS 连接时使用的通用名称文件路径,可选。
- `key`:TiCDC 创建 TLS 连接时使用的证书密钥文件路径,PEM 格式,可选。
- `tz`:TiCDC 服务使用的时区。TiCDC 在内部转换 `TIMESTAMP` 等时间数据类型和向下游同步数据时使用该时区,默认为进程运行本地时区。(注意如果同时指定 `tz` 参数和 `sink-uri` 中的 `time-zone` 参数,TiCDC 进程内部使用 `tz` 指定的时区,sink 向下游执行时使用 `time-zone` 指定的时区)
- `tz`:TiCDC 服务使用的时区。TiCDC 在内部转换 `TIMESTAMP` 等时间数据类型和向下游同步数据时使用该时区,默认为进程运行本地时区。(注意如果同时指定 `tz` 参数和 `sink-uri` 中的 `time-zone` 参数,TiCDC 进程内部使用 `tz` 指定的时区,sink 向下游执行时使用 `time-zone` 指定的时区,请保持二者一致。
- `cluster-id`:TiCDC 集群的 ID。可选,默认值为 `default``cluster-id` 是 TiCDC 集群的唯一标识,拥有相同 `cluster-id` 的 TiCDC 节点同属一个集群。长度最大为 128,需要符合正则表达式 `^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$`,且不能是以下值:`owner``capture``task``changefeed``job``meta`

## `cdc server` 配置文件说明
Expand Down
2 changes: 1 addition & 1 deletion ticdc/ticdc-sink-to-mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ URI 中可配置的参数如下:
| `ssl-ca` | 连接下游 MySQL 实例所需的 CA 证书文件路径(可选)。 |
| `ssl-cert` | 连接下游 MySQL 实例所需的证书文件路径(可选)。 |
| `ssl-key` | 连接下游 MySQL 实例所需的证书密钥文件路径(可选)。 |
| `time-zone` | 连接下游 MySQL 实例时使用的时区名称,从 v4.0.8 开始生效。(可选。如果不指定该参数,使用 TiCDC 服务进程的时区;如果指定该参数但使用空值,则表示连接 MySQL 时不指定时区,使用下游默认时区)。 |
| `time-zone` | 连接下游 MySQL 实例时使用的时区名称,从 v4.0.8 开始生效。(可选。如果不指定该参数,使用 TiCDC 服务进程的时区;如果指定该参数但使用空值,例如:`time-zone=""`则表示连接 MySQL 时不指定时区,使用下游默认时区)。 |
| `transaction-atomicity` | 指定事务的原子性级别(可选,默认值为 `none`)。当该值为 `table` 时 TiCDC 保证单表事务的原子性,当该值为 `none` 时 TiCDC 会拆分单表事务。 |

若需要对 Sink URI 中的数据库密码使用 Base64 进行编码,可以参考如下命令:
Expand Down
32 changes: 2 additions & 30 deletions ticdc/troubleshoot-ticdc.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,37 +81,9 @@ Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
```

如果下游是特殊的 MySQL 环境(某种公有云 RDS 或某些 MySQL 衍生版本等),使用上述方式导入时区失败,就需要通过 sink-uri 中的 `time-zone` 参数指定下游的 MySQL 时区。可以首先在 MySQL 中查询其使用的时区:
如果下游是特殊的 MySQL 环境(某种公有云 RDS 或某些 MySQL 衍生版本等),使用上述方式导入时区失败,则可以通过设置 `time-zone` 为空值来使用下游默认时区,例如:`time-zone=""`

```shell
show variables like '%time_zone%';
```

```shell
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
```

然后在创建同步任务和创建 TiCDC 服务时使用该时区:

```shell
cdc cli changefeed create --sink-uri="mysql://root@127.0.0.1:3306/?time-zone=CST" --server=http://127.0.0.1:8300
```

> **注意:**
>
> CST 可能是以下四个不同时区的缩写:
>
> - 美国中部时间:Central Standard Time (USA) UT-6:00
> - 澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
> - 中国标准时间:China Standard Time UT+8:00
> - 古巴标准时间:Cuba Standard Time UT-4:00
>
> 在中国,CST 通常表示中国标准时间,使用时请注意甄别。
在 TiCDC 中使用时区时,建议显式指定时区,例如:`time-zone="Asia/Shanghai"`。同时,请确保 TiCDC Server 的 `tz` 时区配置、Sink URI 中的 `time-zone` 时区配置和下游数据库的时区配置保持一致。这样可以避免因时区不一致导致的数据不一致问题。

## 如何处理升级 TiCDC 后配置文件不兼容的问题?

Expand Down

0 comments on commit 349bb25

Please sign in to comment.