將 MySQL 資料載入 BigQuery

您可以使用 MySQL 適用的 BigQuery 資料移轉服務連接器,將資料從 MySQL 載入至 BigQuery。支援在內部部署環境、Cloud SQL 和其他公用雲端服務供應商 (例如 Amazon Web Services (AWS) 和 Microsoft Azure) 中託管的 MySQL 例項。您可以使用 BigQuery 資料移轉服務,安排週期性轉移工作,將最新資料從 MySQL 新增至 BigQuery。

事前準備

必要的角色

如果您想要為 Pub/Sub 設定移轉執行通知,請確認您具有 pubsub.topics.setIamPolicy 身分與存取權管理 (IAM) 權限。如果您只想設定電子郵件通知,則不需要擁有 Pub/Sub 權限。詳情請參閱「BigQuery 資料移轉服務執行通知」。

如要取得建立 MySQL 資料移轉作業所需的權限,請要求管理員授予您專案的 BigQuery 管理員 (roles/bigquery.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含建立 MySQL 資料移轉所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要建立 MySQL 資料移轉作業,必須具備下列權限:

  • bigquery.transfers.update
  • bigquery.datasets.get

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

網路連線數

如果 MySQL 資料庫連線無法使用公開 IP 位址,您必須設定網路附件

如需有關必要網路設定的詳細操作說明,請參閱下列文件:

限制

MySQL 資料移轉作業有下列限制:

  • 與 MySQL 資料庫同時連線的數量上限取決於 MySQL 設定參數 max_connections。預設值為 151 個連線,但可視需要設定為更高的上限。因此,同時傳送至單一 MySQL 資料庫的次數,會受到該上限限制。這項限制也表示並行轉移作業的數量應限制在 MySQL 資料庫支援的並行連線數量上限以下。
  • 在 MySQL 中,部分資料類型會對應至 BigQuery 中的字串類型,以免資料遺失。舉例來說,在 MySQL 中定義的數值類型,如果沒有定義精確度和小數位數,就會對應至 BigQuery 中的字串類型。

將 MySQL 資料載入 BigQuery

選取下列選項之一:

控制台

  1. 前往「資料移轉」頁面。

    前往「資料移轉」

  2. 按一下 「建立移轉作業」

  3. 在「Source type」(來源類型) 部分,「Source」(來源) 請選取「MySQL」

  4. 在「Transfer config name」(轉移設定名稱) 部分,「Display name」(顯示名稱) 請輸入移轉作業的名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時能夠據此識別。

  5. 在「Schedule options」(排程選項) 部分執行下列操作:

    • 選取重複頻率。如果選取「小時」、「天」(預設)、「週」或「月」選項,則必須一併指定頻率。您也可以選取「Custom」(自訂) 選項,建立更具體的重複頻率。如果選取「On-demand」(隨選)選項,這項資料移轉作業會在您手動觸發後執行。
    • 視情況選取「Start now」(立即開始) 或「Start at set time」(在所設時間開始執行) 選項,並提供開始日期和執行時間。
  6. 在「Destination settings」(目的地設定) 部分,「Dataset」(資料集) 請選取您為了儲存資料而建立的資料集,或是按一下「Create new dataset」(建立新資料集),然後建立一個用來做為目的地資料集的資料集。

  7. 在「Data source details」(資料來源詳細資料) 部分執行下列操作:

    • 在「Network attachment」(網路連結) 部分選取現有的網路連結,或是點選「Create Network Attachment」(建立網路連結)。詳情請參閱本文件的「網路連線」一節。
    • 在「Host」 部分,輸入 MySQL 資料庫伺服器的主機名稱或 IP 位址。
    • 在「Port number」(通訊埠編號) 中,輸入 MySQL 資料庫伺服器的通訊埠編號。
    • 在「Database name」(資料庫名稱) 中輸入 MySQL 資料庫的名稱。
    • 在「Username」(使用者名稱) 部分,輸入啟動 MySQL 資料庫連線的 MySQL 使用者名稱。
    • 在「Password」(密碼) 部分,輸入啟動 MySQL 資料庫連線的 MySQL 使用者密碼。
    • 在「Encryption mode」部分,從選單中選取「Full」,在連線至 MySQL 資料庫時啟用完整 SSL 驗證。如果選取「Disable」,就不會進行 SSL 驗證。
    • 如要轉移 MySQL 物件,請執行下列任一操作:

      • 按一下「瀏覽」,選取轉移作業所需的 MySQL 資料表,然後點選「選取」
      • 在要轉移的 MySQL 物件中,手動輸入資料表名稱。

    「建立移轉」頁面上的資料來源詳細資料

  8. 選用:在「Service account」(服務帳戶) 選單中,指定自訂服務帳戶授權移轉作業。請確認所使用的服務帳戶具備所有必要角色和權限。詳情請參閱「以服務帳戶身分轉移擁有者」一文。

  9. 選用:在「Notification options」(通知選項) 專區,執行下列操作:

    • 如要啟用電子郵件通知,請將「電子郵件通知」切換鈕設為開啟。啟用這個選項之後,若移轉失敗,移轉作業管理員就會收到電子郵件通知。
    • 如要針對移轉作業設定 Pub/Sub 執行通知,請將「Pub/Sub notifications」切換按鈕切換為開啟狀態。您可以選取主題名稱,也可以點選「Create a topic」(建立主題) 來建立主題。
  10. 按一下 [儲存]

bq

輸入 bq mk 指令並提供轉移建立標記 --transfer_config

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

更改下列內容:

  • PROJECT_ID (選用):您的 Google Cloud 專案 ID。如未提供 --project_id 標記指定特定專案,系統會使用預設專案。
  • DATA_SOURCE:資料來源,即 mysql
  • DISPLAY_NAME:資料移轉設定的顯示名稱。移轉作業名稱可以是任意值,日後需要修改移轉作業時能夠據此識別。
  • DATASET:資料移轉設定的目標資料集。
  • PARAMETERS:已建立移轉設定的 JSON 格式參數。例如:--params='{"param":"param_value"}'。以下是 MySQL 轉移作業的參數:

    • networkAttachment (選用):連線至 MySQL 資料庫的網路附件名稱。
    • connector.database:MySQL 資料庫的名稱。
    • connector.endpoint.host:資料庫的主機名稱或 IP 位址。
    • connector.endpoint.port:資料庫的通訊埠號碼。
    • connector.authentication.username:資料庫使用者的使用者名稱。
    • connector.authentication.password:資料庫使用者的密碼。connector.connectionType
    • connector.connectionType (選用):用於判斷連線網址的連線類型。這可以是 SERVICESIDTNS。如未提供,則預設為 SERVICE
    • connector.encryptionMode:加密模式。在連線至 MySQL 資料庫時,可以將此值設為 FULL 以進行完整 SSL 驗證,也可以設為 DISABLE 以停用 SSL 驗證。
    • assets:從 MySQL 資料庫轉移的 MySQL 資料表名稱清單。

舉例來說,下列指令會建立名為 My Transfer 的 MySQL 轉移作業:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=mysql
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.encryptionMode":"FULL",
        "connector.database":"DB1",
        "connector.endpoint.host":"54.74.220.23",
        "connector.endpoint.port":3306}'

API

請使用 projects.locations.transferConfigs.create 方法,並提供 TransferConfig 資源的例項。

資料類型對應

下表列出 MySQL 資料類型與對應的 BigQuery 資料類型對應關係。

MySQL 資料類型 BigQuery 資料類型
BIT BOOLEAN
TINYINT INTEGER
BOOLBOOLEAN BOOLEAN
SMALLINT INTEGER
MEDIUMINT INTEGER
INTINTEGER INTEGER
BIGINT BIGNUMERIC
FLOAT FLOAT
DOUBLE FLOAT
DECIMAL BIGNUMERIC
DATE DATE
DATETIME TIMESTAMP
TIMESTAMP TIMESTAMP
TIME TIME
YEAR DATE
CHAR STRING
VARCHAR STRING
BINARY BYTES
VARBINARY BYTES
TINYBLOB BYTES
TINYTEXT STRING
BLOB BYTES
TEXT STRING
MEDIUMBLOB BYTES
MEDIUMTEXT STRING
LONGBLOB BYTES
LONGTEXT STRING
ENUM STRING
SET STRING

疑難排解

如果您在設定資料移轉作業時遇到問題,請參閱 MySQL 移轉問題

後續步驟