Google Cloud SQL高可用实例网络架构升级遇INVALID_ARGUMENT错误
Google SQL HA实例网络架构升级失败排查
问题描述
正在执行Google要求的SQL网络架构升级,三台高可用(HA)配置的数据库服务器中,一台升级成功,另外两台执行升级命令时返回"invalid parameter"错误。使用常规命令并开启debug日志后,仍无法定位问题根源。
执行命令
$ gcloud sql instances patch db1-ha --upgrade-sql-network-architecture --verbosity debug
错误日志(翻译后)
DEBUG: 正在运行 [gcloud.sql.instances.patch],参数为: [--upgrade-sql-network-architecture: "True", --verbosity: "debug", INSTANCE: "db1-ha"] DEBUG: 启动新的HTTPS连接 (1): sqladmin.googleapis.com:443 DEBUG: https://sqladmin.googleapis.com:443 "GET /sql/v1beta4/projects/xxx-production/instances/db1-ha?alt=json HTTP/1.1" 200 None 以下消息将用于patch API方法。 {"name": "db1-ha", "project": "xxx-production", "settings": {"databaseFlags": [{"name": "default_time_zone", "value": "-05:00"}]}, "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"} DEBUG: 启动新的HTTPS连接 (1): sqladmin.googleapis.com:443 DEBUG: https://sqladmin.googleapis.com:443 "PATCH /sql/v1beta4/projects/xxx-production/instances/db1-ha?alt=json HTTP/1.1" 400 None DEBUG: (gcloud.sql.instances.patch) INVALID_ARGUMENT: 请求包含无效参数。 Traceback (最近的调用在最后): File "/usr/bin/../lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 998, in Execute resources = calliope_command.Run(cli=self, args=args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 815, in Run resources = command_instance.Run(args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/surface/sql/instances/patch.py", line 411, in Run return RunBasePatchCommand(args, self.ReleaseTrack()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/surface/sql/instances/patch.py", line 379, in RunBasePatchCommand result_operation = sql_client.instances.Patch( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/googlecloudsdk/generated_clients/apis/sqladmin/v1beta4/sqladmin_v1beta4_client.py", line 936, in Patch return self._RunMethod( ^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/apitools/base/py/base_api.py", line 737, in _RunMethod return self.ProcessHttpResponse(method_config, http_response, request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/apitools/base/py/base_api.py", line 743, in ProcessHttpResponse self.__ProcessHttpResponse(method_config, http_response, request)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/bin/../lib/google-cloud-sdk/lib/third_party/apitools/base/py/base_api.py", line 609, in __ProcessHttpResponse raise exceptions.HttpError.FromResponse( apitools.base.py.exceptions.HttpBadRequestError: 访问 <https://sqladmin.googleapis.com/sql/v1beta4/projects/xxx-production/instances/db1-ha?alt=json> 时出现HttpError: 响应: <{'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'content-encoding': 'gzip', 'date': 'Mon, 08 Apr 2024 03:37:27 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'transfer-encoding': 'chunked', 'status': 400}>, 内容 <{ "error": { "code": 400, "message": "请求包含无效参数。", "errors": [ { "message": "请求包含无效参数。", "domain": "global", "reason": "badRequest" } ], "status": "INVALID_ARGUMENT" } } > ERROR: (gcloud.sql.instances.patch) INVALID_ARGUMENT: 请求包含无效参数。
排查与解决建议
- 检查HA实例状态:确认失败的两台实例是否处于健康状态,是否有正在进行的备份、故障转移等操作。HA架构下,从节点可能无法直接执行升级,尝试切换到主节点后重试。
- 验证配置冲突:从debug日志看,请求自动携带了
default_time_zone的数据库标志。对比成功实例的配置,检查是否存在差异;尝试临时移除该标志后执行升级,确认是否是配置冲突导致的参数无效。 - 更新gcloud SDK:旧版本SDK可能存在参数处理bug,执行
gcloud components update升级到最新版本后再试。 - 简化API请求:绕过gcloud CLI,直接调用SQL Admin API发送PATCH请求,仅包含
sqlNetworkArchitecture: "NEW_NETWORK_ARCHITECTURE"参数,排除CLI自动附加的其他配置干扰。 - 确认区域支持:检查Google Cloud状态页,确认目标区域的SQL服务是否存在升级限制或临时故障。
内容的提问来源于stack exchange,提问作者Matt Cook
相关产品推荐
相关产品推荐

