单机citus安装
环境
- centos6.5
- postgres9.5
- citus5.2
安装postgres (yum安装方式:https://yum.postgresql.org/repopackages.php)
- cd /opt
- wget https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-3.noarch.rpm
- rpm -ivh pgdg-centos95-9.5-3.noarch.rpm
- yum list postgresql*
- yum install postgresql95.x86_64 postgresql95-contrib.x86_64 postgresql95-libs.x86_64 postgresql95-server.x86_64
- 默认安装在/usr/pgsql-9.5
vim /etc/profile(可以修改自己用户环境变量)
#postgres
export LD_LIBRARY_PATH=/usr/pgsql-9.5/lib:$LD_LIBRARY_PATH
export PATH=/usr/pgsql-9.5/bin:$PATH
- 初始化数据库 service postgresql-9.5 initdb (也可以自定义目录initdb -D )
- 默认在/var/lib/pgsql 目录下面
到此数据库安装完成
安装citus
- https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-6-x86_64/ (自己找citus5.2的安装rpm包)
- cd /opt
- rpm -ivh citus_95-5.2.2-1.rhel6.x86_64.rpm
- yum list citus*
- yum install citus_95.x86_64
- (切换用户) sudo su - postgres
- export PATH=$PATH:/usr/pgsql-9.6/bin
- cd ~
- (创建目录)mkdir -p citus/master citus/worker1 citus/worker2
- (初始化主节点) initdb -D citus/master
- (初始化子节点) initdb -D citus/worker1
- (初始化子节点) initdb -D citus/worker2
- 修改配置文件
echo "shared_preload_libraries = 'citus'" >> citus/master/postgresql.conf
echo "shared_preload_libraries = 'citus'" >> citus/worker1/postgresql.conf
echo "shared_preload_libraries = 'citus'" >> citus/worker2/postgresql.conf
- Start the master and workers
pg_ctl -D citus/master -o "-p 9700" -l master_logfile start
pg_ctl -D citus/worker1 -o "-p 9701" -l worker1_logfile start
pg_ctl -D citus/worker2 -o "-p 9702" -l worker2_logfile start
- 创建扩展 这里自动在postgres数据库创建的
psql -p 9700 -c "CREATE EXTENSION citus;"
psql -p 9701 -c "CREATE EXTENSION citus;"
psql -p 9702 -c "CREATE EXTENSION citus;"
- 查看当前几个worker
- psql -p 9700 -c “select * from master_get_active_worker_nodes();”
citus 知识点
- 不支持在已有数据的表上做分表
- 需要先再maste节点创建主表不存储数据,只有元数据
- 分布式列选取推荐使用hash方式还有append的方式
使用 citus步骤
- 在master创建主表
- 创建分布式列
- SELECT create_distributed_table(‘tableName’, ‘column’);
- SELECT master_create_worker_shards(‘tableName’, 16, 1);
- 第二个参数是多少个分片,副本数量
- 从maste导入数据可以使用csv 方式导入,导出
- #导出成csv
- COPY (select * from tableName) to ‘/opt/a.csv’ with csv ;
- #导入csv
- \COPY tableNameFROM ‘/opt/a.csv’ WITH (format CSV)
query测试比单个postgres提高72.95%以上 citus可以横向扩展worker 节点 和增加分布表获取更大的性能