TokuDB 安装

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: TokuDB是MySQL和MariaDB的开源、高性能存储引擎。它通过使用分形树索引来实现这一点。它是可伸缩的,ACID和MVCC兼容的,提供基于索引的查询改进,提供在线模式修改,并减少硬盘驱动器和闪存的从延迟。----来自维基百科

安装TokuDB:
0、关闭内存大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

查看下
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

tokuDB内存分配需要jemalloc支持,因此使用之前需要安装jemalloc
yum install -y jemalloc

rpm -qa |grep jemalloc
jemalloc-3.6.0-1.el7.x86_64

rpm -ql jemalloc-3.6.0-1.el7.x86_64
/usr/bin/jemalloc.sh
/usr/lib64/libjemalloc.so.1
/usr/share/doc/jemalloc-3.6.0
/usr/share/doc/jemalloc-3.6.0/COPYING
/usr/share/doc/jemalloc-3.6.0/README
/usr/share/doc/jemalloc-3.6.0/VERSION
/usr/share/doc/jemalloc-3.6.0/jemalloc.html

1、从percona官网下载
https://www.percona.com/downloads/Percona-Server-LATEST/

tar xf Percona-Server-5.7.21-21-Linux.x86_64.ssl101.tar.gz
mv Percona-Server-5.7.21-21-Linux.x86_64.ssl101 tokudb57
mkdir /home/work/data/mysql3504

2、初如化
/home/work/tokudb57/bin/mysqld --defaults-file=/home/work/data/my3504.conf --basedir=/home/work/tokudb57/ --user=work --initialize-insecure

--initialize-insecure 初如化MySQL是空密码

--defaults-file= 指定配置文件,最好放在前面,不要放在最后

3、配置文件my3306.conf
加入:
[mysqld_safe]
thp-setting=never
malloc-lib=/usr/lib64/libjemalloc.so.1

3、启动
chown -R work:work /home/work/data/mysql3306/

改密码:
set password=password('123456');

/home/work/tokudb57/bin/mysqld_safe --defaults-file=/home/work/data/mysql3306/my3306.conf --user=work &

4、安装TokuDB
cd /home/work/tokudb57/bin/
ps_tokudb_admin --enable -u'root' -p -S /home/work/tmp/mysql3306.sock

/home/work/tokudb57/bin/ps_tokudb_admin --enable --user=root --password='' --socket=/home/work/tmp/mysql3306.sock
Enter password:

WARNING: This script is deprecated and will be removed in 8.0. You can use ps-admin script which has more functionality.

Checking SELinux status...
INFO: SELinux is disabled.

Checking if Percona Server is running with jemalloc enabled...
INFO: Percona Server is running with jemalloc enabled.

Checking transparent huge pages status on the system...
INFO: Transparent huge pages are currently disabled on the system.

Checking if thp-setting=never option is already set in config file...
INFO: Option thp-setting=never is not set in the config file.
(needed only if THP is not disabled permanently on the system)

Checking TokuDB engine plugin status...
INFO: TokuDB engine plugin is not installed.

Adding thp-setting=never option into /etc/my.cnf
INFO: Successfully added thp-setting=never option into /etc/my.cnf

Installing TokuDB engine...
INFO: Successfully installed TokuDB engine plugin.

(root@(none))>show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| TokuDB | YES | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

此时InnoDB还是默认引擎 重启下server,并在my3306.conf [mysqld]添加如下配置:

------------- tokudb ---------------

default-storage-engine = TokuDB
tokudb_directio = on
tokudb_cache_size = 2G
tokudb_row_format = tokudb_lzma
tokudb_commit_sync = 0
tokudb_fsync_log_period = 1000

重启后TokuDB 就是默认存储引擎了
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| TokuDB | DEFAULT | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |
| InnoDB | YES | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)

错误:
一、 初始化错误
[ERROR] InnoDB: Expected to open 4 undo tablespaces but was able to find only 0 undo tablespaces.Set the innodb_undo_tablespaces parameter to the correct value and retry. Suggested value is 0

解决:
报错原因:
在初始化数据库的时候没有指定innodb_undo_tablespaces参数
解决方法:
在初始化数据库的时候写上--defaults-file参数,在对应的配置文件中写上对应的innodb_undo_tablespaces参数

/home/work/tokudb57/bin/mysqld --defaults-file=/home/work/data/my3504.conf --basedir=/home/work/tokudb57/ --user=work --initialize-insecure

二、tokudb安装:
root@dqd-stat-mysql-slave01.bj.uc:/home/work/data# ps_tokudb_admin --enable -u'root' -p'123456' -h 127.0.0.1 -P 3504
WARNING: This script is deprecated and will be removed in 8.0. You can use ps-admin script which has more functionality.

Checking SELinux status...
INFO: SELinux is disabled.

ERROR: Failed to list mysql plugins! Please check username, password and other options for connecting to server...

用户名和密码都是正常的

解决:
/home/work/tokudb57/bin/ps_tokudb_admin --enable --user=root --password='' --socket=/home/work/tmp/mysql3306.sock

三、 Percona Server 未启动

/home/work/tokudb57/bin/ps_tokudb_admin --enable --user=root --password='' --socket=/home/work/tmp/mysql3504.sock

WARNING: This script is deprecated and will be removed in 8.0. You can use ps-admin script which has more functionality.

Checking SELinux status...
INFO: SELinux is disabled.

cat: dqd-stat-mysql-slave01.bj.uc.pid: No such file or directory
Checking if Percona Server is running with jemalloc enabled...
grep: /proc//environ: No such file or directory
which: no mysqld in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/itools/python/bin/:/home/work/local/mysql/bin:/root/opt/bin/:/home/work/opbin/xtrabackup/bin:/home/work/nodejs/bin:/root/bin)
ldd: missing file arguments
Try `ldd --help' for more information.
ERROR: Percona Server is not running with jemalloc, please restart mysql service to enable it and then run this script...

搞了老错误,又来新错误, server是启动的

解决:
root@dqd-stat-mysql-slave01.bj.uc:/home/work/data# grep "Percona Server is not running" /home/work/tokudb57/bin/ps_tokudb_admin
printf "ERROR: Percona Server is not running with jemalloc, please restart mysql service to enable it and then run this script...\n\n";
printf "ERROR: Percona Server is not running with libHotBackup.so preloaded, please restart mysql service to enable it and then run this script again...\n\n";

vim /home/work/tokudb57/bin/ps_tokudb_admin
if [ $ENABLE_TOKUBACKUP = 1 ]; then
printf "Checking if Percona Server is running with libHotBackup.so preloaded...\n"
LIBHOTBACKUP_STATUS=$(grep -c libHotBackup.so /proc/${PID_NUM}/environ)
if [ $LIBHOTBACKUP_STATUS = 0 ]; then
printf "ERROR: Percona Server is not running with libHotBackup.so preloaded, please restart mysql service to enable it and then run this script again...\n\n";
exit 1
else
printf "INFO: Percona Server is running with libHotBackup.so preloaded.\n\n";
fi
fi

打开脚本和pid 有关 ,那就回一个pid

root@dqd-stat-mysql-slave01.bj.uc:/home/work/data# grep "pid" /home/work/data/mysql3306/my3306.conf
pid-file = /home/work/tmp/mysql.pid

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
人工智能 搜索推荐 算法
豆包角色制作指南
这篇文章是一份豆包角色制作指南,介绍了如何使用虚拟角色生成器创建IP或非IP角色,以及创作对话人物sp的技巧和Bot主动发消息的技巧。
|
消息中间件 Linux RocketMQ
【RocketMq】RocketMq 4.9.4 Windows-docker 部署
【RocketMq】RocketMq 4.9.4 Windows-docker 部署
728 0
【RocketMq】RocketMq 4.9.4 Windows-docker 部署
|
7月前
|
JSON 安全 Java
什么是用于REST API的JWT Bearer令牌以及如何通过代码和工具进行调试
在Web开发中,保护REST API至关重要,而JSON Web令牌(JWT)特别是JWT Bearer令牌,是一种高效方法。它通过紧凑、自包含的结构实现安全信息交换,提升用户体验。本文探讨JWT Bearer的基本概念、结构与实现,包括在Java中的应用步骤,以及使用Apipost和cURL进行测试的方法。JWT优势明显:无状态、互操作性强,适用于分布式系统。掌握JWT Bearer,可助开发者构建更安全、高效的API解决方案。
|
监控
XGSPON技术简介及其与GPON和XGPON的共存方式
XGPON和XGSPON都属于GPON系列,可以说XGSPON是XGPON的技术进化。这两种技术都属于10G PON,但主要区别在于速率对称性上。XGPON是非对称PON,其PON端口上下行速率分别为2.5G和10G;而XGSPON则是对称PON,其PON端口上下行速率均为10G。
1761 2
|
安全 Java API
【性能与安全的双重飞跃】JDK 22外部函数与内存API:JNI的继任者,引领Java新潮流!
【9月更文挑战第7天】JDK 22外部函数与内存API的发布,标志着Java在性能与安全性方面实现了双重飞跃。作为JNI的继任者,这一新特性不仅简化了Java与本地代码的交互过程,还提升了程序的性能和安全性。我们有理由相信,在外部函数与内存API的引领下,Java将开启一个全新的编程时代,为开发者们带来更加高效、更加安全的编程体验。让我们共同期待Java在未来的辉煌成就!
296 11
|
安全 Java 数据库
使用`Class.forName`动态加载类
使用`Class.forName`动态加载类
|
存储 关系型数据库 MySQL
XtraBackup支持哪些MySQL数据库版本?
【5月更文挑战第13天】XtraBackup支持哪些MySQL数据库版本?
1499 0
|
消息中间件 运维 Java
Docker部署kafka|Go操作实践
本文讲解了使用docker-compose部署单节点kafka的流程,并且在文章的后半部分给出了使用Go语言操作kafka进行生产消费的代码案例。
700 1
Docker部署kafka|Go操作实践