《MySQL_第三方數據庫引擎 tokudb》要點:
本文介紹了MySQL_第三方數據庫引擎 tokudb,希望對您有用。如果有疑問,可以聯系我們。
特性:高壓縮,可支持多個湊集索引,支持ACID、MVCC,使用 Fractal Tree 索引
長處:
fractal tree 可以再了解下,對隨機IO有非常年夜的改善作用
fractal tree 可以快速插入及刪除,在隨機IO方面的性能比 B-tree的性能更優
高壓縮,官網給出最年夜25倍
對數據及索引進行壓縮,根據數據的可壓縮性,官網給出的最年夜壓縮比是 25 倍
在線索引創立,創立期間,insert delete的DML支持,update呢 ?
在線列增加刪除重定名,修改期間,insert delete的DML支持,update呢 ?
在線備份
多個湊集索引
無io讀復制
TokuDB slave可以配置,讓來自master改動可以最小化.通過記錄fractal tree索引:
Insert/update/delete操作可以控制撤消read-modify-write的行為,然后注入消息到合適的fractal tree.
Update/delete操作可以配置取消必要io的一致性檢查.
為了使用使用無io讀復制,服務必要配置:
在replication master:
設置為binlog行模式:BINLOG_FORMAT=ROW
在replication slave:
Slave必需為只讀:read_only=1
撤消一致性檢查:tokudb_rpl_unique_checks=0
封閉查找(read-modify-write) :tokudb_rpl_lookup_rows=0
可以在一個或者多個slave上配置.只要master使用了基于行的復制,優化在tokudb slave就可用.也便是說如果master使用innodb或者myisam表也是可用的.
無損化,少碎片
4Mb為單元進行存儲
快速恢復
恢復時長少于1min
2.1 percona mysql安裝
2.2 安裝 jemalloc,管理內存
https://github.com/jemalloc/jemalloc/releases 找個最新版本安裝就可以了
解壓過程中如果報錯如下,請安裝 bzip2 包 :yum install -y bzip2
安裝成功后,在數據庫配置文件中的mysqld_safe模塊,添加引用libjemalloc.so,記得必要先找下這個文件的實際位置,然后cp或者ls一份到/usr/lib64目錄下.
在數據庫配置文件中添加引用
注意,數據庫關閉后,必要用mysqld_safe啟動服務,使用 jemalloc 管理內存.
2.3 改動transparent_hugepage
tokudb引擎必要啟動透明大頁,更好的提供內存管理.
必要修改為never,如果不修改,使用tokudb引擎的時候,會在error.log中報錯
配置如下:
2.4 安裝tokudb引擎跟percona client
官網下載后安裝.
2.5 啟用tokudb存儲引擎
安裝tokudb引擎后,會提示啟動指令語法如下:
使用 ps_tokudb_admin指令 :
ps_tokudb_admin --enable -uroot -p --sock=/tmp/pmysql.sock --defaults-file=/data/mysql/mysql3306.cnf
如果正常,則是以下顯示,不正常的話,看下前面的安裝步調是不是少了
安裝生產后,可以在
TokuDB Version
3.1 安裝tokudb引擎后的新增文件
在數據目錄中,新增了8個文件
tokudb.environment:tokudb贏取的環境變量存儲文件,像創立時間、當前版本號
tokudb.rollback:每一個tokudb的事務,都有本身的回滾日志,具體回滾日志分配相關信息記錄在這里
tokudb.directory:映射文件夾的名字
3.2 tokudb文件管理
可以統一把tokudb的數據文件存儲在某個文件夾下,參數是 tokudb_data_dir
可以統一把tokudb的臨時文件存儲在某個文件夾下,參數是 tokudb_tmp_dir
可以統一把tokudb的日志文件存儲在某個文件夾下,參數是 tokudb_log_dir
如何遷移:
SELECT dictionary_name, internal_file_name FROM INFORMATION_SCHEMA.TokuDB_file_map;
移動 *.tokudb 文件 跟 __tokudb_lock_dont_delete_me_data 到新的存儲目錄
移動 __tokudb_lock_dont_delete_me_temp 到新的 存儲目錄
移動 到新的 log*.tokulog* files and your __tokudb_lock_dont_delete_me_logs file 存儲目錄
封閉數據庫服務
配置文件中添加或者改動 tokudb_data_dir、tokudb_tmp_dir、、、
創立 tokudb 文件的存儲目錄
移動文件
啟動數據庫服務器
查看文件的寄存位置
3.3 問題闡發
https://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_troubleshooting.html
information_schema庫里邊的相應系統視圖闡發
tokudb如何備份呢?
單表也可以使用mysqldump.全庫呢? tokudb引擎全庫備份,官方版本是使用 tokudb_backup 引擎來進行,支持在線熱備.也就是,必要另外安裝這個引擎,安裝相對簡單,使用 ps_tokudb_admin + 重啟數據庫服務預加載引擎 + ps_tokudb_admin.
4.1 安裝備份引擎
首先,確保數據庫是啟動正常狀態,執行ps_tokudb_admin,如果 數據庫配置文件 cnf不是在 /etc/my.cnf,必要手動指定 --defaults-file,避免無法找到配置文件寫入 preload-hotbackup.
這個時候,可以看到提示:Successfully added preload-hotbackup option into /data/mysql/pmysql3330.cnf,查看配置文件,在 mysqld_safe 配置中,添加多了一行 配置 :preload-hotbackup.
重啟數據庫服務,使用 mysqladmin封閉,mysqld_safe 啟動
這里有個地方注意下, libHotBackup.so 記得要cp到 /usr/lib 或者 /usr/lib64的目錄下,否則mysqld_safe啟動數據庫的時候,會報錯如下:
這種情況下,它檢查到 安裝目錄下有 libHotBackup.so 引擎文件,會使用這個加載,必要 把這個文件拷貝到 /usr/lib64 或者 /usr/lib,再重新加載這個文件,然后再次執行 mysqld_saft啟動服務.
數據庫啟動后,安裝備份引擎
反省
4.2 備份tokudb
實例備份
配置前提
如果實例含有innodb引擎的表格,必要關閉 innodb異步io的變量 innodb_use_native_aio,避免出現數據不一致,無法恢復的備份.這個變量只能在配置文件中添加,屬于readonly變量
建立備份文件夾,這個文件夾必需是為空、授權備份文件夾可寫,因為備份的時候,需要寫入及創建文件夾,所以對其所在的文件夾需要有權限
注意,tokudb_back對自己引擎的表格,支持對單獨存儲的 tokudb_data_dir\ tokudb_log_dir \binary log備份,但是,不支持不支持不支持 innodb或者myisam引擎的表格另外存儲,也就是 所有的InnoDB存儲引擎,MyISAM,及其他文件必須在MySQL datadir
tokubackup不備份MySQL的配置文件(S)
tokubackup不支持增量備份
配置
chown -R mysql:mysql /data/backup
在配置文件中設置 innodb_use_native_aio = OFF,重啟數據庫實例,這里注意,啟動數據庫必要到 /usr/local/pmysql 目錄下,執行 ./bin/mysqld_safe --defaults-file=/data/mysql/pmysql3330.cnf
建立文件夾 /data/backup/pmysql3330 ,并授權
備份分為2中,一種是實例備份,一種是指定備份,目前tokudb_backup僅支持整個實例備份,支持混合引擎,指定備份,目前采用mysqldump辦法.
實例備份
set tokudb_backup_dir='/data/backup/pmysql3330';
執行這個指令則開始備份,備份過程中,支持讀寫,
備份失足驗證
表格備份
實例備份后還原
tokudbback沒有特定的函數進行數據恢復,可以使用cp或者sync到 數據目錄,或者直接使用備份目錄
注意權限改動
《MySQL_第三方數據庫引擎 tokudb》是否對您有啟發,歡迎查看更多與《MySQL_第三方數據庫引擎 tokudb》相關教程,學精學透。維易PHP學院為您提供精彩教程。