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/
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
啓動:
/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熱備:
一、拷貝libHotBackup.so 到/usr/lib 或/usr/lib64
二、配置文件中添加:
[mysqld_safe]
preload-hotbackup
三、執行
ps_tokudb_admin --enable-backup --host=127.0.0.1 --user=root--password='123456' --port=3306
四、備份相關先選:
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參數指定的目錄。備份結果沒有二進制日誌點。須要手動找出。
五、備份:
配置文件:
innodb_use_native_aio = OFF
重啓實例
set tokudb_backup_dir='/data1/backup'; 即開始備份。
六、還原, tokudbback 的還原只是cp 備份結果到 參數指定相應目錄就能夠啓動。啓動的時候數據庫自動作tokudb innodb的恢復。
tokudb文件:
tokudb目錄下的文件說明:
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
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(內存表)。
原文地址:https://www.cnblogs.com/vansky/p/9729938.html