MySQL_第三方数据库引擎_tokudb
前阵子迁移zabbix到tokudb,整理部分操作笔记到这篇博文。
1 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
- fractal tree 可以再了解下,对随机IO有非常大的改善作用
2 Tokudb安装
2.1 percona mysql安装
1 下载最新percona mysql二进制包
2 解压
tar zvxf Percona-Server-5.7.17-13-Linux.x86_64.ssl101.tar.gz
3 软连接
ln -s /opt/percona/Percona-Server-5.7.17-13-Linux.x86_64.ssl101 /usr/local/pmysql
4 建立用户及用户组
groupadd mysql
useradd -g mysql -s /sbin/nologin -d /usr/local/mysql/ -M mysql
5 建立文件夹
mkdir -p /data/mysql/pmysql3330/{data,tmp,logs}
6 数据库配置文件
pmysql3330.cnf
7 授权
[root@sutest242 percona]# chown -R mysql:mysql /usr/local/pmysql/
[root@sutest242 percona]# chown -R mysql:mysql /opt/percona/Percona-Server-5.7.17-13-Linux.x86_64.ssl101
[root@sutest242 percona]# chown -R mysql:mysql /data/mysql/pmysql3330/
8 看是否需要配置环境变量
vim /etc/profile
PATH=$PATH:/usr/local/pmysql/bin
source profile
9 初始化实例
/usr/local/pmysql/bin/mysqld --defaults-file=/data/mysql/pmysql3330.cnf --initialize
10 检查是否安装有问题
vim /data/mysql/pmysql3330/data/error.log
11 启动数据库实例
/usr/local/pmysql/bin/mysqld --defaults-file=/data/mysql/pmysql3330.cnf &
12 修改密码
cat /data/mysql/pmysql3330/data/error.log | grep password
/usr/local/pmysql/bin/mysql --socket=/tmp/pmysql3330.sock -uroot -p
alter user root@localhost idnetified by '******';
flush privileges;
2.2 安装 jemalloc,管理内存
2.3 修改transparent_hugepage
tokudb引擎需要启动透明大页,更好的提供内存管理。
echo never > /sys/kernel/mm/transparent_hugepage/defrag
2.4 安装tokudb引擎跟percona client
rpm -ivhPercona-Server-server-57-5.7.17-13.1.el6.x86_64.rpm
2.5 启用tokudb存储引擎
* Run the following script to enable the TokuDB storage engine in Percona Server:
ps_tokudb_admin --enable -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]
* See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html for more installation details
* See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html for an introduction to TokuDB
ps_tokudb_admin --enable -uroot -p --sock=/tmp/pmysql.sock --defaults-file=/data/mysql/mysql3306.cnf
>> Percona server is running with jemalloc enabled.
Checking transparent huge pages status on the system...
>> Transparent huge pages are currently disabled on the system.
Checking if thp-setting=never option is already set in config file...
>> Option thp-setting=never is not set in the config file.
>> (needed only if THP is not disabled permanently on the system)
Checking TokuDB plugin status...
>> TokuDB plugin is not installed.
Adding thp-setting=never option into /etc/mysql/my.cnf
>> Successfuly added thp-setting=never option into /etc/mysql/my.cnf
Installing TokuDB engine...
>> Successfuly installed TokuDB plugin.
3 文件管理及分析
3.1 安装tokudb引擎后的新增文件
- tokudb.environment:tokudb赢取的环境变量存储文件,像创建时间、当前版本号
- tokudb.rollback:每一个tokudb的事务,都有自己的回滚日志,具体回滚日志分配相关信息记录在这里
- tokudb.directory:映射文件夹的名字
3.2 tokudb文件管理
- 如何迁移:
- 关闭数据库服务
- 配置文件中添加或者修改 tokudb_data_dir、tokudb_tmp_dir、、、
- 创建 tokudb 文件的存储目录
- 移动文件
- 移动 *.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 存储目录
- 启动数据库服务器
- 查看文件的存放位置
- SELECT dictionary_name, internal_file_name FROM INFORMATION_SCHEMA.TokuDB_file_map;
3.3 问题分析
4 备份
4.1 安装备份引擎
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不支持增量备份
- 配置
- 在配置文件中设置 innodb_use_native_aio = OFF,重启数据库实例,这里注意,启动数据库需要到 /usr/local/pmysql 目录下,执行 ./bin/mysqld_safe --defaults-file=/data/mysql/pmysql3330.cnf
- 建立文件夹 /data/backup/pmysql3330 ,并授权
- chown -R mysql:mysql /data/backup
- 实例备份
- set tokudb_backup_dir='/data/backup/pmysql3330';
- 执行这个指令则开始备份,备份过程中,支持读写,
- 备份出错验证
- 表格备份
- 实例备份后还原
- tokudbback没有特定的函数进行数据恢复,可以使用cp或者sync到 数据目录,或者直接使用备份目录
- 注意权限修改
MySQL_第三方数据库引擎_tokudb的更多相关文章
- BDE(一款数据库引擎,通过它可以连接不同数据库)
BDE(Borland Database Engine)是Inprise公司的数据库引擎,它结合了SQL Links允许程序员通过它能够连接到各种不同的数据库.BDE是BORLAND 数据库引擎的缩写 ...
- mysql 数据库引擎
一.数据库引擎 数据库引擎是用于存储.处理和保护数据的核心服务.利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求. 使用数据库引擎创建用于联机事务处理或 ...
- mysql 有两种数据库引擎发音
mysql 有两种数据库引擎 一种是 MyISAM,一种是 InnoDB MyISAM 发音为 "my-z[ei]m"; InnoDB 发音为 "in-no-db&quo ...
- sql 2012日志文件频繁出现:svchost (4892) 数据库引擎已分离数据库(1、C:\Windows\system32\LogFiles\Sum\Current.mdb)
svchost (4892) 数据库引擎已分离数据库(1.C:\Windows\system32\LogFiles\Sum\Current.mdb).(时间=0 秒) 内部计时序列: [1] 0.00 ...
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- 常用mysql数据库引擎——MyISAM和InnoDB区别
背景: 昨天做项目时,发现使用事务后回滚不了,后来把数据库引擎从MyISAM换成InnoDB后果断好了,如下图: 正文: MyISAM和InnoDB是mysql常用的数据库引擎,他们的区别如下: 数据 ...
- 降龙十八掌之一:(亢龙有悔)SQL Server Profiler和数据库引擎优化顾问
简介 说到Sql的[性能工具]真是强大,SQL Server Profiler的中文意思是SQL Server事件探查,这个到底是做什么用的呢?我们都知道探查的意思大多是和监视有关,其实这个SQL S ...
- [转]MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
本篇文章是对MySQL数据库引擎介绍.区别.创建和性能测试进行了详细的分析介绍,需要的朋友参考下 数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎 ...
- [转]MySQL数据库引擎
经常用MySQL数据库,但是,你在用的时候注意过没有,数据库的存储引擎,可能有注意但是并不清楚什么意思,可能根本没注意过这个问题,使用了默认的数据库引擎,当然我之前属于后者,后来成了前者,然后就有了这 ...
随机推荐
- php访问数据库$result=$mysql_qurey('')判断是否是空值
在访问数据库后得到result值,前提是$relust为true,就是没有发生错误连接情况,但是查询的条件由于不满足导致返回值为空,此时判断就不能用!来决定是否有返回数据了,经过书籍搜索,用resul ...
- 通过PHP前端后台交互/通过ajax前端后台交互/php基础传输数据应用/简单的留言版/简单的注册账户/简单的登录页/
前 言 PHP 通过上一篇博客,注册账号与登录页面--前后台数据交互 跳转转到index主页,接下来进入主页留言板功能,通过ajax向后台传输数据,同时发表留言. 具体的内容分析如下 ...
- ReactiveCocoa源码解析(三) Signal代码的基本实现
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状 ...
- 我的学习之路_第二十章_JDBC
JDBC 使用JDBC技术,通过mysql提供的驱动程序,操作数据库 ● 1. 注册驱动 告知jvm 使用的是什么驱动程序(mysql,oracle) 使用API中的类 DriverManager中的 ...
- JSONArray用法jquery循环list<Map>对象
controoler中 List<Map<String,Object>> resList =(List<Map<String,Object>>)resM ...
- 在Cenos系统安装Python3.5版本,使P2和P3共存
首先Cenos安装好后,系统自带python2.6版本 输入>>>exit() 退出 使用迅雷下载python3.5 链接:https://www.python.org/ft ...
- nvarchar 和varchar区别
有时候设计字段的时候,碰到nvarchar和varchar时候,是有点犹豫.所以今天就来探个究竟把. (一) varchar是非Unicode可变长度类型,nvarchar是Unicode编码可变长 ...
- Android studio出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Reques的解决办法
最近更新了一下Android Studio,在导入新项目之后出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 4 ...
- Android-->创建自定义控件
1.仿 iPhone 的风格,在界面的顶部放置一个标题栏. <?xml version="1.0" encoding="utf-8"?> <R ...
- kbengine_js_plugins 在Cocos Creator中适配
kbengine_js_plugins 改动(2017/7/6) 由于Cocos Creator使用严格模式的js,而原本的kbengine_js_plugins是非严格模式的,因此为了兼容和方 便C ...