首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

TokuDB 存儲引擎安裝全攻略:從依賴庫到插件啟用

     編輯:MySQL 綜合教學

什麼是 TokuDB?

TokuDB 是 Tokutek 公司開發的基於 Fractal Tree Index(分形樹索引) 的高性能存儲引擎,現已併入 Percona Server。其核心優勢在於:

  • 寫入性能比 InnoDB 提升 20~80 倍
  • 數據壓縮比高,大幅減少存儲空間
  • 支持 TB 級數據量 且無索引碎片
  • 支持 Online Schema Change(熱加列、熱建索引、MVCC)

適用場景與避坑指南

性能對比參考:Percona 官方壓測報告

安裝前提:Percona Server 5.6.31-77.0

本文基於 Percona Server 二進制版安裝,社區版 MySQL 5.6/5.7 不支持 直接加載 TokuDB 插件。

步驟 1:安裝 jemalloc 內存分配庫

TokuDB 依賴 jemalloc,缺失會報 TokuDB is not initialized because jemalloc is not loaded。

# CentOS 6/7
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -ivh epel-release-latest-6.noarch.rpm
yum install jemalloc -y

驗證安裝:

rpm -qa | grep jemalloc
# 輸出:jemalloc-3.6.0-1.el6.x86_64

rpm -ql jemalloc-3.6.0-1.el6.x86_64
# 關鍵文件:/usr/lib64/libjemalloc.so.1

步驟 2:修改 my.cnf 預載入 jemalloc

在 [mysqld_safe] 區段添加:

[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1

重啟 mysqld_safe,日誌應顯示:

mysqld_safe Adding '/usr/lib64/libjemalloc.so.1' to LD_PRELOAD for mysqld

步驟 3:禁用 Transparent Huge Pages (THP)

THP 啟用會導致 TokuDB 初始化失敗,錯誤日誌會打印大量 ASCII 藝術字警告。

檢查狀態:

cat /sys/kernel/mm/transparent_hugepage/enabled
# [always] madvise never  →  always 表示已啟用

臨時禁用(重啟失效):

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

永久生效:加入 /etc/rc.local 或配置 kernel/mm/transparent_hugepage=never 內核參數。

步驟 4:手動安裝 TokuDB 插件

登入 MySQL 客戶端,依次執行:

INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_background_job_status SONAME 'ha_tokudb.so';

驗證安裝:

SHOW ENGINES;
# 應看到 TokuDB | YES | Percona TokuDB Storage Engine...

SHOW PLUGINS;
# 應列出 8 個 ACTIVE 的 TokuDB 相關插件

建表測試:

CREATE TABLE test.test(id INT) ENGINE=tokudb;
# Query OK

步驟 5:使用官方腳本 ps_tokudb_admin 自動化安裝(推薦)

Percona 5.6.22+ 內建此腳本,位於 bin/ 目錄,可自動禁用 THP、加載插件、修改配置。

./ps_tokudb_admin --enable --host=127.0.0.1 --port=3306 --user=root -p

執行過程會檢查 SELinux、jemalloc、THP 狀態並自動修正。

版本兼容性說明

  • TokuDB 7.5.7 以插件形式內置於 Percona Server 二進制包中。
  • 無法在社區版 MySQL 5.6/5.7 中直接使用,因 Tokutek 修改了 MySQL 源碼核心部分。
  • 若需新版 MySQL + TokuDB,只能使用 Percona Server。

官方說明:Tokutek made some changes to the MySQL source that are required to either fix bugs or aid in performance, so if you are compiling from source you must use the Tokutek version of MySQL that is based on the MySQL 5.5.30 source.

參考資源

  1. Fractal Tree 索引原理
  2. TokuDB 實戰案例
  3. 高擴展存儲引擎 TokuDB 深度解析

總結

  1. 安裝 jemalloc 並配置 malloc-lib 預載入。
  2. 禁用 THP(關鍵步驟,否則插件初始化失敗)。
  3. 手動 INSTALL PLUGIN 或使用 ps_tokudb_admin --enable 一鍵部署。
  4. 驗證 SHOW ENGINES 顯示 TokuDB 為 YES,建表測試無報錯即成功。
  5. 記住:生產環境請使用 Percona Server,不要嘗試在社區版上強行加載。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景建議理由
存儲 BLOB/大文本❌ 不推薦TokuDB 限制行大小,不適合大對象
記錄數超億級✅ 強烈推薦分形樹索引極適合海量數據
高頻 UPDATE 操作❌ 不推薦更新性能不如 InnoDB
歸檔/歷史數據✅ 推薦高壓縮、低存儲成本
需縮減存儲空間✅ 推薦壓縮率通常達 70%~90%