跳到主要內容 跳至補充內容

MySQL

此區段說明如何使用 MySQL 目標連接器對 MySQL 目標設定連線能力。MySQL 僅可作為複寫任務中的目標資料庫使用。您需要先在資料庫上設定 必要權限,才能連線至 MySQL 目標。若您正透過 資料移動閘道 連線至 MySQL,您也需要按照 驅動程式的設定 中的說明安裝驅動程式。

如需關於使用 MySQL 連接器時的限制和考慮事項的資訊,請參閱 限制和考慮事項

設定連線屬性

本節說明可用的連線屬性。除非另有指明,否則所有屬性皆為必要。

資料目標

  • 資料閘道選取將會用來測試 MySQL 目標連線的 資料移動閘道。其閘道應與用來存取資料來源的閘道相同。

    資訊備註
    • 需要 資料移動閘道 2023.5.10 或更高版本。
    • 您也需要在 資料移動閘道 機器上安裝適當的驅動程式。如需詳細資訊,請參閱以下的 驅動程式的設定

  • 雲端供應商:按適當情況選擇下列項目之一:

    • 適用於 MySQL 內部部署、MariaDB、Amazon Aurora 或 Microsoft Azure Database for MySQL - 彈性伺服器。

    • 適用於 Amazon RDS for MariaDB 或 Amazon RDS for MySQL。

    • 適用於 Google Cloud SQL for MySQL。

    • 適用於 Microsoft Azure Database for MySQL。

  • 伺服器:MySQL 資料庫安裝所在電腦的主機名稱或 IP 位址。

  • 連接埠:連線至資料庫時使用的連接埠。預設值為 3306。

帳戶屬性

使用者名稱密碼: 獲得授權可存取 MySQL 伺服器資料庫的使用者的使用者名稱和密碼。

資料庫屬性

  • 目標資料庫類型:選擇下列項目之一:
    • 特定資料庫:若選取此選項,所有來源結構描述將會載入到指定的資料庫中。
    • 多個資料庫:若選取此選項,每個來源結構描述將會載入到對應的資料庫中。此外,依照預設,所有控制表格將會複寫至新的結構描述,稱為 attrep_control。如需更多關於控制表格的資訊,請參閱 控制表格
  • 最大檔案大小 (KB):請先選取或輸入 CSV 檔案的最大大小 (單位為 KB),再載入到 MySQL 目標資料庫中。預設值為 32000 KB。
  • 平行載入執行緒:增加執行緒數量可能會在將資料載入到 MySQL 目標資料庫時改善效能。請注意,設定大量執行緒可能會對資料庫效能造成負面效果,因為每個執行緒需要獨立連線。

內部屬性

內部屬性用於特殊使用情況,因此不會在對話方塊中顯示。您只能在 Qlik 支援指示下使用。

根據需要使用欄位右側的 新建取消 按鈕以新增或移除屬性。

名稱

連線的顯示名稱。

必要條件

必要權限

必須向連接器設定中指定的使用者授予:

  • MySQL 帳戶存取權限
  • MySQL 資料庫中的讀取/寫入權限
  • 參與複寫的每個目標結構描述的下列權限:
    • 改變
    • 建立
    • 建立臨時表格
    • 刪除
    • 拖曳
    • 插入
    • 選取
    • 更新

驅動程式的設定

此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver

  • 確認 Python 3.6 或更高版本安裝於 資料移動 閘道伺服器。

    Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:

    python3 --version

若要下載並安裝 driver

  1. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  2. 執行下列命令:

    語法:

    ./install mysql

    若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 install mysql 命令。

    否則,就會顯示 driver 的 EULA。

  3. 執行下列其中一個動作:

    • 重複按下 [Enter] 以緩慢瀏覽 EULA。
    • 重複按下空格鍵以快速瀏覽 EULA。
    • 按下 q 以結束授權文字並呈現 EULA 接受選項。
  4. 執行下列其中一個動作:

    • 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
    • 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
    • 輸入「v」並按下 [Enter] 以再次檢視 EULA。

  5. 將會安裝 driver

若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本,請執行更新命令。

若要下載並更新 driver

  1. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  2. 執行下列命令:

    語法:

    ./update mysql

    若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 update mysql 命令。

    否則,就會顯示 driver 的 EULA。

  3. 執行下列其中一個動作:

    • 重複按下 [Enter] 以緩慢瀏覽 EULA。
    • 重複按下空格鍵以快速瀏覽 EULA。
    • 按下 q 以結束授權文字並呈現 EULA 接受選項。
  4. 執行下列其中一個動作:

    • 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
    • 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
    • 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
  5. 將會解除安裝舊版 driver,並安裝新版 driver

若您想要解除安裝 driver,請執行解除安裝命令。

若要解除安裝 driver

  1. 停止設定為使用此連接器的所有任務。

  2. 資料移動 閘道機器上,將工作目錄變更為:

    opt/qlik/gateway/movement/drivers/bin

  3. 執行下列命令:

    語法:

    ./uninstall mysql

    將會解除安裝 driver

手動安裝驅動程式

只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver

安裝 資料移動閘道 後,下載 mysql-connector-odbc-<version>.x86_64.rpm 驅動程式。您可以在 /opt/qlik/gateway/movement/drivers/manifests/mysql.yamlbinary-artifacts 之下找到支援版本的直接下載連結。下載完成後,將 RPM 複製到 資料移動閘道 機器。

資料移動閘道 伺服器上,開啟 shell prompt 並進行以下項目:

  1. 停止 資料移動閘道 服務:

    sudo systemctl stop repagent

  2. 可自選,確認服務已停止:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: inactive (dead) since <timestamp> ago

  3. 將驅動程式安裝在 資料移動閘道 機器。
  4. 變更任務目錄至 <資料移動閘道-Install-Dir>/bin

  5. 複製驅動程式位置至 site_arep_login.sh 檔案:

    echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh

    這將新增驅動程式至「LD_LIBRARY_PATH」並更新位於 site_arep_login.sh 檔案的驅動程式位置。

  6. 可自選,確認已複製驅動程式位置:

    cat site_arep_login.sh
  7. 確定 /etc/odbcinst.ini 檔案含有 MySQL 的項目,如以下範例所示:

    [MySQL ODBC 8.0 Unicode Driver]

    Driver = /usr/lib64/libmyodbc8w.so

    UsageCount = 1

  8. 開始 資料移動閘道 服務:

    sudo systemctl start repagent

  9. 可自行選擇確認服務已開始:

    sudo systemctl status repagent

    狀態應如下所示:

    Active: active (running) since <timestamp> ago

限制和考慮事項

使用 MySQL 作為複寫目標時,下列限制適用:

  • 複寫至 MariaDB 目標資料庫時,若日期時間值設定為零,您需要以有效值定義取代日期時間的轉換。例如︰

    replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')

    資訊備註此限制不適用於 Microsoft Azure Database for MySQL。
  • 由於 MySQL 的操作方式,在完整載入任務期間將資料載入到 MySQL 目標時,不會向記錄報告複製關鍵錯誤。
  • 將欄的值更新為現有的值時,會從 MySQL 傳回受影響的零列 (不同於執行一列更新的 Oracle 和 Microsoft SQL Server)。

    這會在 attrep_apply_exceptions Control Table 產生項目和下列警告:

    Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.

  • 由於 MySQL 5.7 的問題 (已在版本 8.0 解決),當完整載入使用 CSV 檔案時,多位元組字元無法插入文字欄中。結果,若目標端點是 MySQL 5.7,且複寫的表格包含文字欄與 UTF-8 多位元組字元,則目標表格可能是空的。

     

    因應措施:

    連接器設定中,將 loadUsingCSV 內部參數設定為 FALSE。請注意,這可能會影響效能。

  • 若您需要複寫 4 位元組表情圖示字元,目標結構描述字元集合必須設定為 utf8mb4。

資料類型

會保留原生資料類型資訊,並顯示在資料集檢視的原生資料類型欄中。若看不見欄,您需要開啟資料集檢視的欄選擇器並選取原生資料類型欄。

支援的資料類型
Qlik Cloud 資料類型 MySQL 資料類型

BOOL

BOOL

位元組

若長度為 => 1 且 =< 8095,則:

VARBINARY (長度)

若長度為 => 8096 且 =< 65535,則:

BLOB

若長度為 => 65536 且 =< 16777215,則:

MEDIUMBLOB

若長度為 => 16777216 且 =< 2147483647,則:

LONGBLOB

日期

日期

時間

時間

日期時間

若刻度為 => 0 且 =< 6,則:

小數點 (p,s)

若刻度為 => 7 且 =< 12,則:

VARCHAR (37)

INT1

TINYINT

INT2

SMALLINT

INT4

整數

INT8

BIGINT

數字

若刻度為 => 0 且 =< 30,則:

小數點 (p,s)

若刻度為 => 31 且 =< 100,則:

VARCHAR (45)

REAL4

浮動

REAL8

雙重

字串

若長度為 => 1 且 =< 8095,則:

VARCHAR (長度)

若長度為 => 8096 且 =< 65535,則:

文字

若長度為 => 65536 且 =< 16777215,則:

MEDIUMTEXT

若長度為 => 16777216 且 =< 2147483647,則:

LONGTEXT

UINT1

未簽署 TINYINT

UINT2

未簽署 SMALLINT

UINT4

未簽署整數

UINT8

未簽署 BIGINT

WSTRING

若長度為 => 1 且 =< 8095,則:

VARCHAR (長度)

若長度為 => 8096 且 =< 65535,則:

文字

若長度為 => 65536 且 =< 16777215,則:

MEDIUMTEXT

若長度為 => 16777216 且 =< 2147483647,則:

LONGTEXT

BLOB

若啟用允許無限 LOB 大小選項:

  • LONGBLOB

若啟用限制 LOB 大小為選項:

  • 若指定的值為 63 KB 或更小,則:

    BLOB

  • 若指定的值為 64 KB 或更大,則:

    LONGBLOB

如需更多關於限制 LOB 大小的資訊,請參閱 Metadata

NCLOB

若啟用允許無限 LOB 大小選項:

  • 文字

若啟用限制 LOB 大小為選項:

  • 若指定的值為 63 KB 或更小,則:

    文字

  • 若指定的值為 64 KB 或更大,則:

    LONGTEXT

如需更多關於限制 LOB 大小的資訊,請參閱 Metadata

CLOB

若啟用允許無限 LOB 大小選項:

  • 文字字元集 UTF-16

若啟用限制 LOB 大小為選項:

  • 若指定的值為 63 KB 或更小,則:

    文字字元集 UTF-16

  • 若指定的值為 64 KB 或更大,則:

    LONGTEXT 字元集 UTF-16

如需更多關於限制 LOB 大小的資訊,請參閱 Metadata

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!