您的位置 首页 php

MySQL_第三方数据库引擎 tokudb

MySQL_第三方数据库引擎_tokudb

1 tokudb引擎介绍

  1. 特性:高压缩,可支持多个聚集索引,支持ACID、MVCC,使用 Fractal Tree 索引

  2. 优点:

  • 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 Tokudb安装

2.1 percona MySQL 安装

31d80000fe1c297289e2

31d5000360c7a6ceec64

31d5000360c8a2cbacdd

2.2 安装 jemalloc,管理内存

找个最新版本安装就可以了

31d50003623a11f696dc

解压过程中如果报错如下,请安装 bzip2 包 :yum install -y bzip2

31d90003508f3a74d91b

安装成功后,在数据库配置文件中的 mysql d_safe模块,添加引用libjemalloc.so,记得需要先找下这个文件的实际位置,然后cp或者ls一份到/usr/lib64目录下。

在数据库配置文件中添加引用

31dd00033fe1d32ae7a2

注意,数据库关闭后,需要用mysqld_safe启动服务,使用 jemalloc 管理内存。

31d300010ed6a724ddb8

2.3 修改transparent_hugepage

tokudb引擎需要启动透明大页,更好的提供内存管理。

31db000270684c1eb455

需要修改为never,如果不修改,使用tokudb引擎的时候,会在error.log中报错

31d700037f396ae03941

配置如下:

31d500036577f2c5e989

2.4 安装tokudb引擎跟percona client

官网下载后安装。

31dd000342a5b34e9975

2.5 启用tokudb存储引擎

安装tokudb引擎后,会提示启动指令语法如下:

31d9000354b368cd43ed

使用 ps_tokudb_admin指令 :

ps_tokudb_admin –enable -uroot -p –sock=/tmp/pmysql.sock –defaults-file=/data/mysql/mysql3306.cnf

如果正常,则是以下显示,不正常的话,看下前面的安装步骤是不是少了

31d700038159eafa985d

安装生产后,可以在

31d9000355efd4257387

TokuDB Version

31d90003565f688be288


3 文件管理及分析

3.1 安装tokudb引擎后的新增文件

在数据目录中,新增了8个文件

31d8000106673ae8d7e0

  1. tokudb.environment:tokudb赢取的环境变量存储文件,像创建时间、当前版本号

  2. tokudb.rollback:每一个tokudb的事务,都有自己的回滚日志,具体回滚日志分配相关信息记录在这里

  3. tokudb.directory:映射文件夹的名字

3.2 tokudb文件管理

可以统一把tokudb的数据文件存储在某个文件夹下,参数是 tokudb_data_dir

可以统一把tokudb的临时文件存储在某个文件夹下,参数是 tokudb_tmp_dir

可以统一把tokudb的日志文件存储在某个文件夹下,参数是 tokudb_log_dir

  • 如何迁移:

  1. SELECT dictionary_name, internal_file_name FROM INFORMATION_SCHEMA.TokuDB_file_map;

  2. 移动 *.tokudb 文件 跟 __tokudb_lock_dont_delete_me_data 到新的存储目录

  3. 移动 __tokudb_lock_dont_delete_me_temp 到新的 存储目录

  4. 移动 到新的 log*.tokulog* files and your __tokudb_lock_dont_delete_me_logs file 存储目录

  5. 关闭数据库服务

  6. 配置文件中添加或者修改 tokudb_data_dir、tokudb_tmp_dir、、、

  7. 创建 tokudb 文件的存储目录

  8. 移动文件

  9. 启动数据库服务器

  10. 查看文件的存放位置

3.3 问题分析

information_schema库里边的相应系统视图分析

31d9000357a328005bae


4 备份

tokudb如何备份呢?

单表也可以使用 mysqldump 。全库呢? tokudb引擎全库备份,官方版本是使用 tokudb_backup 引擎来进行,支持在线热备。也就是,需要另外安装这个引擎,安装相对简单,使用 ps_tokudb_admin + 重启数据库服务预加载引擎 + ps_tokudb_admin。

4.1 安装备份引擎

首先,确保数据库是启动正常状态,执行ps_tokudb_admin,如果 数据库配置文件 cnf不是在 /etc/my.cnf,需要手动指定 –defaults-file,避免无法找到配置文件写入 preload-hotbackup。

31d70003855498b857a6

31d3000116854c1d4e53

这个时候,可以看到提示:Successfully added preload-hotbackup option into /data/mysql/pmysql3330.cnf,查看配置文件,在 mysqld_safe 配置中,添加多了一行 配置 :preload-hotbackup。

31d500036c6081b5cf6f

重启数据库服务,使用 mysqladmin关闭,mysqld_safe 启动

31d70003865fb80ab214

这里有个地方注意下, libHotBackup.so 记得要cp到 /usr/lib 或者 /usr/lib64的目录下,不然mysqld_safe启动数据库的时候,会报错如下:

31d900035b4af4716ede

这种情况下,它检查到 安装目录下有 libHotBackup.so 引擎文件,会使用这个加载,需要 把这个文件拷贝到 /usr/lib64 或者 /usr/lib,再重新加载这个文件,然后再次执行 mysqld_saft启动服务。

31d500036deb1156326a

数据库启动后,安装备份引擎

31d5000375fad0893ef7

31db000280f64ad6d419

检查

31d300012111e1274679

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′;

  • 执行这个指令则开始备份,备份过程中,支持读写,

  • 备份出错验证

31d500037bb8d140ad63

  • 表格备份

31d500037c3aed5f2514

  • 实例备份后还原

  • tokudbback没有特定的函数进行数据恢复,可以使用cp或者sync到 数据目录,或者直接使用备份目录

  • 注意权限修改

31d500037cd711d4e5ff

文章来源:智云一二三科技

文章标题:MySQL_第三方数据库引擎 tokudb

文章地址:https://www.zhihuclub.com/49221.shtml

关于作者: 智云科技

热门文章

网站地图