另见链接:http://note.youdao.com/share/?id=77dd1e9cc139b57586665f702467c56a&type=note
 
安装
安装主要包括两种方法:1)rpm安装  2)源码编译
 
1. rpm安装
此方式是比较简单的方式,按照Percona安装说明文档指示的方法操作即可。
首先安装Percona yum repository  : 
sudo rpm -i percona-release-0.0-1.x86_64.rpm
接下来安装Percona-Server-tokudb-56.x86_64
sudo yum install Percona-Server-tokudb-56.x86_64
在这一步安装过程中,安装程序会向屏幕输出很多信息,可根据具体信息查找问题或直接success。tokudb和mysqld存在冲突,强烈建议使用rpm包安装时机器上不存在mysqld,否则会报错。
 
安装好后,就可以启动mysqld_safe,然后可以正常访问mysqld。
 
2.  源码编译
Percona的tokudb是以一个单独的包进行发布的,因此源码编译需要分别安装Percona 5.6.19和tokudb 
5.6.19我们已经在gitlab上放了一份代码(内部地址,略去)
选择其中的percona-server-5.6.17-66.0.tokudb.tar.gz,下载后解压缩,将其中的storage/tokudb放到Mysql相关目录。
 
编译时cmake需要指定DWITH_TOKUDB_STORAGE_ENGINE=1,然后执行make /make install。
 
编译tokudb需要gcc版本大于4.8,cmake版本大于2.8.9,请自行折腾。
 
 
使用TokuDB存储引擎
tokuDB默认是使用Module方式编译的,因此在使用前需要首先Install,具体方式如下:
INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
后续通过
show engines/show plugins/ select @@tokudb_version 就可以看到tokudb相关的内容。
 
 
建表
在install相关so之后,可以直接创建tokudb类型的表,Percona给出了一个例子,看起来和创建innodb的表没有什么区别。
mysql> CREATE TABLE `City` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`)
) ENGINE=TokuDB
也可以将其他存储引擎的表修改成tokudb:
mysql> ALTER TABLE City ENGINE=TokuDB;
经确认可以在innodb和tokudb两个存储引擎之间相互转换。
 
 
同一事务内对不同存储引擎表进行操作
经测试,同一个事务内可以对innodb/tokudb分别进行操作,如下:
mysql> insert into City_tokudb(ID) values(1);
Query OK, 1 row affected (0.00 sec)
 
mysql> insert into City_innodb(ID) values(1);
Query OK, 1 row affected (0.00 sec)
 
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
 
mysql> insert into City_innodb(ID) values(2);
Query OK, 1 row affected (0.00 sec)
 
mysql> insert into City_tokudb(ID) values(2);
Query OK, 1 row affected (0.00 sec)
 
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
 
mysql> select * from City_innodb;
+----+------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+------+-------------+----------+------------+
| 1 | | | | 0 |
| 2 | | | | 0 |
+----+------+-------------+----------+------------+
2 rows in set (0.00 sec)
 
mysql> select * from City_tokudb;
+----+------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+------+-------------+----------+------------+
| 1 | | | | 0 |
| 2 | | | | 0 |
+----+------+-------------+----------+------------+
2 rows in set (0.00 sec)
 
复制相关
由于binlog和存储引擎是相互独立的,因此理论上复制不应受到TokuDB的影响。此处,以常规的主备搭建为基础,在主库上对TokuDB的表分别执行建表,增删改查操作,并在备库上确认复制数据无误。
常规的主备搭建流程参见:
 
主库执行的操作:
mysql> CREATE TABLE `City_repl` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `CountryCode` (`CountryCode`) ) ENGINE=TokuDB;
Query OK, 0 rows affected (0.01 sec)
 
mysql> insert into City_repl(ID) values(1);
Query OK, 1 row affected (0.00 sec)
 
mysql> insert into City_repl(ID) values(2);
Query OK, 1 row affected (0.00 sec)
 
mysql> delete from City_repl where ID=1;
Query OK, 1 row affected (0.00 sec)
 
mysql> update City_repl set ID=3 where ID=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
相应的备库同步执行查询结果如下:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| City_repl |
+----------------+
1 row in set (0.00 sec)
 
mysql> select * from City_repl;
+----+------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+------+-------------+----------+------------+
| 1 | | | | 0 |
| 2 | | | | 0 |
+----+------+-------------+----------+------------+
2 rows in set (0.00 sec)
 
mysql> select * from City_repl;
+----+------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+------+-------------+----------+------------+
| 2 | | | | 0 |
+----+------+-------------+----------+------------+
1 row in set (0.00 sec)
 
mysql> select * from City_repl;
+----+------+-------------+----------+------------+
| ID | Name | CountryCode | District | Population |
+----+------+-------------+----------+------------+
| 3 | | | | 0 |
+----+------+-------------+----------+------------+
 
可见简单的针对TokuDB的增删改查操作,备份是可以正常工作的。
 
备份相关
Percona Xtrabackup当前并不支持TokuDB tables的备份,从Percona官方观点来看,其在近期内也并没有支持TokuDB的计划。
TokuDB企业版提供Hot Backup的方案,其实现原理参见:TokuDB Hot Backup – Part 1  TokuDB Hot Backup – Part 2, 当然这不会是我们考虑的方案。
Percona推荐使用LVM或是mysqldumper来备份TokuDB表,而网易在《程序员》上发表的一篇文章中提到其使用mysqldump对TokuDB进行备份。
 
参考链接
1)Percona版本安装说明文档:
2)Official TokuDB Documentation
3)TokuDB在网易生产环境中的应用实践
4)TokuDB一些源码分析(from @淘宝一工)
5)Percona Server 5.6.16-64.0 with TokuDB engine now available
http://www.mysqlperformanceblog.com/2014/03/03/percona-server-5-6-16-64-0-with-tokudb-engine-now-available/

TokuDB调研文档的更多相关文章

  1. PhyLab2.0需求与功能分析改进文档(NABCD)

    PhyLab1.0需求规格说明文档 1. 概述 1.1 项目概述 软剑攻城队小组于2015学年开发了PhyLab物理实验网站,一经发布好评如潮.网站的核心功能是提供预习报告和自动数据处理,而后加入了论 ...

  2. 需求文档2_The Battle of Polytopia

    需求文档 ------------------------------------- 1. 游戏详细分析 The Battle of Polytopia简要介绍 探索型.策略型的对战塔防游戏,回合制. ...

  3. SRS文档 软件需求说明书

    [摘要] 随着信息时代科技的飞速发展,经济全球化已广为人知,英语作为全球最主要的语言之一,受到越来越多的人的喜爱,不仅为了增长知识,也为了能适应社会发展的需求.但是,学英语最重要的事首先是积累词汇,没 ...

  4. 使用Objective-C的文档生成工具:appledoc

    使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...

  5. 使用Objective-C的文档生成工具

    前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象Java语言本身就自带javadoc命令,可以从源码中抽取文档.今 ...

  6. Lucene 对文档打分的规则整理记录

    摘引自:http://www.cnblogs.com/forfuture1978/archive/2010/02/08/1666137.html Lucene的搜索结果默认按相关度排序,这个相关度排序 ...

  7. 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)

    ☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...

  8. Mysql数据库导出数据字典文档Word或者HTML的3个工具

    最近需要将Mysql的数据库导出一份Word的文档出来,本文记录调研后几个可用的工具和方法: 阿里云DMS工具导出 适用于存储在阿里云RDS服务中的Mysql数据库 导出格式支持:Word.Excel ...

  9. 使用FreeMarker生成word文档

    生成word文档的框架比较多,比如poi,java2word,itext和freemarker. 调研之后,freemarker来实现挺简单的,具体步骤如下: 1. 新建word文档,占位符用${}, ...

随机推荐

  1. 消灭ASP.NET CachedPathData.ValidatePath引起的HttpException异常

    在博客程序的日志中经常会出现这样的错误日志: Url: http://www.cnblogs.com/cmt/p/sokcet_memory_leak.html (这个URL仅是示例)UserAgen ...

  2. Oracle基础表空间建立,以及练习

    Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在use ...

  3. 菜鸟日记-HTML

    第一部分  HTML---Hyper Text Markup Language--超文本标记语言 1.HTML标准:<html> <head> 网页上的控制信息 <tit ...

  4. iOS开发-UITableView顶部图片下拉放大

    关于顶部图片下拉放大,在用户展示的个人中心显示用户个人头像信息,设置UITableView的headerView实现,UITableView继承自UIScrollView,同样的设置UIScrollV ...

  5. iOS开发——高级技术&iCloud服务

    iCloud服务 iCloud 是苹果提供的云端服务,用户可以将通讯录.备忘录.邮件.照片.音乐.视频等备份到云服务器并在各个苹果设备间直接进行共享而无需关心数据同步问题,甚至 即使你的设备丢失后在一 ...

  6. bzoj 2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MB Description 算不出的算式背景:曾经有一个老掉牙的游 ...

  7. Swift 中范围和区间如何使用?

    虽然现在swift语言已经发展到了2.0版了,但是相信很多学习iOS开发的童鞋仍对swift语言存在各种各样的疑问,今天小编将为大家详细介绍swift中的范围和区间,下面我们一起来看看吧. Range ...

  8. 几种你不知道的获取浙A牌照的方法

    http://www.19lou.com/forum-464848-thread-18191429174490953-1-1.html 杭州限牌政策执行已有一年多,因为限牌政策,很多人买车之前,都不得 ...

  9. file_get_contents高級用法

    首先解決file_get_contents的超時問題,在超時返回錯誤後就象js中的settimeout那樣進行一次嘗試,錯誤超過3次或者5次後就確認為無法連線伺服器而徹底放棄.這裡就簡單介紹兩種解決方 ...

  10. ios相关手册、图表等综合

    Objective-C初学者速查表(来源:http://www.cocoachina.com/applenews/devnews/2013/1115/7362.html) iOS UIKit类图 (来 ...