MySQL
此主題說明如何使用 MySQL 目標連接器對 MySQL 目標設定連線能力。MySQL 僅可作為複寫任務中的目標資料庫使用。您需要先在資料庫上設定 必要權限,才能連線至 MySQL 目標。若您正透過 資料移動閘道 連線至 MySQL,您也需要按照 驅動程式的設定 中的說明安裝驅動程式。
如需關於使用 MySQL 連接器時的限制和考慮事項的資訊,請參閱 限制和考慮事項。
設定連線屬性
若要設定連接器,進行下列事項:
-
在連線中,按一下建立連線。
-
選取 MySQL 目標連接器,然後提供下列設定:
資料目標
-
資料閘道:使用 資料移動閘道 時,選取將會用來測試 MySQL 目標連線的資料閘道。其閘道應與用來存取資料來源的閘道相同。
資訊備註- 此欄位無法用於 Qlik Talend Cloud 啟動器 訂閱,因為此訂閱層級不支援 資料移動閘道。
-
您也需要在 資料移動閘道 機器上安裝適當的驅動程式。如需詳細資訊,請參閱以下的 驅動程式的設定。
-
雲端提供者:在適當時選擇以下項目之一:
-
無
- 適用於 MySQL 內部部署、MariaDB、Amazon Aurora 或 Microsoft Azure Database for MySQL - 彈性伺服器。
- 在沒有 資料移動閘道 的情況下運作時
-
Amazon RDS
適用於 Amazon RDS for MariaDB 或 Amazon RDS for MySQL。
-
Google Cloud
適用於 Google Cloud SQL for MySQL。
-
Microsoft Azure
適用於 Microsoft Azure Database for MySQL。
-
-
伺服器:MySQL 資料庫安裝所在電腦的主機名稱或 IP 位址。
-
連接埠:連線至資料庫時使用的連接埠。預設值為 3306。
帳戶屬性
使用者名稱和密碼:獲得授權可存取 MySQL Server 資料庫的使用者的使用者名稱和密碼。
資料庫屬性
- 目標資料庫類型:選擇下列項目之一:
- 特定資料庫:若選取此選項,所有來源結構描述將會載入到指定的資料庫中。
- 多個資料庫:若選取此選項,每個來源結構描述將會載入到對應的資料庫中。此外,依照預設,所有控制表格將會複寫至新的結構描述,稱為 attrep_control。如需更多關於控制表格的資訊,請參閱 控制表格。
- 最大檔案大小 (KB):請先選取或輸入 CSV 檔案的最大大小 (單位為 KB),再載入到 MySQL 目標資料庫中。預設值為 32000 KB。
- 平行載入執行緒:增加執行緒數量可能會在將資料載入到 MySQL 目標資料庫時改善效能。請注意,設定大量執行緒可能會對資料庫效能造成負面效果,因為每個執行緒需要獨立連線。
內部屬性
內部屬性用於特殊使用情況,因此不會在對話方塊中顯示。您只能在 Qlik 支援指示下使用。
根據需要使用欄位右側的 和 按鈕以新增或移除屬性。
名稱
連線的顯示名稱。
必要條件
必要權限
必須向連接器設定中指定的使用者授予:
- MySQL 帳戶存取權限
- MySQL 資料庫中的讀取/寫入權限
- 參與複寫的每個目標結構描述的下列權限:
- 改變
- 建立
- 建立臨時表格
- 刪除
- 拖曳
- 插入
- 選取
- 更新
驅動程式的設定
此區段描述如何安裝所需的 driver。該流程涉及執行將會自動下載、安裝並設定所需 driver 的指令碼。您也可以執行指令碼,以根據需求更新並解除安裝 driver。
準備安裝
-
確認 Python 3.6 或更高版本安裝於 資料移動 閘道伺服器。
Python 會預先安裝在大部分的 Linux 發行版。您可以執行下列命令,以查看哪個 Python 版本安裝在您的系統上:
python3 --version
安裝 driver
若要下載並安裝 driver:
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./install mysql
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 install mysql 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
-
輸入「v」並按下 [Enter] 以再次檢視 EULA。
將會安裝 driver。
更新 driver
若您想要在安裝提供的 driver 之前解除安裝先前的 driver 版本,請執行更新命令。
若要下載並更新 driver:
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./update mysql
若無法下載 driver (由於存取限制或技術問題),將會顯示訊息,指示您到哪裡下載 driver 以及在 資料移動 閘道機器上的何處複製。完成後,再次執行 update mysql 命令。
否則,就會顯示 driver 的 EULA。
-
執行下列其中一個動作:
- 重複按下 [Enter] 以緩慢瀏覽 EULA。
- 重複按下空格鍵以快速瀏覽 EULA。
- 按下 q 以結束授權文字並呈現 EULA 接受選項。
-
執行下列其中一個動作:
- 輸入「y」並按下 [Enter] 以接受 EULA 並開始安裝。
- 輸入「n」並按下 [Enter] 以拒絕 EULA 並退出安裝。
- 輸入「v」並按下 [Enter] 以從頭檢閱 EULA。
將會解除安裝舊版 driver,並安裝新版 driver。
解除安裝 driver
若您想要解除安裝 driver,請執行解除安裝命令。
若要解除安裝 driver:
-
停止設定為使用此連接器的所有任務。
-
在 資料移動 閘道機器上,將工作目錄變更為:
opt/qlik/gateway/movement/drivers/bin
-
執行下列命令:
語法:
./uninstall mysql
將會解除安裝 driver。
手動安裝驅動程式
只有在自動驅動程式安裝無法成功完成時,才能嘗試手動安裝 driver。
安裝 資料移動閘道 後,下載 mysql-connector-odbc-<version>.x86_64.rpm 驅動程式。您可以在 /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml 的 binary-artifacts 之下找到支援版本的直接下載連結。下載完成後,將 RPM 複製到 資料移動閘道 機器。
在 Data Movement gateway 伺服器上,開啟 shell prompt 並進行以下項目:
-
停止 Data Movement gateway 服務:
sudo systemctl stop repagent
-
可自選,確認服務已停止:
sudo systemctl status repagent
狀態應如下所示:
Active: inactive (dead) since <timestamp> ago
- 將驅動程式安裝在 Data Movement gateway 機器。
-
變更任務目錄至 <Data Movement gateway-Install-Dir>/bin。
-
複製驅動程式位置至 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 檔案的驅動程式位置。
-
可自選,確認已複製驅動程式位置:
cat site_arep_login.sh
-
確定 /etc/odbcinst.ini 檔案含有 MySQL 的項目,如以下範例所示:
[MySQL ODBC 8.0 Unicode Driver]
Driver = /usr/lib64/libmyodbc8w.so
UsageCount = 1
-
開始 Data Movement gateway 服務:
sudo systemctl start repagent
-
可自行選擇確認服務已開始:
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 大小選項:
若啟用限制 LOB 大小為選項:
如需更多關於限制 LOB 大小的資訊,請參閱 Metadata。 |
NCLOB |
若啟用允許無限 LOB 大小選項:
若啟用限制 LOB 大小為選項:
如需更多關於限制 LOB 大小的資訊,請參閱 Metadata。 |
CLOB |
若啟用允許無限 LOB 大小選項:
若啟用限制 LOB 大小為選項:
如需更多關於限制 LOB 大小的資訊,請參閱 Metadata。 |