-
Notifications
You must be signed in to change notification settings - Fork 714
Build Steps
The subset of platforms we officially support is following:
- CentOS 6.8
- CentOS 7.2.x
Compiler toolsets we verify our builds internally are the following:
- gcc 4.9.0
- gcc 5.4.0
- gcc 6.1.0
- Clang 3.9.0
Note: We no longer test against gcc 4.8.1 internally but support it's use externally.
Best effort is made to support the following OS-s:
- Ubuntu 14.04.4 LTS
- Ubuntu 15.10
- Ubuntu 16.04 LTS
- Compiling with DTRACE enabled on Fedora and Centos 7 is not supported (works fine with Ubuntu 15.10). Use -DENABLE_DTRACE=0 option for cmake for disabling DTRACE.
If you're using any other platform then we would appreciate your help with getting MyRocks compiling and working there!
On a fresh AWS Ubuntu 14.04.2 LTS instance:
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
On Ubuntu Bionic, zstd is in a different package:
sudo apt-get -y install libzstd1 libzstd1-dev
For some reason, this is still needed on some machines (e.g. on AWS EC2):
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/libz.so
On Ubuntu 18.04.1, gcc produces extra warnings so the following is needed:
export CFLAGS="-Wno-implicit-fallthrough -Wno-int-in-bool-context \
-Wno-shift-negative-value -Wno-misleading-indentation \
-Wno-format-overflow -Wno-nonnull -Wno-unused-function"
export CXXFLAGS="-Wno-implicit-fallthrough -Wno-int-in-bool-context \
-Wno-shift-negative-value -Wno-misleading-indentation \
-Wno-format-overflow -Wno-nonnull -Wno-unused-function \
-Wno-aligned-new"
If you intend to run MTR tests, they use python and DBD::MySQL, so you'll need:
sudo apt-get install -y python python-mysqldb
sudo apt-get install -y libdbd-mysql libdbi-perl libdbd-mysql-perl
On Fedora and perhaps 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
sudo yum install libzstd-devel
# For MTR tests:
sudo yum install perl-Digest-MD5 perl-DBD-MySQL perl-DBI MySQL-python
Then setup the git repository:
git clone https://github.com/facebook/mysql-5.6.git
cd mysql-5.6
git submodule update --init --recursive
Then run cmake. But if you want the best performance then build pure RocksDB first to see which flags it uses. The MyRocks build won't use build_tools/build_detect_platform from RocksDB and might not use the best flags even though CMakeLists.txt for MyRocks will auto-detect some flags. See issue 837 for details.
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
Then compile
make -j8
- If you need a debug build, run CMake as follows.
cmake . -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=system \
-DWITH_ZLIB=bundled -DMYSQL_MAINTAINER_MODE=1 -DENABLE_DTRACE=0 \
-DWITH_ZSTD=/usr
- If you want to produce a TSan build then now you can do this by adding the following option to CMake command-line:
-DWITH_TSAN=1
- If you want to produce a UBSan build then now you can do this by adding the following option to CMake command-line:
-DWITH_UBSAN=1
- If you want to build with Clang (verified on Ubuntu 16.04 LTS) then you can do this by adding the following switches to the CMake command-line:
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
RocksDB itself supports multiple compression algorithms. By default, MyRocks only links with Zlib. You can add support for Snappy, BZip2, LZ4, and ZSTD libraries as well. You will need to know where a static library (.a
file) for a particular compression algorithm is located and then set an environment variable to require including the library at a compile time.
Let's look at an example which assumes that we want to use Snappy. We know that libsnappy.a
is located under /usr/lib/x86_64-linux-gnu
and therefore we'll set WITH_SNAPPY
as follows:
export
cmake ... -DWITH_SNAPPY=/usr/lib/x86_64-linux-gnu
make ...
In a similar manner you can set WITH_BZ2
, WITH_LZ4
, and WITH_ZSTD
to support BZip2, LZ4, and 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
See also Running-MTR-Tests-for-MyRocks.
sudo apt-get install openjdk-7-jdk maven
git clone https://github.com/facebook/linkbench.git
cd linkbench;
mvn clean package -P fast-test
Documentation license here.
Installation
MyRocks
- Overview
- Transaction
- Backup
- Performance Tuning
- Monitoring
- Migration
- Internals
- Vector Database
DocStore
- Document column type
- Document Path: a new way to query JSON data
- Built-in Functions for JSON documents
MySQL/InnoDB Enhancements