若您是同時管理 MySQL 與 IBM DB2 Express-C 的 DBA,需理解這兩種資料庫伺服器的功能差異。本文為系列第 4 篇,幫助具 MySQL 背景的 DBA 學習管理 DB2 Express。重點討論兩種產品中資料遷移技術差異,包含 Import、Export、Load 及專門資料遷移工具。
2006 年 7 月 28 日,IBM 發布 DB2 for Linux, UNIX, Windows 新版本,提供首個支援原生 XML 儲存的工業級資料服務器,壓縮、安全與自治功能也獲改進。DB2 Express-C 9 特性包含 PureXML™,確保企業能原生利用 XML 功能,無需將文件儲存於大物件 (LOB) 或分解成物件。但 DB2 Express-C 不包含其他 DB2 9 版本的某些特性:Replication(支援同質複寫)、資料庫分區、Connection Concentrator、DB2 Geodetic Extender、Query Patroller、Net Search Extender、Compression、LBAC 等。DB2 Express-C 9 為「免費開發、免費部署、免費發布」。從 8 到 9 版有許多改進,但資料遷移特性大體保持不變。本文概述 DB2 Express-C 9.1 資料遷移特性,並對比 MySQL 功能。
MySQL 提供的資料遷移工具主要有 mysqldump 和 mysqlhotcopy。雖主要用於備份恢復,但可建立現有表或整個資料庫副本,從而將資料從一個資料庫(常為中小規模)遷移至同一或不同伺服器的另一資料庫。選擇哪個工具取決於資料庫規模、設置成本、鎖機制、恢復選項、表類型等。本文僅關注這兩工具,其他方法(作業系統級複寫、SELECT ... INTO OUTFILE、mysqlsnapshot、InnoDB 熱備份)超出範圍。
建立整個資料庫副本常用命令:
mysqldump --opt db_name > backup-file.sql
導入方法:
mysql db_name < backup-file.sql
mysqldump 重要選項(完整列表請執行 mysqldump -?):
-A, --all-databases:導出所有資料庫--add-drop-table:每個 CREATE 前加 DROP TABLE--add-locks:INSERT 語句前後加鎖-e, --extended-insert:使用更快的 INSERT 語法--single-transaction:單一交易導出所有表(僅支援多版本儲存引擎如 InnoDB)-T, --tab=name:為每個表建立分隔文字檔(需與 mysqld 同機器)-X, --xml:以 XML 格式導出mysqlhotcopy 能力較強,但靈活性不如 mysqldump,且只能在資料庫目錄所在機器上運行。
DB2 提供 IMPORT 與 LOAD 兩種導入工具。IMPORT 透過 SQL INSERT 陳述式將資料插入表,速度較慢但支援觸發器、約束、日誌記錄;LOAD 直接將格式化資料頁面寫入表空間,速度極快但不觸發觸發器、略過某些約束檢查,且預設不記錄日誌(可選擇記錄)。兩者皆支援多種檔案格式(DEL、ASC、WSF、IXF 等)。
EXPORT 工具將表資料導出至檔案,支援相同檔案格式。可指定導出特定欄位、使用 WHERE 條件過濾資料。
db2move:用於在資料庫間移動大量表,自動產生 EXPORT/IMPORT/LOAD 命令腳本。db2look:提取資料庫物件定義(DDL),包含表、索引、視圖、觸發器等。Data Studio / IBM Data Server Manager:圖形化介面工具,支援資料遷移、Schema 比對、效能調優。MySQL 依賴 mysqldump/mysqlhotcopy 進行邏輯備份遷移,適合中小資料量;DB2 提供 IMPORT/LOAD 區分邏輯與物理導入,配合 db2move、db2look 等工具,更適合大規模、高效能遷移場景。選擇工具時需考慮資料量、停機時間容忍度、觸發器/約束處理需求等因素。