完成了cluster的配置後,
我們打算安裝TokuDB , 此DB engine是大數據的解決方案,
(5.5.34與10.0.6之前,TokuDB需要額外安裝 請參考Enabling TokuDB)
所以安裝直接跳過
啟用toku plugin設定, vi /etc/my.cnf.d/tokudb.cnf
plugin-load-add=ha_tokudb.so
service mysql restart
啟用TokuDB
MariaDB [(none)]> INSTALL SONAME 'ha_tokudb';
但如果沒有停用Transparent Huge Pages時, 啟用tokuDB,會出現以下錯誤
ERROR 1123 (HY000): Can't initialize function 'TokuDB'; Plugin initialization function failed
這時就必須檢查Linux是否有啟用Transparent Huge Pages,
至於為何TokuDB啟用時不能啟用THP,是因為這項功能會導致TokuKV在記憶體的使用追蹤上將導致記憶體的使用過量.
cat /sys/kernel/mm/transparent_hugepage/enabled
回應 always madvise [never] --> 停用 Transparent Hugepages,很明顯這行不會出現的
回應 [always] madvise never --> 啟用 Transparent Hugepages
停用Transparent Huge Pages
新增 vi /etc/default/grub 內容
GRUB_CMDLINE_LINUX_DEFAULT="transparent_hugepage=never"
更新開機套用設定
grub2-mkconfig -o /boot/grub2/grub.cfg "$@"
另一個方式,新增 vi /etc/rc.local 內容 (參考 disable transparent hugepages)
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
如果要runtime生效的話,執行
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag #(這一行似乎不必要,但官網有我放上來)
在Enable TokuDB一次
MariaDB [(none)]> INSTALL SONAME 'ha_tokudb';
Query OK, 0 rows affected (0.14 sec)
檢查一下database engine,如圖都已經Support了
MariaDB [(none)]> show engines;
之後重開會自動enable tokudb了.
建立Tokudb類型的表格試試,大功告成.
最後可以看看innoDB與TokuDB的比較 LinkeBench MySQL
結論就是 TokuDB最適合在節省空間的大量寫入情境下使用.
參考