由于clickhouse的发布比较频繁,目前版本为20.7 尚未支持与mysql同步,故编译了git上最新的版本 20200909--版本号为20.9。
环境信息
系统版本:Red Hat Enterprise Linux Server release 7.7 (Maipo) uname -a:3.10.0-1062.el7.x86_64服务器配置:32c 250g 1T(使用8c16g虚拟机编译失败,原因为内存不足导致编译进程OOM) mysql版本:8.0.19 gcc版本:9.3.0 cmake版本:3.14.5 ninja版本:1.9.0下载安装包
ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz解压
tar xvf gcc-9.3.0.tar.xz安装
cd gcc-9.3.0 ./contrib/download_prerequisites此步骤会下载依赖包,如无无法连接外网可通过链接下载
链接:https://pan.baidu.com/s/1JHv1WAS43S89LXA6PkevTg 提取码:nb35包名如下
gmp-6.1.0.tar.bz2mpfr-3.1.4.tar.bz2 mpc-1.0.3.tar.gzisl-0.18.tar.bz2使用方式: 将包cp到gcc-9.3.0目录下即可
然后执行
./contrib/download_prerequisites ---与上一步相同无需重复执行 mkdir build cd build../configure --prefix=/opt/gcc9 --enable-languages=c,c++ --disable-multilib export THREADS=$(grep -c ^processor /proc/cpuinfo) make -j $THREADS make install编译所需时间较长=。=
后续操作 由于gcc 升级之后会造成类似如下报错
ninja: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ninja)解决办法如下
find / -name "libstdc++.so.6*"找到系统中版本最高的gcc目录,例如此前的安装目录
/opt/gcc9/lib64/libstdc++.so.6.0.28 /opt/gcc9/lib64/libstdc++.so.6 /opt/gcc9/lib64/libstdc++.so.6.0.28-gdb.py备份报错的 libstdc++.so
mv /lib64/libstdc++.so.6 /lib64/libstdc++.so.6_bak将高版本的libstdc++复制到/lib64目录下
cp /opt/gcc9/lib64/libstdc++.so.6 /lib64/libstdc++.so.6 ln -s /opt/gcc9/lib64/libstdc++.so.6.0.28 /lib64/libstdc++.so.6 ----(一般执行上一步就可以了)验证
[root@mini test]# ./ninja --version 1.9.0安装cmake 3,保留替换系统默认的 准备软件
wget https://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.tar.gz tar zxvf cmake-3.14.5-Linux-x86_64.tar.gz -C /opt ln -s cmake-3.14.5-Linux-x86_64 cmake添加环境变量
vim /etc/profile export CMAKE_HOME=/opt/cmake export PATH=$CMAKE_HOME/bin:$PATH source /etc/profile验证
[root@mini test]# cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake).下载
wget https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zip unzip ninja-linux.zip -d /usr/local/bin/添加环境变量
测试版本:
# ninja --version 1.9.0处理方法见:gcc 9.3.0编译安装
该过程耗时大概3小时
安装成功后,将clickhouse命令以及参数文件拷贝到指定目录
mkdir -p /usr/local/clickhouse/etccd /tools/ClickHouse/programs/server ---其中/tools/ClickHouse 为clickhouse git文件根目录 cp config.xml /usr/local/clickhouse/etc cp users.xml /usr/local/clickhouse/etc将clickhouse执行文件copy 到/usr/local/clickhouse/bin
mkdir -p /usr/local/clickhouse/bin cp /tools/ClickHouse/build/programs/clickhouse /usr/local/clickhouse/bin配置环境变量
vim /etc/profile添加:/usr/local/clickhouse/bin source /etc/profiel启动clickhouse-server,注意启动之前设置配置文件中PATH目录(clickhouse数据目录 并给对应目录赋权)
nohup clickhouse server --config-file=/usr/local/clickhouse/etc/config.xml > /tmp/clickhouse.log 2>&1 &启动客户端
clickhouse client输出:
ClickHouse client version 20.9.1.1. Connecting to localhost:9000 as user default. to ClickHouse server version 20.9.1 revision 54439. XXXXXXXX :)至此clickhouse编译安装完成,以下为搭建mysql复制过程
准备一套与clickhouse服务器网络通畅的mysql,本文使用的MySQL版本为8.0.19
clickhouse创建复制(目前以 database 为单位进行复制,不同的 database 可以来自不同的 MySQL master,这样就可以实现多个 MySQL 源数据同步到一个 ClickHouse 做 OLAP 分析功能。)
CREATE DATABASE sbtest ENGINE = MaterializeMySQL( 'MYSQL_IP:MYSQL_PORT', 'DATABASE_NAME', 'USER_NAME', 'PASSWORD'); CREATE DATABASE sbtest ENGINE = MaterializeMySQL( 'XXXXXXXX:3306', 'clickhouse', 'clickhous', 'rpl_user');如报错
Received exception from server (version 20.9.1):Code: 537. DB::Exception: Received from localhost:9000. DB::Exception: Illegal MySQL variables, the MaterializeMySQL engine requires default_authentication_plugin='mysql_native_password'.在MYSQL端调整改参数并重启(read_only参数)default_authentication_plugin='mysql_native_password'
查看同步位点
看下 ClickHouse 的同步位点
cat /var/lib/clickhouse/metadata/clickhouse/.metadata Version: 2 Binlog File: bin.000004 Executed GTID: 45b22def-f329-11ea-acf1-3497f600d5bb:1-69:1000068 Binlog Position: 10006至此slave搭建成功。
| 作者简介
赵梓州 | 现职于甜橙金融(中国电信翼支付),数据库工程师。
主要负责 MySQL、Redis、MongoDB、TIDB等相关开源数据库运维工作。
喜欢学习分享技术,和大家共同提高!
全文完。
Enjoy ClickHouse :)
知数堂精品课程,MySQL、SQL优化、Python、Elastic等。
MySQL课程已全面升级到MySQL 8.0版本,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。
加入知数堂
挑战50万+年薪!
知数堂《MySQL实战优化课》已正式上线腾讯课堂,扫码入群了解课程详情吧,撩助教妹子还有优惠哟