我正在跟进GCP 教程从外部主服务器创建副本实例。Cloud SQL API 已启用,我正在使用控制台中的 Google Shell 运行命令。我还尝试从计算引擎实例使用 gcloud auth login 获取凭据,但遇到了完全相同的问题。
我正在创建内部主控,没有任何问题:
ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"name": "int-clouddb5",
"region": "us-central1-a",
"databaseVersion": "MYSQL_5_5",
"onPremisesConfiguration": {"hostPort": "79.xx.xx.xx:3306"}}' \
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/my-project-222/instances
但是当以这种方式设置副本时:
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"replicaConfiguration":
{"mysqlReplicaConfiguration":
{"username": "xxxx", "password": "xxxxx",
"dumpFilePath": "gs://xxxbucket-data/xxxxmpv2.sql" }},
"settings": {"tier": "D4","activationPolicy": "ALWAYS"},
"databaseVersion": "MYSQL_5_5",
"masterInstanceName": "int-clouddb5", "name": "sla-clouddb3"}' \
-X POST \
https://www.googleapis.com/sql/v1beta4/projects/xxxxxx/instances
我收到以下错误消息:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notAuthorized",
"message": "The client is not authorized to make this request."
}
],
"code": 403,
"message": "The client is not authorized to make this request."
}
}
GCP 支持建议使用 us-central-1a,因为他们在其他地区报告了错误,但这并没有改变任何事情,而且那个人似乎不明白我的请求。有人知道那里出了什么问题吗?
编辑:用于执行所有操作的帐户是所有者帐户,它对所有项目拥有所有权限。
答案1
示例使用$(gcloud auth application-default print-access-token)
获取请求的访问令牌,因此您需要使用gcloud auth application-default login
,而不是gcloud auth login
。您还需要确保您的帐户具有正确的权限配置外部主机。
答案2
到目前为止,答案是 Cloud SQL 外部主复制已损坏。支持团队的建议相当……嗯,我让你判断。
*您好,根据我们后端团队的核实,已经发现了类似的错误,这些问题与外部主复制有关。相关团队已经在处理这个问题,但尚未提供预计解决时间,尽管这个问题已经是高优先级问题。目前,我们建议采用以下解决方法:
a.) 使用mysqldump并暂停一段时间[1]
b.) 使用 GCE 实例进行复制 [2]*
希望对您有所帮助。如果您需要进一步说明,请告诉我。此致,E. Google Cloud Platform 支持