CockroachLabs公司的CockroachDB(简称CRDB)是一款适合于海量数据环境下高并发OLTP和OLAP场景的开源分布式NewSQL/HTAP数据库。它采用了新的架构和设计、新的分布式理论和算法,吸收了关系型数据库和NoSQL数据库各自的优点,无需应用级的分库分表,具有SQL模型的简单易用、水平弹性扩展、支持强一致性分布事务、异地多活的高可用、云原生等一系列特点。
“外部易用性”是CRDB的核心设计理念之一,它的所有功能都封装在一个二进制可执行程序文件中,可以做到最小化设置和没有外部依赖的简单、直接部署。我们可以非常简单地在Linux、Mac OS、Windows等多种操作系统环境下运行它;此外,CRDB还能够非常方便的在Docker和Kubernetes下运行。
典型地,CRDB支持标准X86/X86-64架构,也能支持ARM-64架构(例如:国产飞腾 + 银河麒麟Linux操作系统)。
本文将向大家分享如何基于开源CockroachDB编译在X86/X86-64架构下运行的版本。
在这里,我们以CockroachDB 2.1.3版本的源码为例说明一般的编译方法。我们需要如下环境:
(1) 一个虚拟机(X86_64,4vCores/8G mem,20G本地存储)
(2) 操作系统:Ubuntu 16.04 LTS
(3) 需要的软件组件:
2. 编译环境安装和配置
(1) 安装操作系统(只需要安装基本的Ubuntu16.04 LTS即可,需要的包可以根据需要在随后安装):
对于虚拟机创建(比如使用VMware或VisualBox)和在虚拟机中安装Ubuntu Linux这里从略,不清楚的可以搜索相应的文章。
在安装完Ubuntu之后,创建的用户在sudo的时候提示需要输入口令。我们以使用如下方法进行修改,使得用户sudo时免口令提示(假设用户名为crdb):
sudo vi /etc/sudoers
在文件中增加:
crdb ALL=(ALL) NOPASSWD:ALL
保存文件退出vi,然后重新登录后起作用。
(2) 安装git
sudo apt-get update
sudo apt-get install git #安装git 2.7.4
(3) 安装ncurses
sudo apt-get install libncurses5-dev
(4) 安装gcc-6.x和g++-6.x
sudo apt-get update
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-6 g++-6
cd /usr/bin
sudo ln -s x86_64-linux-gnu-gcc-6 gcc
sudo ln -s x86_64-linux-gnu-gcc-ar-6 gcc-ar
sudo ln -s x86_64-linux-gnu-gcc-nm-6 gcc-nm
sudo ln -s x86_64-linux-gnu-gcc-ranlib-6 gcc-ranlib
sudo ln -s x86_64-linux-gnu-g++-6 g++
(5) 安装cmake 3.8.1
cd /tmp
wget https://cmake.org/files/v3.8/cmake-3.8.1-Linux-x86_64.sh
chmod +x cmake-3.8.1-Linux-x86_64.sh
sudo bash cmake-3.8.1-Linux-x86_64.sh
sudo mv cmake-3.8.1-Linux-x86_64/ /opt
sudo ln -s /opt/cmake-3.8.1-Linux-x86_64/bin/cmake /usr/local/bin/cmake
cmake --version
(6) 安装make
sudo apt-get install make #make 4.1
(7) 安装autoconf
sudo apt-get install autoconf #autoconf 2.69-9
(8) 安装golang 1.10.7
cd /tmp
wget https://dl.google.com/go/go1.10.7.linux-amd64.tar.gz
sudo tar -C /usr/local -xzvf go1.10.7.linux-amd64.tar.gz
vi .profile
增加如下:
PATH="$HOME/bin:$HOME/.local/bin:$PATH:/usr/local/go/bin"
(9) 安装node js 6.x
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install nodejs=6.16.0-1nodesource1
(10) 安装yarn
wget https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb
sudo dpkg -i yarn_1.7.0_all.deb
检查安装之后的版本:
nodejs -v
yarn -v
3. 编译X86-64 Linux下运行的CockroachDB
(1) 获取CockroachDB源码
cd /home/crdb
mkdir -p cockroach-master/src/github.com/cockroachdb/
cd cockroach-master/src/github.com/cockroachdb/
git clone https://github.com/ cockroachdb/cockroach.git
cd cockroach
git checkout v2.1.3 #以cockroachdb 2.1.3为例
(2) 编译构建
cd /home/crdb/cockroach-master/src/github.com/cockroachdb/cockroach
make build
如果只编译开源版本的功能,执行:
make buildoss