CitusDB Multi-node Install and Test
Multi-node setup on CentOS
参考官网:https://docs.citusdata.com/en/v6.2/installation/production_rhel.html
Test Environments
CentOS Linux release 7.2.1511 (Core)
Three nodes(citus1,citus2,citus3)
Steps to be executed on all nodes
1. Add repository
curl https://install.citusdata.com/community/rpm.sh | sudo bash
2. Install PostgreSQL + Citus and initialize a database
sudo yum install -y citus62_96
sudo service postgresql-9.6 initdb || sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/9.6/data/postgresql.conf
3. Configure connection and authentication
sudo vi /var/lib/pgsql/9.6/data/postgresql.conf

sudo vi /var/lib/pgsql/9.6/data/pg_hba.conf

Note:Your DNS settings may differ. Also these settings are too permissive for some environments.The configuration is shown below:
https://www.postgresql.org/docs/9.6/static/auth-pg-hba-conf.html
4. Start database servers, create Citus extension
sudo service postgresql-9.6 restart
sudo chkconfig postgresql-9.6 on
You must add the Citus extension to every database you would like to use in a cluster. The following example adds the extension to the default database which is named postgres.
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
Steps to be executed only on the coordinator node
1. Add worker node
sudo -i -u postgres psql -c "SELECT * from master_add_node('citus2', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('citus3', 5432);"
2. Verify
sudo -i -u postgres psql -c "SELECT * FROM master_get_active_worker_nodes();"

Succeeded!
Notes:Remove worker node command(If you add a node wrong)
sudo -i -u postgres psql -c "SELECT * from master_remove_node('work', 5432);"
See the details below:
https://docs.citusdata.com/en/v6.2/reference/user_defined_functions.html
Test
Download sample data
curl https://examples.citusdata.com/tutorial/companies.csv > /var/lib/pgsql/companies.csv
curl https://examples.citusdata.com/tutorial/campaigns.csv > /var/lib/pgsql/campaigns.csv
curl https://examples.citusdata.com/tutorial/ads.csv > /var/lib/pgsql/ads.csv
Creating tables
To start, you can first connect to the Citus co-ordinator(citus1) using psql.
# sudo -i -u postgres psql
CREATE TABLE companies ( id bigint NOT NULL, name text NOT NULL, image_url text, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL ); CREATE TABLE campaigns ( id bigint NOT NULL, company_id bigint NOT NULL, name text NOT NULL, cost_model text NOT NULL, state text NOT NULL, monthly_budget bigint, blacklisted_site_urls text[], created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL ); CREATE TABLE ads ( id bigint NOT NULL, company_id bigint NOT NULL, campaign_id bigint NOT NULL, name text NOT NULL, image_url text, target_url text, impressions_count bigint DEFAULT 0, clicks_count bigint DEFAULT 0, created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL );
Next, you can create primary key indexes on each of the tables just like you would do in PostgreSQL
ALTER TABLE companies ADD PRIMARY KEY (id);
ALTER TABLE campaigns ADD PRIMARY KEY (id, company_id);
ALTER TABLE ads ADD PRIMARY KEY (id, company_id);
Distributing tables and loading data
SELECT create_distributed_table('companies', 'id');
SELECT create_distributed_table('campaigns', 'company_id');
SELECT create_distributed_table('ads', 'company_id');
Load the data
postgres=# \copy companies from '/var/lib/pgsql/companies.csv' with csv;
COPY 100
postgres=# \copy campaigns from '/var/lib/pgsql/campaigns.csv' with csv;
COPY 978
postgres=# \copy ads from '/var/lib/pgsql/ads.csv' with csv;
COPY 7364
Running queries
postgres=# INSERT INTO companies VALUES (5000, 'New Company', 'https://randomurl/image.png', now(), now());
INSERT 0 1
postgres=# UPDATE campaigns
postgres-# SET monthly_budget = monthly_budget*2
postgres-# WHERE company_id = 5;
UPDATE 12
postgres=# BEGIN;
BEGIN
postgres=# DELETE from campaigns where id = 46 AND company_id = 5;
DELETE 1
postgres=# DELETE from ads where campaign_id = 46 AND company_id = 5;
DELETE 7
postgres=# COMMIT;
COMMIT
postgres=# SELECT name, cost_model, state, monthly_budget
postgres-# FROM campaigns
postgres-# WHERE company_id = 5
postgres-# ORDER BY monthly_budget DESC
postgres-# LIMIT 10;
name | cost_model | state | monthly_budget
-------------------------+---------------------+----------+----------------
Wondra | cost_per_impression | running | 16732
Quicksilver | cost_per_click | paused | 12664
Cyborg | cost_per_impression | running | 8198
Agent Hancock | cost_per_impression | running | 6996
Mr Cyclops I | cost_per_click | paused | 6122
Sasquatch Eyes | cost_per_impression | archived | 5828
Ultra Namor | cost_per_impression | paused | 5554
Carnage | cost_per_impression | paused | 4300
Cyborg Two-Face Machine | cost_per_click | archived | 4086
Binary | cost_per_impression | paused | 3620
(10 rows)
CitusDB Multi-node Install and Test的更多相关文章
- phantomjs-prebuilt@2.1.14 install: `node install.js`
在用vue-cli构建项目时,npm install 安装包的时候报错了. 错误信息: npm ERR! Failed at the phantomjs-prebuilt@2.1.14 install ...
- vue安装之后的报错处理---chromedriver@2.35.0 install: `node install.js`
报错:chromedriver@2.35.0 install: `node install.js` 这个错误的解决方法就是在你创建的项目目录,比如你创建的项目叫myVue,然后你就要在myVue这个目 ...
- npm ERR! errno 1 npm ERR! chromedriver@2.35.0 install: `node install.js`
在使用webpack+vue-cli进行vue项目构建时可能会出现一下错误,webpack@3.10.0及以上版本和vue-cli@2.9.2及以上版本会自动安装依赖(我在自己电脑上测试是这样的)不用 ...
- How to set an Apache Kafka multi node – multi broker cluster【z】
Set a multi node Apache ZooKeeper cluster On every node of the cluster add the following lines to th ...
- npm install报错:chromedriver@2.27.2 install: node install.js
报错: 刚开始以为是 node 或 npm 版本问题,前前后后折腾了好久,终于解决了 解决: 如果执行过npm install,先删除 node_modules 文件夹,不然运行的时候可能会报错 执行 ...
- 报错---“node install.js”
如图 解决方案: 目录中执行 npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromed ...
- phantomjs-prebuilt@2.1.16 install: `node install.js`
今天运行vue项目安装项目依赖(npm install)的时候,报这个错误: 解决办法: npm -g install phantomjs-prebuilt@2.1.16 --ignore-scrip ...
- npm 安装vue 报错Failed at the chromedriver@2.46.0 install script 'node install.js'
原因一般是下载源被封了,我们连接淘宝的下载源下载: npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/d ...
- npm 安装vue 报错Failed at the chromedriver@2.34.0 install script 'node install.js'
提示版本不够,后来百度到,在你的vue项目包下执行: npm install chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/ ...
- vue 环境报错 chromedriver@2.44.1 install: `node install.js`
解决办法: 1. yarn add chromedriver -g 2.yarn add chromedriver --chromedriver_cdnurl=http://cdn.npm.taoba ...
随机推荐
- awk积累
1. 计算一个文本中每一列的和 [root@centos ~]# cat aaa.txt [root@centos ~]# awk 'BEGIN{a=0;b=0;c=0}{a+=$1;b+=$2;c+ ...
- 16.Nov Working Note
05 今天也很忙,版本发布在即,但之前的日志系统发现了bug:在中文模式下python读写抛出异常,通过转化为utf8除去异常,上传到服务器还有乱码. 另外,就是多组件安装时,多线程发生冲突.因为每一 ...
- storm(二)消息的可靠处理
storm 通过 trident保证了对消息提供不同的级别.beast effort,at least once, exactly once. 一个tuple 从spout流出,可能会导致大量的tup ...
- 基于Delphi实现客户端服务端通信Demo
在开始之前我们需要了解下这个Demo功能是啥 我们可以看到这是两个小project,左边的project有服务端和客户端1,右边的project只有一个客户端2 效果就是当两个客户端各自分别输入正确的 ...
- Delphi XE6 如何设计并使用FireMonkeyStyle
介绍 FireMonkey使用Style来控制控件的显示方式. 每个控件都有一个StyleLookup属性,FireMonkey就是通过控件的这个属性来在当前窗体的StyleBook控件中查找匹配 ...
- Python实现按键精灵(二)-找图找色
一.实现功能 判断在指定坐标范围内,是否存在相似度大于n的图片,并返回坐标. 二.基本思路 A=你需要寻找的图片 B=截取当前页面中指定范围的图片 利用opencv 判断A在B中的位置, 在该位置截取 ...
- ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用
在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...
- 推荐一个Redis管理工具
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制.Lu ...
- 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost
目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...
- 论文研读Unet++
Unet++: A Nested U-Net Architecture for Medical Image Segmentation Unet++ 论文地址 这里仅进行简要介绍,可供读者熟悉其结构与特 ...