本文記錄在 CentOS 6.5 環境下,從下載二進制包安裝 Percona Server 5.6.27,到成功啟用 TokuDB 儲存引擎的完整過程,包含依賴解決、配置優化與常見錯誤排查。
參考官方文檔:TokuDB Installation Guide
# 下載二進制壓縮包
wget https://www.percona.com/downloads/Percona-Server-5.6/Percona-Server-5.6.27-75.0/binary/tarball/Percona-Server-5.6.27-rel75.0-Linux.x86_64.ssl101.tar.gz
# 解壓至 /usr/local 並建立軟連結
tar -xzf Percona-Server-5.6.27-rel75.0-Linux.x86_64.ssl101.tar.gz -C /usr/local
ln -s /usr/local/Percona-Server-5.6.27-rel75.0-Linux.x86_64.ssl101 /usr/local/percona
首次啟動報錯:error while loading shared libraries: libnuma.so.1: cannot open shared object file
# 搜尋可用套件
yum search libnuma
# 安裝 numactl
yum install -y numactl
安裝 numactl 後啟動,出現新錯誤:[ERROR] TokuDB is not initialized because jemalloc is not loaded
# 安裝 EPEL 擴展源
rpm -ivh https://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
# 安裝 jemalloc
yum install -y jemalloc
# 查看庫文件具體路徑
rpm -ql jemalloc-3.6.0-1.el6.x86_64
# 輸出關鍵路徑:/usr/lib64/libjemalloc.so.1
# 編輯 /etc/my.cnf
[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1
[mysqld]
plugin-dir = /usr/local/percona/lib/mysql/plugin
plugin-load=ha_tokudb.so
tokudb_row_format = tokudb_fast
tokudb_cache_size = 1G
tokudb_commit_sync = 0
tokudb_directio = 1
tokudb_read_block_size = 128K
tokudb_read_buf_size = 128K
# 將 TokuDB 數據與日誌目錄與 MySQL 主數據目錄分離
tokudb-data-dir = /data/mysql/tokudb/data
tokudb-log-dir = /data/mysql/tokudb/log
TokuDB 要求關閉 THP,否則性能會嚴重下降。
# 編輯 /etc/rc.local,使開機生效
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 立即手動執行上述兩條命令使當前生效
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 啟動 MySQL 服務
/etc/init.d/mysql start
# 進入 bin 目錄執行安裝腳本
cd /usr/local/percona/bin
./ps_tokudb_admin --enable -uroot -pPassw0rd
執行安裝腳本時可能報錯:mysql: error while loading shared libraries: libreadline.so.5
# 檢查依賴
ldd /usr/local/percona/bin/mysql
# 安裝兼容包
yum install -y compat-readline5-devel
mysql> SHOW ENGINES;
+--------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------+---------+------------------------------------------------------------+--------------+------+------------+
| TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |
+--------+---------+------------------------------------------------------------+--------------+------+------------+
看到 Support 為 YES 即表示 TokuDB 已成功載入並可用。