准备条件:
clickhouse:官网安装文档
postgres:Percona-Lab/clickhousedb_fdw要求版本11,推荐源码安装,yum方式会少很多文件,导致Percona-Lab/clickhousedb_fdw编译不通过
系统要求:clickhouse要求unix环境或docker,本人工作电脑为windows10且生产服务器为centos,因此使用VirtualBox安装centos7极简镜像,网络模式推荐桥接,若有ip限制则使用NAT进行端口转发,则可使用xshell之类的工具连接
Infinidat/infi.clickhouse_fdw
该插件作用较简单,生成psql客户端可执行的sql语句,然而执行时limit to会报语法错误
安装:easy_install infi.clickhouse_fdw(前置条件python, multicorn)
笔者使用第一种方式 pip install pgxnclient
使用:执行generate_clickhouse_fdw --db-name=events ,会生成psql客户端可直接执行的sql语句
执行该sql建立clickhouse外部表,在clickhouse events数据库中创建表,插入数据,即可在postgres中查询该表中的数据
Percona-Lab/clickhousedb_fdw
Percona-Lab/clickhousedb_fdw中的插件下载链接404,deb / rpm安装方式笔者亲测无效
odbc驱动安装分割线
基于此选择git下载,编译安装方式
前置条件:odbc驱动,官网推荐链接中,对centos支持并不友好,笔者在尝试许久后,选择了Altinity/clickhouse-odbc-rpm方式安装
Altinity/clickhouse-odbc-rpm方式中,执行
git clone https://github.com/Altinity/clickhouse-odbc-rpm.git
cd ${pathyourcode}
./build.sh all
编译过程较长
Altinity/clickhouse-odbc-rpm配置
配置需将可选设置解开,并确定驱动是否存在,配置成功之后执行isql -v ClickHouse成功则证明驱动安装成功
Percona-Lab/clickhousedb_fdw安装
Altinity/clickhouse-odbc-rpm安装成功之后,
执行git clone git://github.com/Percona-Lab/clickhousedb_fdw.git
cd clickhousedb_fdw
make USE_PGXS=1
make USE_PGXS=1 install
其中会报错-lclickhouse-1.0找不到,查看odbc配置中,发现驱动名称为libclickhouseodbc,
解决方法:
1)驱动重命名,并做软连接
mv /usr/local/lib64/odbc/libclickhouseodbc.so /usr/local/lib64/odbc/libclickhouse-1.0.so
ln -s /usr/local/lib64/odbc/libclickhouse-1.0.so > /usr/bin/ld
2)改变makefile中驱动名称
sed -i 's/clickhouse-1.0/clickhouseodbc/g' `grep -rl clickhouse-1.0 ${rootOfclickhousedb_fdw} `
笔者采用第二种方法
之后可按照Percona-Lab/clickhousedb_fdw中使用步骤进行测试
总结
笔者安装此插件是想解决postgres clickhouse数据同步问题,历经千辛万苦之后笔者发现
并不能解决笔者的问题!!
以后认真阅读README!!