在centos/redhat6.5上编译Mariadb…

来源:互联网 发布:自适应二值化算法 编辑:程序博客网 时间:2024/06/14 06:23
Mariadb支持tokudb的引擎,但官方下载的binarytar包中只有带有glibc_214的才带有tokudb引擎。

顾名思义,带有“glibc_214”的安装包只有在带有glibc2.14版本的操作系统上才可以安装使用,而centos/redhat6.5上默认的版本是glibc 2.12 。。。。


tokudb官方的提供的mariadb/mysql版本可以直接在centos/redhat6.5上安装,但官方只有MySQL5.5.39 和 MariaDB 5.5.39版本,也就是说无法使用mysql5.6的一些新特性了。。。
官方的下载地址如下:
http://www.tokutek.com/tokudb-for-mysql/download-community/

如果只是想在mysql5.6上用tokudb的话,可以使用percona编译的版本:
http://www.percona.com/downloads/Percona-Server-5.6/LATEST/binary/tarball/
下载:
Percona-Server-5.6.21-rel69.0-675.Linux.x86_64.tar.gz 和
Percona-Server-5.6.21-rel69.0-675.TokuDB.Linux.x86_64.tar.gz
同时解压就可以用了,该本版支持centos/redhat6.5。

但如果想在mariadb10上使用tokudb就只能自己编译了。。。。

环境准备:
tokudb的编译需要cmake 2.8.9+ 和 gcc 4.7+

本文选用cmake 2.8.9 和 gcc4.8.1。
这2个软件都只能使用源码编译安装。

cmake的很简单,直接下载
wget http://www.cmake.org/files/v2.8/cmake-2.8.9.tar.gz
然后解压进行编译
./configure
make & make install

对于gcc 4.8.1的安装 可以参考我转载的博文《转:CentOS 6.4 编译安装 gcc 4.8.1

下载mariadb源码

 https://downloads.mariadb.org/mariadb/10.0.14/


编译带tokudb的mariadb

首先需要修改tokudb的cmake编译文件,去掉fuse-linker-plugin相关内容
修改mariadb-10.0.14/storage/tokudb/ft-index/cmake_modules/TokuSetupCompiler.cmake
去掉所有的 -fuse-linker-plugin :
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-flto-fuse-linker-plugin ${CMAKE_C_FLAGS_RELWITHDEBINFO} -g -O3-UNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-flto-fuse-linker-plugin ${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3-UNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-g -O3 -flto-fuse-linker-plugin ${CMAKE_C_FLAGS_RELEASE} -UNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-g -O3 -flto-fuse-linker-plugin ${CMAKE_CXX_FLAGS_RELEASE} -UNDEBUG")
set(CMAKE_EXE_LINKER_FLAGS "-g-fuse-linker-plugin ${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "-g-fuse-linker-plugin ${CMAKE_SHARED_LINKER_FLAGS}")

  set(CMAKE_C_FLAGS_RELWITHDEBINFO"-flto  ${CMAKE_C_FLAGS_RELWITHDEBINFO} -g -O3-UNDEBUG")
  set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-flto${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -O3 -UNDEBUG")
  set(CMAKE_C_FLAGS_RELEASE "-g -O3-flto  ${CMAKE_C_FLAGS_RELEASE} -UNDEBUG")
  set(CMAKE_CXX_FLAGS_RELEASE "-g -O3-flto  ${CMAKE_CXX_FLAGS_RELEASE} -UNDEBUG")
  set(CMAKE_EXE_LINKER_FLAGS "-g ${CMAKE_EXE_LINKER_FLAGS}")
  set(CMAKE_SHARED_LINKER_FLAGS"-g  ${CMAKE_SHARED_LINKER_FLAGS}")

然后是/home/gao-compile/mariadb-10.0.14/storage/tokudb/CMakeLists.txt
去掉所有的 -fuse-linker-plugin :
#SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE"${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto-fuse-linker-plugin")
#SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO"${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto-fuse-linker-plugin")

SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE"${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto")
SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO"${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto")

然后进行编译:
cd mariadb-10.0.14
mkdir release
./BUILD/compile-pentium64-max--prefix=/home/gao-compile/mariadb-10.0.14/release
make install

然后在/home/gao-compile/mariadb-10.0.14/release/lib/plugin 目录中找到ha_tokudb.so动态库。
这个就是我们要的东西了!

注:其实可以直接在mariadb-10.0.14/storage/tokudb目录中直接进行编译,而不用去编译整个mariadb,因为编译出来的也无法使用,mysqld可执行程序依赖GLIBCXX_3.4.15
[root@GXX release]# ldd bin/mysqld
bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' notfound (required by bin/mysqld)


安装使用tokudb

从mariadb官网下载10.0.14的不带tokudb的可执行程序tar包,然后将我们编译好的tokudb.so拷贝到
[maradb10.0.14]/lib/plugin/下

然后安装这个mariadb,然后
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo
never > /sys/kernel/mm/transparent_hugepage/defrag

然后启动mariadb

然后登录并执行

INSTALL SONAME 'ha_tokudb';

然后执行show engines,应该可以看到tokudb

最后就爱干啥干啥了 ^-^


转载请注明转自高孝鑫的博客。

0 0
原创粉丝点击