GCP Datastream同步活跃CloudSQL MySQL增量数据失败,回填正常求助
GCP DataStream 增量同步MySQL到BigQuery失败排查
问题描述
我在GCP中配置DataStream将MySQL数据同步至BigQuery,初始数据转储已成功完成,且曾正常运行一段时间,但之后持续出现MYSQL_CDC_FETCH_FAILED错误:
{ "insertId": "c8c68035-bd9b-4e5d-a350-5abf2bc33163", "jsonPayload": { "event_code": "MYSQL_CDC_FETCH_FAILED", "message": "CDC fetch failed: We couldn't connect to the MySQL server 35.196.212.155 on port 3306 as our request timed out. Make sure that the connection info is correct, the host is up and reachable on that port, and Datastream IPs were allowlisted..", "original_message": "(2003, \"Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (timed out)\")", "read_method": "mysql-cdc-binlog", "context": "CDC" }, "resource": { "type": "datastream.googleapis.com/Stream", "labels": { "location": "us-east1", "resource_container": "projects/444429740053", "stream_id": "replication-stream-json" } }, "timestamp": "2022-09-19T06:21:18.932065Z", "severity": "ERROR", "logName": "projects/*****/logs/datastream.googleapis.com%2Fstream_activity", "receiveTimestamp": "2022-09-19T06:21:19.879866597Z" }
当前管道处于失败状态,但选择特定表执行「启动回填」功能可正常运行。
补充信息:我拥有两个CloudSQL MySQL实例,仅高活跃实例(包含大量更新、插入、删除操作)出现增量数据同步失败问题;低活跃实例中手动修改数据后,约15分钟即可同步至BQ,且已通过IP白名单允许DataStream访问。
排查方向
- 检查MySQL连接资源限制:高活跃实例可能因连接数耗尽、线程池满导致DataStream的CDC连接被拒绝或超时。执行
SHOW STATUS LIKE 'Threads_connected';查看当前连接数,核对max_connections、thread_cache_size配置是否满足负载需求。 - 验证Binlog读取的资源占用:CDC模式依赖读取Binlog,高活跃实例Binlog生成速度快,可能导致MySQL CPU、磁盘IO过高,引发连接超时。监控MySQL的CPU、磁盘IO使用率,执行
SHOW MASTER STATUS;、SHOW GLOBAL STATUS LIKE 'Binlog_%';查看Binlog相关状态。 - 更新DataStream IP白名单:GCP DataStream的服务IP范围可能因维护或区域调整更新,查询GCP官方文档确认当前IP范围,重新更新MySQL的IP白名单规则。
- 排查网络超时配置:检查VPC防火墙规则、CloudSQL网络配置(如私有IP路由、访问控制),以及TCP连接超时设置。高流量场景下,默认超时时间可能无法覆盖MySQL的响应延迟。
- 调整Binlog清理策略:如果高活跃实例的Binlog被过快清理,DataStream可能因找不到指定位置的Binlog而反复重试,导致连接超时。查看
expire_logs_days配置,确保Binlog保留时间足够覆盖同步间隔。 - 分析DataStream重试逻辑:增量同步的重试机制与回填不同,高负载下可能因重试频率过高触发MySQL连接限流。在GCP控制台查看DataStream的完整日志,确认是否存在重复连接失败记录。
- 模拟CDC连接测试:使用与DataStream同区域的GCE实例,通过mysql客户端连接目标MySQL并尝试读取Binlog,验证连接稳定性,排查是DataStream服务问题还是MySQL端的问题。
内容的提问来源于stack exchange,提问作者Stranger
相关产品推荐
相关产品推荐

