在工作工作中遇到使用postgres-xl数据库,需要使用中文分词zhparser ,postgresql的zhparser安装使用比较方便,但是postgres-xl在网上却找不到怎么安装 zhparser,于是自己摸索,进过4个小时的尝试,终于安装成功,记录下来分享给大家
postgres-xl数据库的安装不在这里赘述,网上的安装教程比较多。我是安装了3台Centos服务器,建议没有安装过postgresql,会简单很多。
GTM/GTM_PROXY 在同一台机器
coordinator/datanode coord1 dn1 dn2 一个协调器和两个数据节点在一台服务器
coordinator/datanode coord2 dn3 dn4 一个协调器和两个数据节点在一台服务器
安装目录为:/usr/local/pgxl
配置集群,在coord1为
alter node coord1 with (type=coordinator,host='XXX.XXX.XXX.XXX', port=11921);
create node coord2 with (type=coordinator,host='XXX.XXX.XXX.XXX', port=11921);
create node dn1 with (type=datanode, host='XXX.XXX.XXX.XXX',port=11922,primary,preferred);
create node dn2 with (type=datanode, host='XXX.XXX.XXX.XXX',port=11923);
create node dn3 with (type=datanode, host='XXX.XXX.XXX.XXX',port=11922);
create node dn4 with (type=datanode, host='XXX.XXX.XXX.XXX',port=11923);
其他节点的配置参考 与此类似,可以参考网上的很多文章
配置完成后启动 集群 网上的文章
后面是如何安装配置zhparser,建议找一台没有安装过postgresql的机器,会比较方面
1.先下载 scws-1.2.3.tar.bz2、zhparser 下载链接网上较多,这里不写了
2.解压 scws-1.2.3.tar.bz
tar jvxf scws-1.2.3.tar.bz
3.编译scws
cd scws-1.2.3
./configure --prefix=/usr/local/pgxl/scws
prefix 根据自己的喜好设置
make && make install
5.解压 zhparser
进入zhparser目录,执行
SCWS_HOME=/usr/local/pgxl/scw make && make install
正常情况下载这里就完成了,其他的配置按照zhparser 的说明进行
如果在安装postgres-xl的机器上安装了postgresql,安装zhparser就会复杂一些,需要修改zhparser的Makefile文件
主要是这里
#PG_CONFIG = pg_config
#PGXS := $(shell $(PG_CONFIG) --pgxs)
PGXS := /usr/local/pgxl/lib/postgresql/pgxs/src/makefiles/pgxs.mk
#include /usr/local/pgxl/lib/postgresql/pgxs/src/makefiles/pgxs.mk
include $(PGXS)
保存以后执行
SCWS_HOME=/usr/local/pgxl/scws make
会出错
gcc -DPGXC -DXCP -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security - fno-strict-aliasing -fwrapv -O2 -fpic -I/usr/local/pgxl/scws/include/scws -I. -I./ -I/usr/pgsql-9.4/include/server -I/usr/pgsql-9.4/include/internal - D_GNU_SOURCE -c -o zhparser.o zhparser.c
zhparser.c:10:22: error: postgres.h: No such file or directory
zhparser.c:11:23: error: miscadmin.h: No such file or directory
那我们就是直接修改一下
gcc -DPGXC -DXCP -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security - fno-strict-aliasing -fwrapv -O2 -fpic -I/usr/local/pgxl/scws/include/scws -I. -I./ -I/usr/pgsql-9.4/include/server -I/usr/pgsql-9.4/include/internal - D_GNU_SOURCE -c -o zhparser.o zhparser.c
执行下面的命令:
gcc -DPGXC -DXCP -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security - fno-strict-aliasing -fwrapv -O2 -fpic -I/usr/local/pgxl/scws/include/scws -I. -I.-I/usr/local/pgxl/include/server -/usr/local/pgxl/include/internal - D_GNU_SOURCE -c -o zhparser.o zhparser.c
编译通过,然后执行
gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DLINUX_OOM_ADJ=0 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -fpic -shared zhparser.o -L/usr/local/pgxl/scws/lib -L/usr/lib64 -lscws -Wl,-rpath -Wl,/usr/local/pgxl/scws/lib -o zhparser.so
编译成功了 zhparser.so
需要拷贝一些文件到postgres-xl的目录
cp zhparser.so /usr/local/pgxl/lib/postgresql/zhparser.so
cp zhparser.control /usr/local/pgxl/share/postgresql/extension/
cp zhparser--1.0.sql zhparser--unpackaged--1.0.sql /usr/local/pgxl/share/postgresql/extension/
cp dict.utf8.xdb rules.utf8.ini /usr/local/pgxl/share/postgresql/tsearch_data/
完成后重新启动postgres 就可以配置zhparser了。