開始使用 OCI 上的 MySQL HeatWave

如果您在 MySQL 中執行混合式交易和分析工作負載,或是將資料搬移至個別資料庫進行分析,MySQL HeatWave 就十分合理。HeatWave (內建的高效能記憶體內查詢加速器) 可加速分析和混合工作負載的 MySQL 效能,而不會對目前的應用程式進行任何變更,而不是建立複雜的 ETL 管線來移動資料。此服務建立在 MySQL Enterprise Edition 上,可讓開發人員使用全球最受歡迎的開源資料庫快速建立及部署安全的雲端原生應用程式。

Oracle 設計了 MySQL HeatWave,因此開發人員可以專注於其應用程式。您無需管理 OLTP 和 OLAP 的兩個資料庫,即可獲得即時、安全的分析,而無需 ETL 複製的複雜性、延遲和成本。MySQL HeatWave 是一項完全託管的服務自動化作業,例如備份、復原以及資料庫和作業系統修正。「不用擔心,再多碎,」我們說!MySQL HeatWave 是由 Oracle 的 MySQL 開發團隊開發並支援。

若要開始使用 OCI,我們將建立一個 VCN、部署 MySQL 資料庫系統並建立 HeatWave 叢集、提取部分資料並進行分析。正在尋找開始使用 MySQL HeatWave on AWS 。這將告訴您如何在多雲端情境中運用 MySQL HeatWave。有什麼時間可以活著!

由於我們剛開始使用,因此我們從一開始就開始建立具備適當存取權的 VCN,然後瞭解如何在 OCI 中建立 HeatWave 叢集。

先決條件

  • OCI 帳戶和 Oracle Cloud 帳戶名稱
  • 管理員存取權限
  • 相容的瀏覽器 (Chrome 69+、Safari 12.1+、Firefox 62+ 或任何 Oracle Jet 核准的瀏覽器)

概觀

  1. 建立 VCN 並設定資料庫存取
  2. 建立使用者和群組 (如果您尚未建立)
  3. 建立與 HeatWave 相容資源配置的資料庫系統
  4. 連線至 Cloud Shell 並使用 MySQL Shell
  5. 匯入範例資料
  6. 新增 HeatWave 叢集
  7. 執行查詢!

在我們的範例中,我們使用簡化的方法來設定使用 HeatWave 的項目。

現在開始使用基本知識!

建立 VCN 並設定資料庫存取

選單:首頁 > 網路 > 虛擬雲端網路

使用「虛擬雲端網路」>「啟動 VCN 精靈」>「建立具備網際網路連線的 VCN」,建立 VCN 和子網路。當然,您也可以取得專用子網路。

VCN 精靈的螢幕擷取畫面

方便的精靈會逐步引導您為系統建立網路環境,不過有許多方法可以設定此設定,讓我們不會分心。請注意,我選擇了稍早設定的區間 my_heatwave_testing – 這很重要!

VCN 組態的螢幕擷取畫面

現在,讓我們設定 VCN 的安全清單,以允許通過 MySQL Database 服務連接埠的流量。按一下所建立 VCN 的專用子網路,然後按一下其安全清單。

安全清單的螢幕擷取畫面

現在按一下「Add Security (新增安全)」清單。

我們將新增一些必要的傳入規則,以啟用正確的連接埠 3306 和 33060。詳情如下:



Source CIDR: 0.0.0.0/0
Destination Port Range: 3306,33060
Description: MySQL Port

然後按一下「新增傳入規則」。

輸入規則的螢幕擷取畫面

展望未來!

建立使用者和群組 (如果您尚未建立)

如果您已經是管理員,可以跳至下一步,但如果您要將使用者新增至 OCI 租用戶,而這可能需要存取才能管理資料庫系統,就可以了。即使在「簡化」範例中,我們仍需要設定權限並限制存取,但您可以在此閱讀所有關於管理群組的資訊。我們通常會建立一個群組、建立原則,然後將使用者新增至群組。

讓我們與 Identity and Security 選項建立朋友。

為您的使用者建立群組;在我的範例中,我建立了名為 MySQL 管理員的群組。

將使用者新增至群組。在我們的範例中,我們將自己加入這個群組。

當然,針對群組,您將先建立所需的所有使用者,將這些使用者新增至需要您決定之層級存取的群組中,並放心,您可以設定適當的存取控制。

我們允許透過設定原則來存取,允許一個群組具有完整存取權 (管理員),以及具有有限存取權的群組 (例如資料庫使用者)。

原則範例:



Allow group MySQLAdmins to {SUBNET_READ, SUBNET_ATTACH, SUBNET_DETACH, VCN_READ, COMPARTMENT_INSPECT} in tenancy
Allow group MySQLAdmins to manage mysql-family in tenancy
Allow group MySQLAdmins to use tag-namespaces in tenancy

這只是讓您能夠設定及管理我們的區間,並且定義套用至資料庫執行處理的存取權範圍。

如需有關在 OCI 中新增使用者和設定原則的詳細資訊,請參閱此文件

建立與 HeatWave 相容資源配置的資料庫系統

功能表 > 資料庫 > 資料庫系統

建立資料庫系統

請注意,如果您尚未設定使用者、VCN 等等,系統會向您發出警告。太棒了。別忘了檢查將在左側清單範圍底下建立此區間的區間。按一下「建立資料庫系統 (Create DB System)」。

資料庫系統資訊的螢幕擷取畫面

請檢查區間,指定一個名稱,然後選取 HeatWave (當然)。

建立管理員證明資料的螢幕擷取畫面

您將建立管理登入資訊,請務必將那些帳號保存在安全的地方。

在設定網路時,您將使用先前建立的虛擬雲端網路,但我們會使用專用子網路。離開預設可用性網域並前往設定硬體。

設定位置的螢幕擷取畫面

確認在「設定硬體」區段中,選取的資源配置為 MySQL。HeatWave。VM.Standard。

此外:

  • CPU 核心數目:16
  • 記憶體大小:512 GB
  • 資料儲存大小:1024
設定硬體的螢幕擷取畫面

在「設定備份 (Configure Backup)」區段中,您可以保留七天的預設備份時段。

設定備份計畫的螢幕擷取畫面

保留捲動,然後按一下 [Show Advanced Options] (顯示進階選項)。

移至「網路」頁籤的「主機名稱」欄位中,輸入與資料庫系統完全相同的名稱。這可讓您的叢集在 DNS 註冊,並允許您透過完整網域名稱 (FQDN) 存取主機。

設定網路的螢幕擷取畫面

確定連接埠組態對應下列項目:

  • MySQL 連接埠:3306
  • MySQL X 通訊協定連接埠:33060

在此範例中,我們將使用儲存在 Object Storage 貯體中的資料在建立資源時自動匯入資料,該資料可透過預先驗證請求 (PAR) 提供。

資料匯入的螢幕擷取畫面

如果您想要使用 MySQL Shell 載入資料,可以略過此步驟。

選取「資料匯入」頁籤。系統會提示您在此處貼上 PAR 的 URL。物件 PAR URL 必須是可使用 MySQL Shell 傾印 utilityHere 的 ociParaMifest 選項建立的資訊清單檔案。您也可以使用物件儲存的儲存桶 PAR 或前置碼為 PAR 的物件。

以下是您可用來匯入 Airport-DB 以供試用用的範例連結。



https://objectstorage.us-ashburn-1.oraclecloud.com/p/zRBSs7nKURyZRcIoV4QlYhascC5gkZcJeQoBS8c2ssyEPID3PSDAnh73OMClQQH4/n/idazzjlcjqzj/b/airportdb-bucket-10282022/o/airportdb/@.manifest.json

所有集合 ... 按一下「建立」!

這一次會出現黃色的十六角形,最終會變成綠色,您的資料庫系統將會啟動並在執行中。做一些茶或拿一杯水,你做了很多事。

連線並使用 MySQL Shell

讓我們使用方便的 Cloud Shell 連線至 MySQL 和 MySQL Shell。它是一些內嵌在 OCI 儀表板中的 Linux 終端機 (而且非常適合)。在右上角,按一下 Cloud Shell 提示符號圖示,命令行將會在瀏覽器底部開啟。請務必為您的 Cloud Shell 設定專用網路設定,選取先前建立的 VCN。

mysql shell 的螢幕擷取畫面
mysql Shell 專用網路設定的螢幕擷取畫面

很酷的事情是,已經安裝 MySQL Shell!

建立 HeatWave 相容資料庫系統之後,我們將使用 MySQL Shell 連線。

mysqlsh --host  -u  -p

您可以進一步瞭解 MySQL Shell

進一步瞭解連線資料庫系統

匯入資料

如果您選擇在建立資源時使用 PAR 選項匯入資料,則可以略過此步驟。否則,您可以繼續前往匯入 AirportDB (PDF)

在 Cloud Shell 中:



wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz

這會建立一個名為 airport-db 的單一目錄,其中包含資料檔。

啟動 MySQL shell 並連線至 MySQL 資料庫系統端點:

mysqlsh _Username@DBSystem_IP_Address_or_host_Name

系統出現提示時,請輸入您先前指定的管理員密碼。連線之後,您將使用「傾印載入公用程式」來匯入資料。

MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})

匯入作業需要幾分鐘的時間,您就可以開始進行!

新增 HeatWave 叢集

HeatWave 是專為需要快速分析的大數據集所設計,因此即使我正在匯入僅有的範例資料庫,您還是可以隨意載入 (前提是您已為其配置儲存)。此外,也可以在叢集中執行查詢,無須卸載至個別的資料庫。建立叢集可能需要幾分鐘的時間。

若要開始使用,請前往 OCI 主控台:資料庫 > 資料庫系統 > 中的資料庫系統,然後按一下最近建立的資料庫系統。

在「資源」下,您會看到 HeatWave (以及其他方便的項目),按一下該項目。

資源頁籤的螢幕擷取畫面

當然,您要新增 HeatWave 叢集 (使用右側的按鈕,在頁面中間向下),或按一下上方的「其他動作」功能表,然後選取「新增 Heatwave 叢集」。接受預設值 (具有 512GB RAM 和 1 個節點的 16 個 CPU 核心),然後按一下按鈕以新增 HeatWave 叢集。

新增叢集的螢幕擷取畫面
設定熱波叢集的螢幕擷取畫面

這需要幾分鐘的時間,以便您可以在叢集啟動時重新加熱飲料。

將資料載入 HeatWave 並執行查詢

最後,好玩的零件!HeatWave 叢集執行之後:

  1. 啟動 MySQL Shell 並連線至 MySQL 資料庫系統的端點:
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. 將 MySQL Shell 執行模式變更為 SQL:
    MySQL>JS> \sql
  3. 切換到 airportdb 資料庫 :
    
    
    MySQL>SQL> USE airportdb;  
    Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.`
  4. 將資料從 MySQL InnoDB 載入至 HeatWave
    MySQL>SQL> call sys.heatwave_load(JSON_ARRAY(“airportdb”), NULL);
  5. 使用 EXPLAIN 來驗證查詢是否可以卸載至 HeatWave 叢集:
    mysql 查詢 1 的螢幕擷取畫面
    注意:如果可以卸載查詢,EXPLAIN 輸出中的「額外」資料欄會報告「使用次要引擎 RAPID」。
  6. 檢查查詢是否可以卸載之後,執行查詢並記下執行時間。
    mysql 查詢 2 的螢幕擷取畫面

現在,讓我們看看使用 "plain vanilla" MySQL 資料庫系統需要多久時間。若要這樣做,請停用 use_secondary_engine 變數

mysql 查詢 3 的螢幕擷取畫面

摘要

到目前為止,我們所做的一切都是在 OCI 上設定一個虛擬雲端網路,其中包含用於 MySQL 使用的連接埠、設定 MySQL 資料庫,以及新增 HeatWave 叢集。接著,我們匯入了一些測試資料,並執行幾項查詢,以便單獨查看 HeatWave 與資料庫系統的速度。

想要深入瞭解嗎?加入我們 public Slack 頻道的討論!