本頁說明如何設定 Google Cloud 專案,為 Dataproc Metastore 受管理遷移作業做好準備。
事前準備
瞭解代管遷移作業的運作方式。
設定或存取下列服務:
- 設定為Spanner 資料庫類型的 Dataproc Metastore。
設定私人 IP 的 MySQL 適用的 Cloud SQL 資料庫執行個體。請確認 Cloud SQL 執行個體符合下列條件:
Cloud SQL 執行個體已設定虛擬私有雲網路,並使用必要子網路。
Cloud SQL 執行個體使用的資料庫結構定義,與 Dataproc Metastore 服務上執行的 Hive Metastore 版本相容 (資料會複製到該服務)。
Cloud SQL 執行個體包含適當的使用者,可在 Datastream 與 Dataproc Metastore 之間,以及 Dataproc Metastore 與 Cloud SQL 之間建立連線。
必要的角色
如要取得建立 Dataproc Metastore 和啟動受管理遷移作業所需的權限,請要求管理員授予您下列 IAM 角色:
-
如要授予所有 Dataproc Metastore 資源的完整存取權,包括設定 IAM 權限:
在 Dataproc Metastore 使用者帳戶或服務帳戶上,指派 Dataproc Metastore 管理員 (
roles/metastore.admin
) 角色。 -
如要授予 Dataproc Metastore 資源的完整控制權:
在 Dataproc Metastore 使用者帳戶或服務帳戶上,指派 Dataproc Metastore 編輯者 (
roles/metastore.editor
) 角色。 -
如要授予啟動遷移作業的權限,請在服務專案中,對 Dataproc Metastore 服務代理程式授予「遷移管理員」 (
roles/metastore.migrationAdmin
) 權限。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
視專案設定授予其他角色
視專案的設定方式而定,您可能需要新增下列其他角色。如要瞭解如何將這些角色授予適當的帳戶,請參閱本頁下方的「必要條件」一節。
- 將網路使用者 (
roles/compute.networkUser
) 角色授予服務專案的 Dataproc Metastore 服務代理人和[Google APIs Service Agent]。 - 將網路管理員 (
roles/compute.networkAdmin
) 角色授予主專案中的 Datastream 服務代理人。
如果 Cloud SQL 執行個體與 Dataproc Metastore 服務專案位於不同專案:
- 在 Cloud SQL 執行個體專案中,將
roles/cloudsql.client
角色和roles/cloudsql.instanceUser
角色授予 Dataproc Metastore 服務代理。
如果 Change-Data-Capture 管道的 Cloud Storage 值區與 Dataproc Metastore 服務專案位於不同專案:
- 請確認 Datastream 服務代理具備寫入 bucket 的必要權限。通常是
roles/storage.objectViewer
、roles/storage.objectCreator
和roles/storage.legacyBucketReader
角色。
代管遷移作業的必要條件
Dataproc Metastore 會使用Proxy 和變更資料擷取管道,協助轉移資料。開始轉移前,請務必瞭解這些限制。
重要字詞
- 服務專案:服務專案是指您建立 Dataproc Metastore 服務的 Google Cloud 專案。
- 主專案:主專案是 Google Cloud 保存共用虛擬私有雲網路的專案。您可以將一或多個服務專案連結至主專案,使用這些共用網路。詳情請參閱「共用虛擬私有雲」。
- 在服務專案中啟用 Datastream API。
將
roles/metastore.migrationAdmin
角色授予服務專案中的 Dataproc Metastore 服務代理人。gcloud projects add-iam-policy-binding SERVICE_PROJECT --role "roles/metastore.migrationAdmin" --member "serviceAccount:service-SERVICE_PROJECT@gcp-sa-metastore.iam.gserviceaccount.com"
新增下列防火牆規則。
在 Dataproc Metastore 與私人 IP Cloud SQL 執行個體之間建立連線。
防火牆規則,允許流量從健康狀態檢查探測器探測器傳送至 SOCKS5 代理伺服器的網路負載平衡器。例如:
gcloud compute firewall-rules create RULE_NAME --direction=INGRESS --priority=1000 --network=CLOUD_SQL_NETWORK--allow=tcp:1080 --source-ranges=35.191.0.0/16,130.211.0.0/22
通訊埠
1080
是 SOCKS5 Proxy 伺服器的執行位置。防火牆規則,允許流量從負載平衡器傳輸至 SOCKS5 Proxy MIG。例如:
gcloud compute firewall-rules create
RULE_NAME --direction=INGRESS --priority=1000 --network=CLOUD_SQL_NETWORK--action=ALLOW --rules=all --source-ranges=PROXY_SUBNET_RANGE 防火牆規則,允許流量從 Private Service Connect 服務連結傳入負載平衡器。例如:
gcloud compute firewall-rules create RULE_NAME --direction=INGRESS --priority=1000 --network=CLOUD_SQL_NETWORK --allow=tcp:1080 --source-ranges=NAT_SUBNET_RANGE
防火牆規則,允許 Datastream 使用
/29
CIDR IP 範圍建立私人 IP 連線。例如:gcloud compute firewall-rules create RULE_NAME --direction=INGRESS --priority=1000 --network=CLOUD_SQL_NETWORK --action=ALLOW --rules=all --source-ranges=CIDR_RANGE
(選用) 將角色新增至共用虛擬私有雲
如果您使用共用虛擬私有雲,請按照下列步驟操作。
如要進一步瞭解共用虛擬私有雲,請參閱「服務專案管理員」。
將
roles/compute.networkUser
角色授予主專案的 Dataproc Metastore 服務代理人和 Google API 服務代理人。gcloud projects add-iam-policy-binding HOST_PROJECT --role "roles/compute.networkUser" --member "serviceAccount:service-SERVICE_ACCOUNT@gcp-sa-metastore.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding HOST_PROJECT --role "roles/compute.networkUser" --member "serviceAccount:SERVICE_PROJECT@cloudservices.gserviceaccount.com"
將
roles/compute.networkAdmin
角色授予主專案的 Datastream 服務代理人。gcloud projects add-iam-policy-binding HOST_PROJECT --role "roles/compute.networkAdmin" --member "serviceAccount:service-SERVICE_PROJECT@gcp-sa-datastream.iam.gserviceaccount.com"
如果無法授予 roles/compute.networkAdmin
角色,請建立自訂角色,並授予共用 VPC 先決條件中列出的權限。
在移轉開始時,您必須具備這些權限,才能在主專案的虛擬私有雲網路與 Datastream 之間建立對等互連。
遷移作業開始後,即可移除這個角色。如果在遷移作業完成前移除角色,Dataproc Metastore 就無法清除對等互連作業。在這種情況下,您必須自行清除工作。