You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-01 06:21:41 +03:00
309 lines
11 KiB
Plaintext
309 lines
11 KiB
Plaintext
# MariaDB ColumnStore Server (version 1.2)
|
|
|
|
This is the server part of MariaDB ColumnStore 1.2.
|
|
MariaDB ColumnStore 1.2 is an GA of MariaDB ColumnStore.
|
|
It is built by porting InfiniDB 4.6.7 on MariaDB 10.3 and adding entirely
|
|
new features not found anywhere else.
|
|
|
|
## MariaDB ColumnStore Engine (version 1.2)
|
|
|
|
MariaDB ColumnStore also requires the matching engine version. This can be found at https://github.com/mariadb-corporation/mariadb-columnstore-engine.
|
|
|
|
Always match the server engine / git branch with the engine git branch.
|
|
|
|
Currently building has only been certified on CentOS 6 and 7, Ubuntu 16.04, Debain 8, and SUSE 12..
|
|
Building on other platforms will be certified in a later release.
|
|
|
|
## Issue tracking
|
|
|
|
Issue tracking of MariaDB ColumnStore happens in JIRA, https://jira.mariadb.org/browse/MCOL
|
|
|
|
### The structure of this repository is:
|
|
|
|
* Branch "master" - this is the latest released version of the source code. Each major release is tagged.
|
|
* Branch "develop-1.0" - this is the 1.0 legacy mainline development branch.
|
|
* Branch "develop-1.1" - this is the 1.1 mainline development branch.
|
|
* Branch "develop" - this is the 1.2 unstable development branch.
|
|
* Branch "mcol-xxx" - these are specific bug and feature branches. These are merged into development which is merged to master.
|
|
|
|
MariaDB ColumnStore server and the engine are in separate repositories.
|
|
|
|
## Contributing
|
|
|
|
To contribute to ColumnStore please see the [Contributions Documentation](CONTRIBUTING.md).
|
|
|
|
## Build dependencies
|
|
|
|
### Boost Libraries
|
|
|
|
MariaDB ColumnStore requires that the boost package of 1.53 or newer is installed for both building and executing
|
|
|
|
For CentOS 7, Ubuntu 16, Debian 8, SUSE 12 and other newer OS's, you can just install the boost packages via yum or apt-get.
|
|
|
|
```bash
|
|
yum install boost-devel
|
|
```
|
|
|
|
or
|
|
|
|
```bash
|
|
apt-get install libboost-dev-all
|
|
```
|
|
or
|
|
|
|
```bash
|
|
SUSEConnect -p sle-sdk/12.2/x86_64
|
|
|
|
zypper install boost-devel
|
|
```
|
|
|
|
For CentOS 6, you can either download and install the MariaDB Columnstore Centos 6 boost library package or install the boost source of 1.55 and build it to generate the required libraries. That means both the build and the install machines require this.
|
|
|
|
Downloading and installing the MariaDB Columnstore Centos 6 boost library package is documented here:
|
|
|
|
https://mariadb.com/kb/en/mariadb/preparing-for-columnstore-installation/#boost-libraries
|
|
|
|
Downloading and build the boost libraries:
|
|
|
|
NOTE: This means that the "Development Tools" group install be done prior to this.
|
|
|
|
```bash
|
|
yum groupinstall "Development Tools"
|
|
yum install cmake
|
|
```
|
|
|
|
Here is the procedure to download and build the boost source:
|
|
|
|
```bash
|
|
cd /usr/
|
|
|
|
wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz
|
|
|
|
tar zxvf boost_1_55_0.tar.gz
|
|
|
|
cd boost_1_55_0
|
|
|
|
./bootstrap.sh --with-libraries=atomic,date_time,exception,filesystem,iostreams,locale,program_options,regex,signals,system,test,thread,timer,log --prefix=/usr
|
|
|
|
./b2 install
|
|
|
|
ldconfig
|
|
```
|
|
|
|
### For CentOS
|
|
|
|
These packages need to be install along with the group development packages:
|
|
|
|
```bash
|
|
yum groupinstall "Development Tools"
|
|
yum install bison ncurses-devel readline-devel perl-devel openssl-devel cmake libxml2-devel gperf libaio-devel libevent-devel python-devel ruby-devel tree wget pam-devel snappy-devel
|
|
```
|
|
|
|
### For Ubuntu 16/18
|
|
|
|
```bash
|
|
apt-get install build-essential automake libboost-all-dev bison cmake libncurses5-dev libreadline-dev libperl-dev libssl-dev libxml2-dev libkrb5-dev flex libpam-dev libsnappy-dev
|
|
```
|
|
### For Debian 8
|
|
|
|
```bash
|
|
apt-get install build-essential automake libboost-all-dev bison cmake libncurses5-dev libreadline-dev libperl-dev libssl-dev libxml2-dev libkrb5-dev flex libpam-dev libkrb5-dev libsnappy-dev
|
|
```
|
|
|
|
### For Debian 9
|
|
|
|
```bash
|
|
apt-get install build-essential automake libboost-all-dev bison cmake libncurses5-dev libreadline-dev libperl-dev libssl1.0-dev libxml2-dev libkrb5-dev flex libpam-dev libkrb5-dev libsnappy-dev libgmp-dev
|
|
apt-get install libxml2-dev lmodern openjdk-8-jdk openssl pkg-config scons texlive-latex-base texlive-latex-base-doc thrift-compiler ttf-dejavu ttf-dejavu-extra unixodbc-dev uuid-dev xfonts-encodings xfonts-utils zlib1g-dev
|
|
```
|
|
### For Suse 12
|
|
|
|
These packages need to be install along with the group development packages:
|
|
|
|
```bash
|
|
zypper se -t pattern devel
|
|
zypper install bison ncurses-devel readline-devel perl-devel openssl-devel cmake libxml2-devel gperf libaio-devel libevent-devel python-devel ruby-devel tree wget pam-devel snappy-devel
|
|
```
|
|
|
|
|
|
## Building master branch
|
|
|
|
The current master branch is the released version.
|
|
|
|
## Building develop branch
|
|
|
|
The develop branch is used for develop updates
|
|
|
|
Building can be done as a non-root user. If you do a "build install", it will install the binaries in `/usr/local/mariadb/columnstore`
|
|
and the use of sudo is required.
|
|
|
|
To build the current development branch binaries only (Engine checkout inside Server):
|
|
```bash
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-server.git
|
|
cd mariadb-columnstore-server
|
|
git checkout develop # switch to develop code
|
|
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb/columnstore/mysql
|
|
make -jN # N is the number of concurrent build processes and should likely be the number of cores available
|
|
sudo make install
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
|
|
cd mariadb-columnstore-engine
|
|
git checkout develop
|
|
cmake .
|
|
make -jN # same as above with respect to concurrent processes
|
|
sudo make install
|
|
```
|
|
|
|
To build the current development branch binaries and packages only (Engine checkout inside Server):
|
|
```bash
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-server.git
|
|
cd mariadb-columnstore-server
|
|
git checkout develop # switch to develop code
|
|
run cmake
|
|
For RPMs:
|
|
cmake . -DWITH_READLINE=1 -DRPM=centos6 -DPLUGIN_CONNECT=NO -DWITH_WSREP=OFF -DINSTALL_LAYOUT=RPM -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb/columnstore/mysql -DCPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION=/usr/local
|
|
For DEBIANs:
|
|
cmake . -DWITH_READLINE=1 -DDEB=xenial -DPLUGIN_CONNECT=NO -DWITH_WSREP=OFF -DINSTALL_LAYOUT=DEB -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb/columnstore/mysql/ -DCPACK_DEB_EXCLUDE_FROM_AUTO_FILELIST_ADDITION=/usr/local
|
|
make -jN # N is the number of concurrent build processes and should likely be the number of cores available
|
|
sudo make install
|
|
make package
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
|
|
cd mariadb-columnstore-engine
|
|
git checkout develop
|
|
run cmake
|
|
For RPMs"
|
|
cmake . -DRPM=centos6
|
|
For DEBIANs:
|
|
cmake . -DDEB=xenial
|
|
make -jN # same as above with respect to concurrent processes
|
|
sudo make install
|
|
make package
|
|
```
|
|
|
|
With the engine checked out in a separate location the following values need to be set by cmake command.
|
|
|
|
```bash
|
|
SERVER_BUILD_INCLUDE_DIR=Path to the server build include directory.
|
|
SERVER_SOURCE_ROOT_DIR=Path the directory the server source checked out from github.
|
|
```
|
|
|
|
### Examples
|
|
|
|
Engine not located inside server:
|
|
|
|
```bash
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-server.git
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
|
|
cd mariadb-columnstore-server
|
|
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb/columnstore/mysql
|
|
make -jN # N is the number of concurrent build processes and should likely be the number of cores available
|
|
sudo make install
|
|
cd ../mariadb-columnstore-engine
|
|
cmake . -DSERVER_BUILD_INCLUDE_DIR=../mariadb-columnstore-server/include -DSERVER_SOURCE_ROOT_DIR=../mariadb-columnstore-server
|
|
make -jN # same as above with respect to concurrent processes
|
|
sudo make install
|
|
```
|
|
|
|
Build out-of-source:
|
|
|
|
```bash
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-server.git
|
|
git clone https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
|
|
mkdir buildServer
|
|
cd buildServer
|
|
cmake ../mariadb-columnstore-server -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb/columnstore/mysql
|
|
make -jN # N is the number of concurrent build processes and should likely be the number of cores available
|
|
sudo make install
|
|
cd ..
|
|
mkdir buildEngine
|
|
cd buildEngine
|
|
cmake ../mariadb-columnstore-engine -DSERVER_BUILD_INCLUDE_DIR=../buildServer/include -DSERVER_SOURCE_ROOT_DIR=../mariadb-columnstore-server
|
|
make -jN # same as above with respect to concurrent processes
|
|
sudo make install
|
|
```
|
|
|
|
To build a debug version
|
|
* Add `-DCMAKE_BUILD_TYPE=debug -DPLUGIN_TOKUDB=NO` to each of the cmake commands in the build process
|
|
* Do not mix release and debug versions of server and engine
|
|
|
|
To develop a new branch/feature/pull request
|
|
* Fork the server repo from github `mariadb-corporation/mariadb-columnstore-server`
|
|
* Fork the engine report from github `mariadb-corporation/mariadb-columnstore-engine`
|
|
* `git checkout develop #branch in server`
|
|
* `git submodule update --init`
|
|
* `git branch new-branch-name` (this can be in engine or server code)
|
|
* `git checkout new-branch-name`
|
|
* Edit source files
|
|
* `git commit -m 'meaningful checkin comment'`
|
|
* `git push -u origin new-branch-name`
|
|
* Issue pull request for merge from new-branch-name into develop
|
|
* MariaDB ColumnStore team will evaluate the changes and may request further development or changes before merge
|
|
|
|
## Run dependencies
|
|
|
|
## For CentOS
|
|
|
|
For CentOS 6 follow the install procedure for boost from the build Dependecy section above, with CentOS 7 you can just do:
|
|
|
|
```bash
|
|
yum install boost
|
|
```
|
|
|
|
In addition these packages need to be install:
|
|
|
|
```bash
|
|
yum install expect perl perl-DBI openssl zlib file sudo libaio rsync snappy net-tools nmap
|
|
```
|
|
|
|
## For Ubuntu 16/18
|
|
|
|
These packages need to be installed:
|
|
|
|
```bash
|
|
apt-get install expect perl openssl file sudo libdbi-perl libboost-all-dev libreadline-dev rsync libsnappy1v5 net-tools nmap
|
|
```
|
|
|
|
## For Debian 8
|
|
|
|
These packages need to be installed:
|
|
|
|
```bash
|
|
apt-get install expect perl openssl file sudo libdbi-perl libboost-all-dev libreadline-dev rsync libsnappy1 net-tools nmap
|
|
```
|
|
## For Debian 9
|
|
|
|
These packages need to be installed:
|
|
|
|
```bash
|
|
apt-get install expect perl openssl file sudo libdbi-perl libboost-all-dev libreadline-dev rsync net-tools libsnappy1v5 libreadline5 nmap
|
|
```
|
|
## For SUSE 12
|
|
|
|
These packages need to be installed:
|
|
|
|
SUSEConnect -p sle-sdk/12.2/x86_64
|
|
zypper install boost-devel
|
|
|
|
```bash
|
|
zypper install expect perl perl-DBI openssl file sudo libaio1 rsync net-tools libsnappy1 nmap
|
|
```
|
|
|
|
## MariaDB ColumnStore utilizes the System Logging for logging purposes
|
|
|
|
So you will want to make sure that one of these system logging packages is installed:
|
|
|
|
syslog, rsyslog, or syslog-ng
|
|
|
|
## Configure and Starting of MariaDB ColumnStore
|
|
|
|
Follow the binary package install instructions in the ColumnStore Getting Starter Guide:
|
|
|
|
https://mariadb.com/kb/en/mariadb/columnstore-getting-started/
|
|
|
|
Commands to run as root user:
|
|
|
|
```bash
|
|
cd /usr/local/mariadb/columnstore/bin/
|
|
./post-install
|
|
./postConfigure
|
|
```
|