Percona数据库中安装TokuDB引擎失败的解决方法
问题现象描述
在鲲鹏服务器中,CentOS 7.6下,Percona数据库安装TokuDB引擎失败,提示无法加载libjemalloc.so.1库。提示信息如下:
ERROR: Connot find libjemalloc.so.1 library. Make sure you have libjemalloc1 on debian|ubuntu or jemalloc on centos package installed.
关键过程、根本原因分析
- 查看jemalloc安装时生成的库文件,可以看到libjemalloc.so.2是由5.2.1版本的jemalloc生成。
- 查看Percona中与jemalloc有关的代码,可以看到Percona调用了libjemalloc.so.1的库文件。
- 尝试改为使用低版本的jemalloc,即3.6版本的jemalloc。可以生成libjemalloc.so.1的库文件。
但却提示jemalloc版本低于2.3.0,而3.6版本的jemalloc并不低于2.3.0。因此不是jemalloc版本的问题。
- 通过查询相关资料发现,TokuDB的代码会到jemalloc的源码包中检索jemalloc的版本信息。
- 从网上下载的jemalloc源码包,解压后没有相关jemalloc的版本信息。只会在执行autogen.sh时生成一个“VERSION”文件,文件内容全是0。TokuDB代码检索的就是这个“VERSION”文件。
结论、解决方案及效果
该问题与jemalloc的版本无关,即与库文件libjemalloc.so.1和libjemalloc.so.2无关,只与上文提到的“VERSION”文件内容有关。
- 删除已有的jemalloc库文件。
rm -rf libjemalloc.so.1 rm -rf libjemalloc.so.2
- 配置编译jemalloc之前,在jemalloc源码包内创建“VERSION”文件,并在“VERSION”文件中增加如下内容:
5.2.1-0-g0000000000000000000000000000000000000000
- 在jemalloc源码路径下重新配置编译生成新的jemalloc库文件。
./autogen.sh Make ./configure make install
- 重新安装TokuDB引擎。
INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';
- 查看TokuDB引擎状态。可以看到TokuDB已经加载成功。
show engines;
父主题: 其他