一段时间以来,我一直在多个 Compute Engine 实例上成功使用 Google cloud_sql_proxy,直到今天,一次一个实例,代理开始显示以下错误模式:
2017/05/30 13:28:07 New connection for "project-id-1234:us-central1:sql_instance"
2017/05/30 13:28:07 couldn't connect to "project-id-1234:us-central1:sql_instance": Post https://www.googleapis.com/sql/v1beta4/projects/project-id-1234/instances/sql_instance/createEphemeral?alt=json: stream error: stream ID 1; PROTOCOL_ERROR
2017/05/30 13:28:41 New connection for "project-id-1234:us-central1:sql_instance"
2017/05/30 13:28:41 Thottling refreshCfg(project-id-1234:us-central1:sql_instance): it was only called 33.490705951s ago
2017/05/30 13:28:41 couldn't connect to "project-id-1234:us-central1:sql_instance": Post https://www.googleapis.com/sql/v1beta4/projects/project-id-1234/instances/sql_instance/createEphemeral?alt=json: stream error: stream ID 1; PROTOCOL_ERROR
尝试直接连接到 MySQL 时(使用代理时)出现错误 2013 (HY000):
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 "Internal error/check (Not system error)"
我试过的
- 重新启动 cloud_sql_proxy 产生了一个临时修复,直到最后我的两个 Compute Engine 实例都无法连接到我的 Cloud SQL 实例并且代理只显示这个结果。
- 重新启动 Cloud SQL 实例和两个 Compute Engine 实例。
- 消除代理:我将适当的网络添加到我的 SQL 实例的授权网络中,并更新了所有应用程序以使用公共 IP。这恢复了我的生产应用程序的功能,但现在我使用的是公共连接而不是本地/代理。
一些研究
- 我遇到了与 Google Cloud SQL 相关的类似问题,该问题产生了上述相同的 MySQL 错误,但它似乎只影响了从外部非 GCE/GKE 网络连接到 Cloud SQL 。
- 其他一些人今天早上在Google Cloud SQL 讨论组上也报告了同样的问题。