clickhouse编译安装以及搭建mysql实时复制

由于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.19gcc版本:9.3.0cmake版本:3.14.5ninja版本:1.9.0一.安装前检查grep-qsse4_2/proc/cpuinfo&&echo”SSE4.2supported”||echo”SSE4.2notsupported”二.安装依赖包yuminstallgitcmakeninja-buildlibicu-develclanglibicu-develreadline-develmysql-developenssl-develunixODBC_develbzip2-y三.源码获取gitclone–recursivehttps://github.com/ClickHouse/ClickHouse四.安装高版本 gcc下载安装包ftp://gnu.mirror.iweb.com/gcc/gcc-9.3.0/gcc-9.3.0.tar.xz解压tarxvfgcc-9.3.0.tar.xz安装cdgcc-9.3.0./contrib/download_prerequisites此步骤会下载依赖包,如无无法连接外网可通过链接下载
链接:https://pan.baidu.com/s/1JHv1WAS43S89LXA6PkevTg 提取码:nb35包名如下
gmp-6.1.0.tar.bz2mpfr-3.1.4.tar.bz2mpc-1.0.3.tar.gzisl-0.18.tar.bz2使用方式:将包cp到gcc-9.3.0目录下即可
然后执行
./contrib/download_prerequisites—与上一步相同无需重复执行mkdirbuildcdbuild../configure–prefix=/opt/gcc9–enable-languages=c,c++–disable-multilibexportTHREADS=$(grep-c^processor/proc/cpuinfo)make-j$THREADSmakeinstall编译所需时间较长=。=
后续操作 由于gcc 升级之后会造成类似如下报错ninja:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.21’notfound(requiredbyninja)解决办法如下
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.6ln-s/opt/gcc9/lib64/libstdc++.so.6.0.28/lib64/libstdc++.so.6—-(一般执行上一步就可以了)验证
[root@minitest]#./ninja–version1.9.0
五.安装cmake 3版本安装cmake 3,保留替换系统默认的 准备软件
wgethttps://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.tar.gztarzxvfcmake-3.14.5-Linux-x86_64.tar.gz-C/optln-scmake-3.14.5-Linux-x86_64cmake添加环境变量
vim/etc/profileexportCMAKE_HOME=/opt/cmakeexportPATH=$CMAKE_HOME/bin:$PATHsource/etc/profile验证
[root@minitest]#cmake–versioncmakeversion3.14.5CMakesuitemaintainedandsupportedbyKitware(kitware.com/cmake).六.安装ninja-1.9.0下载
wgethttps://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-linux.zipunzipninja-linux.zip-d/usr/local/bin/添加环境变量
测试版本:
#ninja–version1.9.0报错处理:[root@minitest]#./ninja./ninja:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.21’notfound(requiredby./ninja)./ninja:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.20’notfound(requiredby./ninja)处理方法见:gcc 9.3.0编译安装
七.源码安装ClickhousecdClickHousemkdirbuildcdbuildexportCC=gcc-9exportCXX=g++-9cmake..ninja该过程耗时大概3小时
安装成功后,将clickhouse命令以及参数文件拷贝到指定目录
mkdir-p/usr/local/clickhouse/etccd/tools/ClickHouse/programs/server—其中/tools/ClickHouse为clickhousegit文件根目录cpconfig.xml/usr/local/clickhouse/etccpusers.xml/usr/local/clickhouse/etc将clickhouse执行文件copy 到/usr/local/clickhouse/bin
mkdir-p/usr/local/clickhouse/bincp/tools/ClickHouse/build/programs/clickhouse/usr/local/clickhouse/bin配置环境变量
vim/etc/profile添加:/usr/local/clickhouse/binsource/etc/profiel启动clickhouse-server,注意启动之前设置配置文件中PATH目录(clickhouse数据目录 并给对应目录赋权)
nohupclickhouseserver–config-file=/usr/local/clickhouse/etc/config.xml>/tmp/clickhouse.log2>&1&启动客户端
clickhouseclient输出:
ClickHouseclientversion20.9.1.1.Connectingtolocalhost:9000asuserdefault.toClickHouseserverversion20.9.1revision54439.XXXXXXXX:)至此clickhouse编译安装完成,以下为搭建mysql复制过程
准备一套与clickhouse服务器网络通畅的mysql,本文使用的MySQL版本为8.0.19
一.创建复制用户(需要的最小权限未测试)mysql>createuserclickhouse@’%’identifiedWITHmysql_native_passwordby’rpl_user’;mysql>grantALLPRIVILEGESon*.*toclickhouse@’%’;二.调整clickhouse参数clickhouse:)SETallow_experimental_database_materialize_mysql=1;clickhouse创建复制(目前以 database 为单位进行复制,不同的 database 可以来自不同的 MySQL master,这样就可以实现多个 MySQL 源数据同步到一个 ClickHouse 做 OLAP 分析功能。)
CREATEDATABASEsbtestENGINE=MaterializeMySQL(‘MYSQL_IP:MYSQL_PORT’,’DATABASE_NAME’,’USER_NAME’,’PASSWORD’);CREATEDATABASEsbtestENGINE=MaterializeMySQL(‘XXXXXXXX:3306′,’clickhouse’,’clickhous’,’rpl_user’);如报错
Receivedexceptionfromserver(version20.9.1):Code:537.DB::Exception:Receivedfromlocalhost:9000.DB::Exception:IllegalMySQLvariables,theMaterializeMySQLenginerequiresdefault_authentication_plugin=’mysql_native_password’.在MYSQL端调整改参数并重启(read_only参数)default_authentication_plugin=’mysql_native_password’
三.创建数据库和表,并写入数据mysql>createdatabaseclickhouse;mysql>useclickhouse;mysql>CREATETABLE`sbtest1`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`k`int(10)unsignedNOTNULLDEFAULT’0′,`c`char(120)NOTNULLDEFAULT”,`pad`char(60)NOTNULLDEFAULT”,PRIMARYKEY(`id`),KEY`k_1`(`k`))ENGINE=InnoDBAUTO_INCREMENT=5000001DEFAULTCHARSET=utf8mb4MAX_ROWS=1000000;mysql>INSERTINTO`sbtest1`VALUES(1,49929,…;—sysbench数据clickhouse>usesbtest;clickhouse>showtables;SHOWTABLES┌─name────┐│sbtest1│└─────────┘1rowsinset.Elapsed:0.002sec.clickhouse>select*fromsbtest1;SELECT*FROMsbtest1┌─id─┬─────k─┬─c───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─pad─────────────────────────────────────────────────────────┐│12│48776│06636928111-91412549319-87017689961-79500497523-29051692073-64380774874-78643769852-73373361096-34215043106-34370178281│89292458800-98111883088-45119613990-18776802947-72334127545│…….略20rowsinset.Elapsed:0.004sec.查看同步位点
看下 ClickHouse 的同步位点
cat/var/lib/clickhouse/metadata/clickhouse/.metadataVersion:2BinlogFile:bin.000004ExecutedGTID:45b22def-f329-11ea-acf1-3497f600d5bb:1-69:1000068BinlogPosition:10006至此slave搭建成功。
| 作者简介
赵梓州 | 现职于甜橙金融(中国电信翼支付),数据库工程师。
主要负责 MySQL、Redis、MongoDB、TIDB等相关开源数据库运维工作。
喜欢学习分享技术,和大家共同提高!
全文完。
Enjoy ClickHouse :)
知数堂精品课程,MySQL、SQL优化、Python、Elastic等。
MySQL课程已全面升级到MySQL 8.0版本,现在上车刚刚好,一起开启MySQL 8.0的修行之旅吧。
加入知数堂
挑战50万+年薪!
知数堂《MySQL实战优化课》已正式上线腾讯课堂,扫码入群了解课程详情吧,撩助教妹子还有优惠哟

版权声明