我们正式支持的平台如下:
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编译 并且能够正常提供工作使用。
在全新的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
如果你需要一个debug模式的构建,运行 CMake 如下
cmake . -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=system
-DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE=1 -DENABLE_DTRACE=0
-DWITH_ZSTD=/usr
如果要生成TSan构建,那么现在可以通过向CMake命令行添加以下选项来完成此操作
-DWITH_TSAN=1
如果要生成UBSan构建,那么现在可以通过向CMake命令添加以下选项来完成此操作
-DWITH_UBSAN=1
如果你想用Clang构建(在Ubuntu 16.04 LTS上验证),你可以通过在CMake命令行中添加以下开关来实现
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
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
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
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/)