Postgres-XL的使用与动态增删数据节点

版权声明:本文为博主原创文章,转载请注明【转载自皓月如我的CSDN博客】,并贴出原始链接地址。 https://blog.csdn.net/fm0517/article/details/81346603

Postgres-XL的部署请参考上一篇:《在CentOS7.2上部署Postgres-XL分布式数据库》

1. 建表

【REPLICATION表】即复制表,表的内容在各个数据节点完全相同。

postgres=#  CREATE TABLE repltab (c1 int, c2 int) DISTRIBUTE BY REPLICATION;

【DISTRIBUTE表】及分片表,按照分片(sharding)规则,数据会被分配到不同的数据节点中。通过协调节点查询完整的数据集合。

postgres=#  CREATE TABLE disttab(c1 int, c2 int) DISTRIBUTE BY HASH(c1);

本次实操创建分片事件表:

CREATE TABLE my_event
(
  occur_time timestamp without time zone,
  milli_second integer NOT NULL,
  region_id integer,
  content character varying(256),
  value double precision
)DISTRIBUTE BY HASH(occur_time);

2. 插入数据

insert into my_event values(... ...);

查看节点情况:

select * from pgxc_node;

查看数据分片分布:

SELECT xc_node_id, count(*) FROM my_event GROUP BY xc_node_id;

或者

SELECT t2.node_name, t1.cnt from (SELECT xc_node_id as node_id, count(*) as cnt FROM my_event GROUP BY xc_node_id order by xc_node_id) t1 left join pgxc_node t2 on t1.node_id = t2.node_id order by t2.node_name;

3. 增加节点

在GTM节点上以postgres用户执行:

$ pgxc_ctl
PGXC add datanode master datanode3 server6 5433 20005 /home/postgres/pgxl9.5/data/nodes/dn_master none none none

用SQL连接协调节点,执行下面的SQL语句:(实际起到了rebalance的功能)

ALTER TABLE scada_event ADD NODE (datanode3);

然后再查看数据分片分布,发现数据已经重新分布在3个节点上了

4. 删除节点

用SQL连接协调节点,执行下面的SQL语句:(实际起到了rebalance的功能)

ALTER TABLE my_event DELETE NODE (datanode3);

在GTM节点上以postgres用户执行:

$ pgxc_ctl
PGXC remove datanode master datanode3 clean

然后再查看数据分片分布,发现数据已经重新分布在2个节点上了

猜你喜欢

转载自blog.csdn.net/fm0517/article/details/81346603
今日推荐