1. 编译前准备工作
1.1 编译环境版本
Linux WEB-002 4.4.131-20190726.kylin.server-generic #kylin SMP Tue Jul 30 16:44:09 CST 2019 aarch64 aarch64 aarch64 GNU/Linux
Clickhouse v20.3.19.4-lts
cmake-3.18.4
LLVM 10.0.1 (Clang 10.0.1)
gcc-9.2.0
gmp-6.1.0
isl-0.18
mpfr-3.1.4
mpc-1.0.3
1.2 下载clickhouse源码和依赖
git clone https://github.com/ClickHouse/ClickHouse.git
cd ClickHouse
git checkout v20.3.19.4-lts
git submodule update --init --recursive
最新版lts版为20.8.6.6
如果你是稳定性优先的用户,可以选择 LTS 版本;
如果你是新特性优先的用户,使用普通的 stable 版本即可。
2. 编译安装cmake-3.18.4
1)安装依赖
sudo apt-get install libssl-dev qt4-qmake
2) 解压cmake
tar -xvf cmake-3.18.4.tar.gz
3) 编译cmake
cd cmake-3.18.4
chmod 777 ./bootstrap
./bootstrap
4) 安装cmake
make -j64 && make install //开64线程编译,取cpu线程数
cmake --version
3. 编译安装GCC编译器
3.1 安装依赖和解压gcc
apt-get install bzip2 m4
tar xvf gcc-9.2.0.tar.xz
cd gcc-9.2.0
# gcc编译依赖gmp、mpfr、mpc、isl四个库,移动gcc依赖包到gcc解压目录
mv gmp-6.1.0.tar.bz2 isl-0.18.tar.bz2 mpfr-3.1.4.tar.bz2 mpc-1.0.3.tar.gz gcc-9.2.0/
3.2 安装gmp
tar xf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure
make -j 64 && make install
3.4 安装isl
cd ..
tar xf isl-0.18.tar.bz2
cd isl-0.18
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
echo "export LD_LIBRARY_PATH=/usr/local/lib:\$LD_LIBRARY_PATH" >> /etc/profile
./configure
make -j 64 && make install
3.5 安装mpfr
cd ..
tar xf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure
make -j 64 && make install
3.6 安装mpc
cd ..
tar xf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make -j 64 && make install
3.7 GCC编译配置
cd ..
./configure --enable-languages=c,c++ --disable-multilib #disable-multilib表示编译64位
make -j 64 # -j 参数指定并行数,CPU核够用的话会快点,这一步要很久
make install
ln -sf /usr/local/bin/gcc /usr/local/bin/gcc-9
ln -sf /usr/local/bin/g++ /usr/local/bin/g++-9
ln -sf /usr/local/bin/gcc /usr/local/bin/cc
ln -sf /usr/local/bin/g++ /usr/local/bin/c++
echo '/usr/local/lib64' | tee /etc/ld.so.conf.d/10_local-lib64.conf
ldconfig
cp /usr/local/lib64/libstdc++.so.6.0.27 /usr/lib/aarch64-linux-gnu/
cd /usr/lib/aarch64-linux-gnu/
ll libstdc++.so.6
lrwxrwxrwx 1 root root 19 11月 11 2019 libstdc++.so.6 -> libstdc++.so.6.0.21
ln -sf libstdc++.so.6.0.27 libstdc++.so.6
hash gcc g++ #这一步改变版本,这样就能使用刚刚安装的GCC版本了
gcc --version #即可看到最新版本
g++ --version #即可看到最新版本
4. 编译安装clang编译器
1) 解压clang包
tar -xvf llvm-project-llvmorg-10.0.1.tar.gz
cd llvm-project-llvmorg-10.0.1
2) 编译llvm
cd llvm
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
3) 安装llvm
make -j64 && make install
4) 编译clang-10(注意:编译clang-10需要指定llvm的路径)
cd clang
mkdir build && cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release --enable-optimized --enable-targets=host-only ../../llvm -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;compiler-rt;clang-tools-extra;openmp;lldb;lld"
5) 安装clang-10
make -j64 && make install
6)查看版本
llvm-config --version
clang --version
5. 编译安装Clickhouse
5.1 采用clang编译
1) AArch64架构需要使用Clang编译器,X86架构可直接使用GCC编译器
cd ClickHouse
export CC=clang; export CXX=clang++; rm -rf build; mkdir -p build && cd build;cmake .. -DENABLE_TCMALLOC=OFF -DENABLE_JEMALLOC=OFF -DCMAKE_INSTALL_PREFIX=/opt/clickhouse
2) 执行编译
make -j64
3) 执行安装
make install
6. 测试验证
编译成功完成后会输出到 -DCMAKE_INSTALL_PREFIX 指定的目录/opt/clickhouse
6.1 配置环境变量
vim /etc/profile
# 添加如下两行
export PATH=/opt/clickhouse/bin:$PATH
export LD_LIBRARY_PATH=/opt/clickhouse/lib:$LD_LIBRARY_PATH
source /etc/profile
6.2 准备数据库配置文件
mkdir /opt/clickhouse/config
# 将config.xml 和 users.xml 文件从源码目录复制过来
cp ClickHouse/programs/server/config.xml /opt/clickhouse/config/
cp ClickHouse/programs/server/users.xml /opt/clickhouse/config/
6.3 启动
clickhouse-server --config-file=/opt/clickhouse/config/config.xml
6.4 后台启动
后台启动命令:
clickhouse-server --daemon --config-file=/opt/clickhouse/config/config.xml
查看状态:
cat /var/lib/clickhouse/status
客户端登陆:
clickhouse-client -m
6.5 一些默认目录
配置文件路径:
/opt/clickhouse/config/config.xml /opt/clickhouse/config/users.xml
日志文件路径:
/var/log/clickhouse-server/
表信息路径、元数据存储目录:
/var/lib/clickhouse/metadata/
表数据路径:
/var/lib/clickhouse/data/