citus 部署 - 分布式数据库 系统软件 docker


https://hub.docker.com/r/citusdata/citus

https://www.github.com/citusdata/docker

https://www.citusdata.com/download


#postgres postgresql 使用指南,以及pgadmin-web管理

https://abc.htmltoo.com/thread-45066.htm


docker run -d  --name citus  --restart=always   -p 5430:5432 -e POSTGRES_PASSWORD=wdqdmm@p   -v /etc/localtime:/etc/localtime:ro  citusdata/citus


docker run -d  --name citus1  --restart=always   -p 5431:5432 -e POSTGRES_PASSWORD=wdqdmm@p   -v /etc/localtime:/etc/localtime:ro  citusdata/citus


docker run -d  --name citus2  --restart=always   -p 5432:5432 -e POSTGRES_PASSWORD=wdqdmm@p   -v /etc/localtime:/etc/localtime:ro  citusdata/citus


docker exec -it citus /bin/bash

docker exec -it citus1 /bin/bash

docker exec -it citus2 /bin/bash


apt-get update -y

apt-get install -y wget vim net-tools curl 

apt-get dist-upgrade -y 

apt-get upgrade -y 

apt autoremove    

apt clean

psql -V


-启动数据库服务,创建Citus扩展

psql -U postgres -h localhost -d postgres

CREATE EXTENSION citus

CREATE EXTENSION postgis

SELECT * FROM citus_version()


-配置

/var/lib/postgresql/data/postgresql.conf

/var/lib/postgresql/data/pg_hba.conf


-1.预加载citus扩展,  tee -a : 附加到既有文件的后面,  docker 已有

echo "shared_preload_libraries = 'citus'" | tee -a /var/lib/postgresql/data/postgresql.conf

-2.修改配置文件中的监听地址,  docker 已有,postgresql.conf

listen_addresses = '*'

-3.配置远程访问的权限

vim /var/lib/postgresql/data/pg_hba.conf

host    all     all       0.0.0.0/0     md5


---在协调器节点上执行---

docker exec -it citus /bin/bash

psql -U postgres -h localhost -d postgres

-设置本节点为协调节点

SELECT citus_set_coordinator_host('b.htmltoo.com',5430)

-配置数据节点信息, 把其他节点设置为工作节点work

SELECT * from master_add_node('b.htmltoo.com', 5431)

SELECT * from master_add_node('b.htmltoo.com', 5432)

-验证部署

SELECT * FROM master_get_active_worker_nodes()


---命令---

-查看节点

select * from pg_dist_node

-查看工作节点

SELECT * FROM master_get_active_worker_nodes()

-增加节点 

SELECT * from master_add_node('b.htmltoo.com', 5432)

-删除节点 

SELECT master_remove_node('b.htmltoo.com', '5432')

禁用某个节点:

SELECT master_disable_node('b.htmltoo.com',5432)

重新启用节点:

select master_activate_node('b.htmltoo.com',5432);

-查询有哪些表

select tablename from pg_tables where tablename not like 'pg_%'

-查询有哪些表

select tablename from pg_tables where tablename like 'ads%'

-删除extension

drop extension citus cascade


===分布式集群测试===

---在master中创建表测设分片

#1、创建表

create table test_table(id int, name varchar(16));

-查看默认分片数:

show citus.shard_count;

#2、表分片

SELECT master_create_distributed_table('test_table', 'id', 'hash');

#3、设定分片个数(2)及每个分片副本数(2)

SELECT master_create_worker_shards('test_table', 2, 2);

#不报错则前面都设置成功。

---创建完成后,可以在子节点看到分片后的数据表如下(分片数为2,副本数为2):

\d

---

#插入数据

insert into test_table values (1,'yyp');

insert into test_table values (2,'csq');

insert into test_table values (3,'lzl');

---分别在master、worker1、worker2中查看数据的分片情况。

---查看数据同步情况

SELECT * from pg_dist_shard_placement order by shardid, placementid;

-shardstate为1表示正常同步,为3表示同步失败

 shardid | shardstate | shardlength |    nodename    | nodeport | placementid

---------+------------+-------------+----------------+----------+-------------

  102036 |          3 |           0 | 192.168.200.91 |     5432 |          57

  102036 |          1 |           0 | 192.168.200.92 |     5432 |          58

-将worker2中的shardis=102036的分片复制给work1

SELECT master_copy_shard_placement(102036, '192.168.200.92', 5432, '192.168.200.91', 5432);

===


-查看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);

-元数据中加入新分片 

INSERT INTO pg_dist_shard_placement(shardid , shardstate , shardlength , nodename , nodeport) VALUES (102021,3,0,v4,5432)

-移动数据到新分片

SELECT master_copy_shard_placement(102021, 'v1', 5432, 'v4', 5432);

-标记删除分片,改数据分片此时已经脱离集群,待删除

UPDATE pg_dist_shard_placement SET shardstate = 4 WHERE shardid = 102021 AND nodename = 'v1' AND nodeport = 5432

-删除原分片数据及元数据

DROP TABLE github_events_shard_id (在对应节点上进行操作)

DELETE FROM pg_dist_shard_placement shardstate = 4


Citus 是 Postgres 的开源扩展,它在集群中的多个节点上分布数据和查询。因为 Citus 是 Postgres 的扩展(不是 fork),所以当您使用 Citus 时,您也在使用 Postgres。您可以利用最新的 Postgres 功能、工具和生态系统。

Citus 将 Postgres 转换为具有分片、分布式 SQL 引擎、引用表和分布式表等功能的分布式数据库。 Citus 将并行性、在内存中保留更多数据和更高的 I/O 带宽相结合,可以显着提高多租户 SaaS 应用程序、面向客户的实时分析仪表板和时间序列工作负载的性能。


主要特性

● PostgreSQL兼容

● 水平扩展

● 实时并发查

● 快速数据加载

● 实时增删改查

● 持分布式事务

● 支持常用DDL


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回