背景:
随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重。故引进clickhoue
- clickhouse官网:ClickHouse - fast open-source OLAP DBMS
- clickhouse官方性能测试:Page Redirection
- clickhouse面对海量数据,比如单表过百亿可以使用集群(复制+分片);如果数据量比较小,比如单表10-20亿使用单机就足以满足查询需求。
- 如果使用复制需要使用zk。
操作系统版本:
目前线上使用的是centos 7.0的系统。之所以使用7.0的系统,是因为同步数据的程序是用python写的,而且用到的 一个核心包:python-mysql-replication需要使用python 2.7的环境。
同时由于clickhouse(老版本)不兼容mysql协议,为了方便开发接入系统不用过多更改代码,引入了proxysql兼容mysql协议,clickhouse最新版本已经支持mysql协议,支持clickhouse的proxysql也需要python 2.7的环境,所以干脆直接用centos 7.0系统
测试环境:
服务器数量:1台
操作系统:centos 7.6
安装服务:clickhouse,mysql
clickhouse安装:
1、添加yum源并安装
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash
yum install -y clickhouse-server clickhouse-client
2、服务启动
/etc/init.d/clickhouse-server start
默认数据存放位置是: /var/lib/clickhouse/
3、登录,查看数据库(默认用户是default,密码为空)
[root@ck-server-01 sync]# clickhouse-client -h 127.0.0.1
ClickHouse client version 19.9.2.4.
Connecting to 127.0.0.1:9000 as user default.
Connected to ClickHouse server version 19.9.2 revision 54421.
ck-server-01 :) show databases;
SHOW DATABASES
┌─name────┐
│ default │
│ system │
└─────────┘
2 rows in set. Elapsed: 0.003 sec.
ck-server-01 :)
default数据库里面没有任何东西,和mysql里面的test库是一样的。
补充一点,在官方的文档里面有几点建议:
1. 关闭大页
2. 调整内存使用
3. 关闭cpu节能模式
echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo 0 > /proc/sys/vm/overcommit_memory
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
mysql部署,略。
如果想从mysql同步数据那么binlog 格式必须是row,binlog_row_image=full
安装同步程序依赖的包:
同步程序可以放在clickhouse服务器上面,也可以单独放在其他服务器。
同步程序使用pypy启动,所以安装包的时候需要安装如下包
yum -y install pypy-libs pypy pypy-devel
wget https://bootstrap.pypa.io/get-pip.py
pypy get-pip.py
/usr/lib64/pypy-5.0.1/bin/pip install MySQL-python
/usr/lib64/pypy-5.0.1/bin/pip install mysql-replication
/usr/lib64/pypy-5.0.1/bin/pip install clickhouse-driver==0.0.20
/usr/lib64/pypy-5.0.1/bin/pip install redis
这里也安装了redis模块 是因为同步的binlog pos可以存放在redis里面,当然程序也是支持存放在文件里面。
proxysql安装
主要是为了clickhouse兼容mysql协议:
proxysql在这里下载:Releases · sysown/proxysql · GitHub
wget https://github.com/sysown/proxysql/releases/download/v2.0.3/proxysql-2.0.3-1-clickhouse-centos7.x86_64.rpm
选择带clickhouse的包下载,否则不会支持clickhouse。
ps:较新版本的clickhouse已经原生兼容mysql协议。
proxysql安装及配置
yum -y localinstall proxysql-2.0.3-1-clickhouse-centos7.x86_64.rpm
启动(必须这样启动,否则是不支持clickhouse的):
[root@VM-20-11-centos bin]# ps -ef|grep proxysql
root