MyRocks_zh_doc

构建步骤

支持的操作系统平台

我们正式支持的平台如下:

CentOS 6.8 
CentOS 7.2.x

我们在内部验证构建的编译器工具集如下:

gcc 4.9.0
gcc 5.4.0
gcc 6.1.0
Clang 3.9.0

注意:我们不再内部测试gcc 4.8.1,但支持在外部使用它

尽最大努力支持如下系统

Ubuntu 14.04.4 LTS
Ubuntu 15.10
Ubuntu 16.04 LTS

已知问题

不支持在Fedora和CentOS 7上启用DTRACE 进行编译(适用于Ubuntu 15.10),使用-DENABLE_DTRACE = 0选项,可以使用cmake来禁用DTRACE

如果您正在使用任何其他平台,那么我们将非常感谢您帮助MyRocks编译 并且能够正常提供工作使用。

在 Ubuntu 14.04.2 LTS 安装

配置先决条件

在全新的AWS Ubuntu 14.04.2 LTS 实例上

sudo apt-get update
sudo apt-get -y install g++ cmake libbz2-dev libaio-dev bison \
zlib1g-dev libsnappy-dev libboost-all-dev
sudo apt-get -y install libgflags-dev libreadline6-dev libncurses5-dev \
libssl-dev liblz4-dev gdb git libzstd-dev libzstd0  

在 Ubuntu Bionic上,zstd位于不同的包中

sudo apt-get -y install libzstd1 libzstd1-dev

出于某种原因,某些机器(例如:在AWS EC2上) 仍然需要这样做

sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/libz.so

如果你打算运行MTR测试,他们使用python和DBD:MYSQL,所以你需要

sudo apt-get install -y python python-mysqldb
sudo apt-get install -y libdbd-mysql libdbi-perl libdbd-mysql-perl

在 Fedora 和 Redhat 上

sudo yum install cmake gcc-c++ bzip2-devel libaio-devel bison \
zlib-devel snappy-devel boost-devel

sudo yum install gflags-devel readline-devel ncurses-devel \
openssl-devel lz4-devel gdb git 

然后设置 git 存储库

git clone https://github.com/facebook/mysql-5.6.git
cd mysql-5.6
git submodule init
git submodule update

然后执行cmake,如果你想获得更好的性能,那么首先构建纯RocksDB以查看它使用的哪些标志,MyRocks构建将不适用来自RocksDB的build_tools/build_detect_platform ,并且可能不使用最佳标志,即使MyRocks的CMakeLists.txt将自动检测某些标志。 有关详细信息,请参考 issue 837(https://github.com/facebook/mysql-5.6/issues/837)

cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_SSL=system \
-DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE=0 -DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 -DCMAKE_CXX_FLAGS="-march=native" \
-DWITH_ZSTD=/usr  

然后编译

make -j8

不同的构建类型

添加对压缩库的支持

RocksDB 本身支持多种压缩算法,默认情况下,MyRocks仅与Zlib链接,您还可以添加对Snappy,BZip2,LZ4和ZSTD库的支持。 您需要知道特性压缩算法的静态库。您需要知道特定压缩算法的静态库(.a文件)的位置。然后设置环境变量以要求在编译时包含库。

让我们看一个假设我们想要使用Snappy的例子,我们知道libsnappy.a位于/usr/lib/x86_64-linux-gnu下,因此我们将按如下方式设置:WITH_SNAPPY

export 
cmake ... -DWITH_SNAPPY=/usr/lib/x86_64-linux-gnu
make ...

以类似的方式,您可以设置 WITH_BZ2,WITH_LZ4 和 WITH_ZSTD以支持BZip2,LZ4和ZSTD

运行MTR测试

cd mysql-test
./mysql-test-run.pl --mem --async-client --parallel=16 --fast \
--max-test-fail=1000 --retry=0 --force --mysqld=--rocksdb \
--mysqld=--default-storage-engine=rocksdb --mysqld=--skip-innodb \
--mysqld=--default-tmp-storage-engine=MyISAM --suite=rocksdb

安装 linkbench

sudo apt-get install openjdk-7-jdk maven
git clone https://github.com/facebook/linkbench.git
cd linkbench;
mvn clean package -P fast-test

也可以看看

Building MyRocks in MariaDB (https://mariadb.com/kb/en/library/building-myrocks-in-mariadb/)