CentOS7 citus9.5 集群安装及管理
1 所有节点配置
#------服务安装 服务
yum update -y
#------扩展依赖安装
yum install -y epel-release && yum update -y
#------Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh | sudo bash
# install PostgreSQL with Citus extension
sudo yum install -y citus_95
sudo yum install -y postgis2_95.x86_64
# initialize system database (using RHEL 6 vs 7 method as necessary)
sudo service postgresql-9.5 initdb || sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
# preload citus extension
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/9.5/data/postgresql.conf
#------配置
sudo echo "listen_addresses = '*'" | sudo tee -a /var/lib/pgsql/9.5/data/postgresql.conf
sudo echo "host all all 0.0.0.0/0 trust" | sudo tee -a /var/lib/pgsql/9.5/data/pg_hba.conf
#-------------------------启动服务及开机自启--------------
# start the db server
sudo service postgresql-9.5 restart
# and make it start automatically when computer does
sudo chkconfig postgresql-9.5 on
#------------------------扩展---------------
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
sudo -i -u postgres psql -c "CREATE EXTENSION postgis;"
2 主节点配置
#-----配置work节点
sudo echo "worker-101 5432" | sudo -u postgres tee -a /var/lib/pgsql/9.5/data/pg_worker_list.conf
#-----重新加载配置
sudo service postgresql-9.5 reload
#-----查看work节点
sudo -i -u postgres psql -c "SELECT * FROM master_get_active_worker_nodes();"
3 表测试
#-----创建表
CREATE TABLE github_events
(
event_id bigint,
event_type text,
event_public boolean,
repo_id bigint,
payload jsonb,
repo jsonb,
actor jsonb,
org jsonb,
created_at timestamp
);
#-----表分片
SELECT master_create_distributed_table('github_events', 'repo_id', 'hash');
#-----设定分片个数(16)及每个分片副本数(3)
SELECT master_create_worker_shards('github_events', 16, 3);
#----插入数据
INSERT INTO github_events VALUES (2489373118,'PublicEvent','t',24509048,'{}','{"id": 24509048, "url": "https://api.github.com/repos/SabinaS/csee6868", "name": "SabinaS/csee6868"}','{"id": 2955009, "url": "https://api.github.com/users/SabinaS", "login": "SabinaS", "avatar_url": "https://avatars.githubusercontent.com/u/2955009?", "gravatar_id": ""}',NULL,'2015-01-01 00:09:13');
#---删除或修改
SELECT master_modify_multiple_shards(
'DELETE FROM github_events);
4 集群管理
#-----查看work节点
SELECT * from master_get_active_worker_nodes();
#-----元数据查看
SELECT * from master_get_table_metadata('github_events');
#-----分区查看
SELECT * from pg_dist_partition;
#-----分片查看
SELECT * from pg_dist_shard;
#-----分片分布查看
SELECT * from pg_dist_shard_placement;
#-----移动分片
SELECT master_copy_shard_placement(shardid, 'good_host', 5432, 'bad_host', 5432);
5 加节点及移动分片 v1->v4
5.1 加节点
a 修改pg_worker_list.conf
b 重新载入配置 select pg_reload_conf(); 或 sudo service postgresql-9.5 reload
c 查看work节点 SELECT * from master_get_active_worker_nodes();
5.2 移动分片
a 查看分片元数据
SELECT * from master_get_table_metadata('github_events');
SELECT * from pg_dist_shard;
SELECT * from pg_dist_shard_placement;
shardid | shardstate | shardlength | nodename | nodeport
---------+------------+-------------+----------+----------
102013 | 1 | 0 | v1 | 5432
shardstate 1(正常) , 3(待修复) , 4(将删除)
b 元数据中加入新分片
INSERT INTO pg_dist_shard_placement(shardid , shardstate , shardlength , nodename , nodeport) VALUES (102021,3,0,v4,5432)
c 移动数据到新分片
SELECT master_copy_shard_placement(102021, 'v1', 5432, 'v4', 5432);
d 标记删除分片,改数据分片此时已经脱离集群,待删除
UPDATE pg_dist_shard_placement SET shardstate = 4 WHERE shardid = 102021 AND nodename = 'v1' AND nodeport = 5432
e 删除原分片数据及元数据
DROP TABLE github_events_shard_id (在对应节点上进行操作)
DELETE FROM pg_dist_shard_placement shardstate = 4
6 主节点的HA
配置参看http://www.cnblogs.com/zhangeamon/p/5465501.html
问题: 应用程序连接从库对数据分片移动后不生效
总结,程序只能连接主数据库,可做读写分离
CentOS7 citus9.5 集群安装及管理的更多相关文章
- Centos7中ELK集群安装流程
Centos7中ELK集群安装流程 说明:三个版本必须相同,这里安装5.1版. 一.安装Elasticsearch5.1 hostnamectl set-hostname elk vim /e ...
- Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装 集群规划: hostname Zookeeper Kafka kafka-eagle kafka01 √ √ √ kaf ...
- centos7下zookeeper集群安装部署
应用场景:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. 它是一个为分布式应用提供一致性服务的软 ...
- Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置
Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...
- Springboot 1.5.x 集成基于Centos7的RabbitMQ集群安装及配置
RabbitMQ简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一 ...
- centos7下kafka集群安装部署
应用摘要: Apache kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的 分布式发布订阅消息系统,是消息中间件的一种,用于构建实时 ...
- Centos7 zookeeper单机/集群安装详解和开机自启
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...
- Centos7 Zabbix3.2集群安装
安装环境:服务器10.80.0.191作为zabbix-server,10.80.0.191-195作为zabbix-agent. [zabbix@miyan ~]$ cat /etc/redhat- ...
- centos7 redis伪集群安装
安装gcc: yum install gcc -y 上传redis软件包到 /home下 解压: tar xf redis-3.2.11.tar.gz 进入 redis 目录 : cd r ...
随机推荐
- HtmlAgilityPack实战代码
C#采集代理服务器ip并设置IE代理--HtmlAgilityPack实战代码 今天在博客园看到一篇文章,说是C#采集某某的数据,其实做采集小软件很久了, 用的最好的还是HtmlAgilityPack ...
- FpGrowth算法
FpGrowth算法 频繁项集与关联规则挖掘(2)--FpGrowth算法 上一篇介绍了关联规则挖掘的一些基本概念和经典的Apriori算法,Aprori算法利用频繁集的两个特性,过滤了很多无关的 ...
- TOGAF架构开发方法(ADM)之需求管理阶段
TOGAF架构开发方法(ADM)之需求管理阶段 1.11 需求管理(Requirements Management) 企业架构开发方法各阶段——需求管理 1.11.1 目标 本阶段的目标是定义一个过程 ...
- replace()随笔
今天在读jquery源码时,发现一个以前自己不曾注意过得问题,就是replece()的第二个参数为函数时的问题,以前只是知道replace()的第二个参数可以为函数,但是不知道该怎么操作,今天看到源码 ...
- android 弹出带输入框的对话框
private void inputTitleDialog() { final EditText inputServer = new EditText(this); inputServ ...
- Android应用中使用AsyncHttpClient来异步网络数据
首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Ac ...
- Android中检测软键盘的弹出和关闭
Android系统并没有提供明显的API来监听软键盘的弹出和关闭,但是在某些情况下我们还是有办法来检测软键盘的弹出和关闭. 从StackOverflow找到了一个不错的方法.但是这种只适用于在mani ...
- C语言序列点浅析
摘要: 现行国内的C语言教材普遍不介绍序列点,这使得读者只能“死记硬背”有序列点表达式的求值顺序,不仅造成了读者对C语言知识的认知残缺不全,而且也影响了读者学习的积极性.本文总结了序列点的作用,即表达 ...
- unix网络io模型
阻塞I/O(bloking I/O) 阻塞IO的特点就是在IO执行的两个阶段(recvfrom和数据从内核空间转移到用户空间)都被block了 非阻塞I/O(non-bloking I/O) 非阻 ...
- C语言之变量与常量的介绍
一 标示符 标识符:可以理解为是变量名.名字常量表示法的常量名,但是不仅限于这两个 命名规范: 1.起名要有意义,基本要做到一看名字就知道是用来干嘛的(要求你遵守,但不会报错,希望能够养成这样的好习惯 ...