TokuDB存儲引擎
TokuDB是一個高度可擴展,零維護的停機MySQL存儲引擎,可提供基於索引的查詢加速,改進的復制性能,無與倫比的壓縮和實時架構修改。該TokuDB存儲引擎是一個可擴展的,酸,MVCC兼容的存儲引擎,提供基於索引的查詢改進,可以在線修改架構,減少了從滯后兩個硬盤驅動器和閃存。此存儲引擎專為在寫入密集型工作負載上實現高性能而設計,可通過分形樹索引實現。
安裝:
安裝percona mysql 倉庫
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install Percona-Server-server-57
Percona-Server-tokudb-57-5.7.18-15.1.el6.x86_64
yum install jemalloc
或者二進制包:
wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.18-15/binary/tarball/Percona-Server-5.7.18-15-Linux.x86_64.ssl100.tar.gz
可能會缺少依賴庫文件等:ldd ./mysqld查看一下。如:
ln -s /usr/lib64/libcrypto.so.10 libcrypto.so.1.1
ln -s /usr/lib64/libssl.so.10 libssl.so.1.1
配置項目依賴:
[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1
引擎項啟動
ps_tokudb_admin –enable -uroot -p --socket
輸入Mysql的root帳號密碼,完成啟動。命令字符都是英文輸入法下的短橫杠。
此腳本用於安裝和卸載Percona Server 5.7的TokuDB插件。
安裝后相關需要的目錄:
/usr/bin/jemalloc.sh
/usr/lib64/libjemalloc.so.1
/usr/lib64/mysql/plugin/

啟動:
/usr/local/mysql_5.7/bin/mysqld_safe --defaults-file=/data1/mysql_5.7/my.cnf --user=mysql --disable-partition-engine-check
/usr/local/mysql_5.7/bin/mysqld ...
tokudb參數
tokudb_analyze_delete_fraction 控制在 對TokuDB表執行操作期間是否將分形樹中已刪除的行報告給客戶端和MySQL錯誤日志 、值為0-1.設置為1時表示不報告任何錯誤。0.1表示10%刪除的行尚未進行垃圾回收則報錯到日志中。
tokudb_directio 啟用后,TokuDB使用直接I / O而不是緩沖I / O進行寫入。使用直接I / O時,請考慮
tokudb_cache_size從其默認的1/2物理內存增加。
tokudb_disable_prefetching 預取
tokudb_enable_fast_update tokudb_enable_fast_upsert 快速更新和插入功能。 快速更新涉及查詢優化,以避免在執行期間進行隨機讀取。
tokudb_fs_reserve_percent 此變量控制允許插入必須可用的文件系統的百分比。默認情況下,此設置為5。我們建議此保留至少是物理內存大小的一半。有關詳細信息,請參閱
完整磁盤。
tokudb_hide_default_row_format 是否隱藏show create table 的行壓縮格式 例如 ROW_FORMAT=TOKUDB_ZLIB。
tokudb_max_lock_memory 此變量指定PerconaFT鎖定表的最大內存量。
tokudb_prelock_empty 默認情況下,TokuDB搶占式地搶占空表的整個表鎖。如果一個事務正在進行加載,例如當用戶將表加載到空表中時,此默認值會提供相當大的加速。但是,如果多個事務嘗試對空表執行並發操作,則除了一個事務之外的所有事務都將被鎖定。
tokudb_prelock_empty通過關閉搶占式預鎖定來禁用 此多事務案例的優化。
innodb_use_native_aio 如果使用TokuBackup備份InnoDB表,則必須禁用InnoDB異步IO 。否則,您將擁有不一致,不可恢復的備份。適當的設置是。innodb_use_native_aio=0
tokudb熱備:
1、拷貝libHotBackup.so 到/usr/lib 或/usr/lib64
2、配置文件中添加:
[mysqld_safe]
preload-hotbackup
3、執行
ps_tokudb_admin --enable-backup --host=127.0.0.1 --user=root--password='123456' --port=3306
4、備份相關先選:
tokudb_backup_allowed_prefix 備份目錄前綴
tokudb_backup_dir 在session指定該參數開始備份
innodb_use_native_aio 如果使用TokuBackup備份InnoDB表,則必須禁用InnoDB異步IO 。 否則備份不一致。innodb_use_native_aio=0
tokudb_backup_exclude 正則表達式排除某些文件和目錄
注意:發起備份只備份 tokudb_backup_dir tokudb_log_dir datadir參數指定的目錄。備份結果沒有二進制日志點。需要手動找出。
5、備份:
配置文件:
innodb_use_native_aio = OFF
重啟實例
set tokudb_backup_dir='/data1/backup'; 即開始備份。
6、還原, tokudbback 的還原只是cp 備份結果到 參數指定相應目錄就可以啟動。啟動的時候數據庫自動做tokudb innodb的恢復。
tokudb文件:
tokudb目錄下的文件說明:

tokudb.environment 此文件是Percona FT文件集的根目錄,包含有關系統的各種元數據,例如創建時間,當前文件格式版本等。
tokudb.rollback Percona FT中的每個事務都維護自己的事務回滾日志。這些日志一起存儲在單個Percona FT字典文件中,占用Percona FT緩存表中的空間 類似undo。
tokudb.directory toku文件映射
__tokudb_lock_dont_* 鎖定文件 這些空文件僅用作進程間的信號量。只要當前沒有服務器實例正在運行並使用數據集,就可以安全地刪除/忽略它們。
表文件tablename_*:
tablename_status_xxxx 表元數據文件
tablename_main_xxxx 是表數據主文件
tablename_key_indexname_xxxx 索引文件
啟動的時候,tokudb通過 tokudb.directory 來找到表對應的元數據文件,索引文件,表文件。並寫入到 information_schema.tokudb_file_map(內存表)。