---
title: Percona数据库中安装TokuDB引擎失败的解决方法
description: "在鲲鹏服务器中，CentOS 7.6下，Percona数据库安装TokuDB引擎失败，提示无法加载libjemalloc.so.1库。提示信息如下："
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/troubleshooting/trouble/boostkit_database_troublecase_018.html
sourcePath: /source/zh/kunpengdbs/troubleshooting/trouble/boostkit_database_troublecase_018.html
indexId: 6ce5f7cfdfad69a46f31b3bbe6527e2b9b32542c4f10fe5e4644439191d8756b84
---
# Percona数据库中安装TokuDB引擎失败的解决方法

#### 问题现象描述

在鲲鹏服务器中，CentOS 7.6下，Percona数据库安装TokuDB引擎失败，提示无法加载libjemalloc.so.1库。提示信息如下：

```
ERROR: Cannot find libjemalloc.so.1 library. Make sure you have libjemalloc1 on debian|ubuntu or jemalloc on centos package installed.
```


#### 关键过程、根本原因分析

1. 查看jemalloc安装时生成的库文件，可以看到libjemalloc.so.2是由5.2.1版本的jemalloc生成。
2. 查看Percona中与jemalloc有关的代码，可以看到Percona调用了libjemalloc.so.1的库文件。
3. 尝试改为使用低版本的jemalloc，即3.6版本的jemalloc。可以生成libjemalloc.so.1的库文件。
  但却提示jemalloc版本低于2.3.0，而3.6版本的jemalloc并不低于2.3.0。因此不是jemalloc版本的问题。

4. 通过查询相关资料发现，TokuDB的代码会到jemalloc的源码包中检索jemalloc的版本信息。
5. 从网上下载的jemalloc源码包，解压后没有相关jemalloc的版本信息。只会在执行autogen.sh时生成一个“VERSION”文件，文件内容全是0。TokuDB代码检索的就是这个“VERSION”文件。


#### 结论、解决方案及效果

该问题与jemalloc的版本无关，即与库文件libjemalloc.so.1和libjemalloc.so.2无关，只与上文提到的“VERSION”文件内容有关。

1. 删除已有的jemalloc库文件。
  1 2 rm -rf libjemalloc.so.1 rm -rf libjemalloc.so.2

2. 配置编译jemalloc之前，在jemalloc源码包内创建“VERSION”文件，并在“VERSION”文件中增加如下内容：

```
5.2.1-0-g0000000000000000000000000000000000000000
```


3. 在jemalloc源码路径下重新配置编译生成新的jemalloc库文件。
  1 2 3 4 ./autogen.sh Make ./configure make install

4. 重新安装TokuDB引擎。
  1 INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';

5. 查看TokuDB引擎状态。可以看到TokuDB已经加载成功。
  1 show engines;
