一、报错详情
fail to open MySQL connection: [CDC:ErrMySQLConnectionError]Error 1298: Unknown or incorrect time zone: 'Asia/Shanghai'
二、排查
# 登陆tidb,查看时区
show variables like '%time_zone%';
+------------------+---------------+
| Variable_name | Value |
+------------------+---------------+
| system_time_zone | Asia/Shanghai |
| time_zone | SYSTEM |
+------------------+---------------+
# 登陆mysql,查看时区
show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
这里可以发现上游tidb的时区为Asia/Shanghai,而下游mysql的时区为CST
三、解决办法
办法一、加载时区
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p
办法二、将sink写上下游时区
cdc cli changefeed create --sink-uri="mysql://user:password@mysql_ip:mysql_port/?time-zone=CST" --pd=http://pd_ip:pd_port
官方文档: 文档地址