TokuDB安装

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:


一:缘由

  1. 监控系统产生的数据相对普通业务数据,具有写入需求占绝对多数,读取相对较少的特点。

  2. 之前使用的PMM监控系统,其docker版解决方案,内置的不仅不是其自家的percona分支数据库,而且使用的是较旧的5.5官方分支版本。监控了6个实例的库和主机后。3周后就占用了9GB的空间。

  3. 欣慰的是,Percona公司考虑到这个情况,将会自动根据PMM服务器的硬盘可用容量大小自动定期删除备份的历史数据。

  4. 对一个DBA而言,需要关注到一个库的历史负载情况,方便同比环比进行硬件扩容规划。最起码要2年的完整数据吧。

二:解决方法

        采用高压缩的TokuDB引擎进行压缩存储历史数据。

TokuDB is a highly scalable, zero-maintenance downtime MySQL storage engine that delivers indexing-based query acceleration, improved replication performance,     unparalleled compression, and live schema modification. The TokuDB storage engine is a scalable, ACID and MVCC compliant storage engine that provides indexing-based query improvements, offers online schema modifications, and reduces slave lag for both hard disk drives and flash memory. 

This storage engine is specifically designed for high performance on write-intensive workloads which is achieved with Fractal Tree indexing.

三:安装步骤

  1. tokudb既可以在官方社区版本的MySQL上启用,也可以在percona分区上启用,考虑到要见识下percona分支版本相对官方版本支持较多的监控特性, 这次使用percona-mysql-server版本

  2. 安装前准备


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#systemctl
stop firewalld   #停掉系统防火墙
#systemctl mask firewalld  #屏蔽防火墙自启动
#setenforce 0              #关闭SELinux
#sed -i 's/Enforcing/Permissive/g' /etc/selinux/config  #永久关闭SELinux
#创建percona软件源
#cat>/etc/yum.repos.d/percona-release.repo<<EOF
     [percona-release-x86_64]
         name = Percona-Release
YUM repository - x86_64
         baseurl = http: //repo .percona.com /release/7Server/RPMS/x86_64
         enabled = 1
         gpgcheck = 1
         gpgkey =  file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
  
        [percona-release-noarch]
        name = Percona-Release
YUM repository - noarch
        baseurl = http: //repo .percona.com /release/7Server/RPMS/noarch
        enabled = 1
        gpgcheck = 1
        gpgkey =  file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
  
        [percona-release- source ]
        name = Percona-Release
YUM repository - Source packages
        baseurl = http: //repo .percona.com /release/7Server/SRPMS
        enabled = 0
        gpgcheck = 1
        gpgkey =  file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-Percona
        EOF



       创建软件源倒是有个哏,本来Cent7的系统可以直接在网站上下载epel-release.rpm

       进行安装。但是FedoraServer26的版本与repo的自判断特性不太兼容。这里我手动将

       系统变量判断手动改成了7Server,即与RHCE/Cent7使用同样的源。

 3.开始安装

   #安装percona分支MySQL,和相关的备份与工具软件

   

1
2
#yum -y install  percona-toolkit percona-xtrabackup
Percona-Server-server-57


   #安装依赖库,这也是坑,fedora源中jemalloc是4.5版本,不兼容。需要手动安装4.0版本以下的

    大家如果用的CentOS/RHCE应该没问题的。

   

1
#yum -y install ftp://rpmfind.net/linux/fedora/linux/releases/23/Everything/x86_64/os/Packages/j/jemalloc-3.6.0-9.fc23.x86_64.rpm


    #安装TokuDB引擎插件

   

1
#yum -y install Percona-Server-tokudb-57

    #启用插件(mysqld进程需要在运行状态)

   

1
2
3
#ps-admin --enable-tokudb -u root -p
#systemctl restart mysqld
#ps-admin --enable-tokudb -u root -p


 4. 到此为止,安装结束了,大家可以在登入服务器查看

    wKiom1m9C22j-4lOAAEGaqz7aPM891.png-wh_50    


 4.5:更改zabbix的建表语句,设置默认引擎为tokuDB,同时更改MySQL默认的引擎

        #更改默认引擎:

            #my.cnf中添加

         default_storage_engine=TokuDB

      并重启mysqld服务

      #更改zabbix建表语句,设置默认引擎为tokuDB

      #sed -i 's/InnoDB/TokuDB/g' /usr/share/zabbix-mysql/schema.sql



5.付:若jemalloc版本不对,会出下面错误,大家引以为戒

        

1
2
3
4
5
Checking TokuDB engine plugin status...
INFO: TokuDB engine
plugin is not installed.
Installing TokuDB  engine...
ERROR: Failed to  install  TokuDB engine plugin. Please check error log.

    但是错误日志中没有记录。

    尝试通过手动添加的方式安装插件:

         mysql>INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';

                    ERROR 1126 (HY000):

     退出MySQL客户端查看错误代码:

     

1
# perror 1126

    输出如下

  

1
(ER_CANT_OPEN_LIBRARY): Can 't open shared library ' %-.192s'     (errno: %d %-.128s)

    就是找不到库文件,回去安装3.6版本的jemalloc

   

注意:

      vim /etc/sysconfig/mysql中应为:

1
2
LD_PRELOAD= /usr/lib64/libjemalloc .so.1
THP_SETTING=never

  (my.cnf中注释掉basedir=/usr/local/mysql)



 本文转自 angry_frog 51CTO博客,原文链接:http://blog.51cto.com/l0vesql/1965912


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL 数据库
MySQL Innodb Purge简介
前言 为什么MySQL InnoDB需要Purge操作?明确这个问题的答案,首先还得从InnoDB的并发机制开始。为了更好的支持并发,InnoDB的多版本一致性读是采用了基于回滚段的的方式。另外,对于更新和删除操作,InnoDB并不是真正的删除原来的记录,而是设置记录的delete mark为1。
8641 1
|
7月前
|
存储 关系型数据库 MySQL
⑩【MySQL】存储引擎详解, InnoDB、MyISAM、Memory。
⑩【MySQL】存储引擎详解, InnoDB、MyISAM、Memory。
79 0
|
7月前
|
存储 SQL 关系型数据库
MySQL之深入InnoDB存储引擎——Checkpoint机制
一、引入 由于页的操作首先都是在缓冲池中完成的,那么如果一条DML语句改变了页中的记录,那么此时页就是脏的,即缓冲池中页的版本要比磁盘的新。那么数据库需要将新版本的页刷新到磁盘。倘若每次一个页发生变化就刷新,那么开销会很大,若热点数据集中在某几个页中,那么数据库的性能将变得非常差。 同时如果在缓冲池将新版本的页刷新到磁盘时发生了宕机,那么数据就不能恢复了。为了避免发生数据丢失的问题,当前事务数据库普遍都采用了 Write Ahead Log 策略,即当事务提交时,先写重做日志,再修改页。当由于发生宕机而导致数据丢失时,通过重做日志来完成数据的恢复,从而满足事务的持久性要求。
|
7月前
|
存储 SQL 关系型数据库
MySQL之深入InnoDB存储引擎——redo日志
我们知道数据的修改首先是在Buffer Pool中进行的,之后再定时刷到磁盘中。那么如果在事务提交后还没刷新到磁盘中,系统就崩溃了,那么此时数据就丢失了,这就不满足事务的持久性了。而如果我们考虑每次提交之后,都同步将事务中所有的页面刷新到磁盘,这样确实可以保证持久性,但是这种方法存在以下两种问题:
|
存储 关系型数据库 MySQL
MySQL引擎:InnoDB VS MyISAM
MySQL引擎:InnoDB VS MyISAM
|
存储 SQL 安全
深入学习 Mysql 引擎 InnoDB、MyISAM
MySQL 引擎 InnoDB 和 MyISAM 是 MySQL 中常用的两种存储引擎,它们具有不同的特点,请看正文一一介绍。
393 0
深入学习 Mysql 引擎 InnoDB、MyISAM
|
存储 缓存 关系型数据库
【Mysql-InnoDB系列】InnoDB架构
mysql官方文档,8.0版本,InnoDB架构的深度学习
126 0
|
机器学习/深度学习 关系型数据库 MySQL
TokuDB 安装
TokuDB是MySQL和MariaDB的开源、高性能存储引擎。它通过使用分形树索引来实现这一点。它是可伸缩的,ACID和MVCC兼容的,提供基于索引的查询改进,提供在线模式修改,并减少硬盘驱动器和闪存的从延迟。----来自维基百科
3064 0
|
SQL 存储 关系型数据库
|
存储 关系型数据库