TokuDB存儲引擎


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(內存表)。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM