citus是PostgreSQL数据库中的一种轻量级的分库分表解决方案。citus不是一个单独的程序,它是PostgreSQL数据库中的一个插件,可以使用create extension安装此插件。 
每个citus集群有多个PostgreSQL数据库实例组成,数据库实例分为两类:

  • master节点,通常有一台。master节点只存储分库分表的元数据,不存储实际的数据。
  • worker节点,通常有多台。worker节点存储实际的分片数据(shard)。

测试系统为debain系统,安装postgresql 使用apt安装:apt-get install postgresql

本人安装成功后版本为9.6,接下来安装citus扩展,可以使用源码编译安装,也可以用apt进行安装,安装时注意citus版本与postgresql数据版本的对应。

使用apt安装:apt-get install postgresql-9.6-citus

这样citus安装成功。。

测试环境:主服务器(Coordinator)192.168.10.12   节点服务器(worker1)192.168.10.14

节点服务器(worker2)192.168.10.17

所有服务器postgresql配置允许远程访问。

pg_hba.conf配置如下 :

12服务器:host    all             all             192.168.10.0/24            md5

节点服务器:host    all             all             192.168.10.0/24           trust

注意节点服务器最后不能配置md5方式,只能使用trust无密码验证方式,防火墙需要打开5432端口。

postgresql.conf配置如下:

所有服务器加入:shared_preload_libraries = 'citus'

配置完成,重启数据库。

以下为所有服务器相同配置:

1、登录postgres,进入psql

su postgres

psql

2、为当前数据库添加扩展库:

CREATE EXTENSION citus;

如新建了数据库名称为:TestColony

切换到数据库TestColony:   \c TestColony   切换到对应数据库后执行以上添加扩展库命令。

3、为Coordinator添加子节点。

SELECT * from master_add_node('192.168.10.14', 5432);

SELECT * from master_add_node('192.168.10.17', 5432);

4、查看节点是否添加成功。

SELECT * FROM master_get_active_worker_nodes();

如上图节点添加成功。

测试集群:

1、创建表

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

2、表分片

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

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

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

4、创建完成后,可以在子节点看到分片后的数据表如下:

Coordinator中数据表如下图:

当向test_table表中插入数据时可以看到子节点分片表中也同时会有数据。

5、查看执行计划:

可以看到在查询test_table数据时,实际上是从14 子节点进行数据查询,通过merge_job的任务将分片表进行合并查询。

6、当worker1服务器关闭或者断电时,对表test_table插入数据,此时worker2服务器数据同步正常,当worker1服务器

重启启动后,发现数据与worker2数据不一致的情况 。可以通过如下命令查询变化情况:

SELECT * from pg_dist_shard_placement order by shardid, placementid;

将14数据库关闭,对表test_table插入数据结果如下图:

17数据库同步正常:

标红为插入数据

现在启动14 workder1数据库:service postgresql start

可以看到修改后的数据并未进行同步。

通过命令:SELECT * from pg_dist_shard_placement order by shardid, placementid;

结果如下图:

标红处是修改数据库,关闭14数据库后的查询,通过对比可以看到:

当shardstate为1时,数据同步正常,当shardstate为3时数据同步异常。

通过以复制分片方式对数据进行同步如下:

SELECT master_copy_shard_placement(102010, '192.168.10.17', 5432, '192.168.10.14', 5432);

命令执行后再次查询结果如下:

查看14数据库数据:

同步成功

postgresql数据库使用Citus实现集群相关推荐

  1. Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档

    Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档 一.概述 二.连接器的工作原理 1.安全 2.快照 3.Ad hoc snapshots ...

  2. 集群学习分享2:pcs+postgresql一主两从集群搭建

    本文介绍集群学习分享:CentOS7使用pcs+nginx+nfs快速搭建web 在web架构基础上再加入pcs+postgresql数据库高可用: 配置之前最好先做快照 虚拟机节点基本信息: 主机名 ...

  3. 想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

    摘要:Kubernetes 很多看起来比较"繁琐"的设计的主要目的,都是希望为开发者提供更多的"可扩展性",给使用者带来更多的"稳定性"和& ...

  4. Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档

    Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档 一.Debezium概述 二.SQL Server 连接器的工作原理 1.Snapshot ...

  5. 达梦数据库DM8版本DSC集群启停注意事项

    达梦数据库DM8的DSC集群与DM7相比,新增加了DMCSSM监视器功能,使用监视器启停集群非常方便. 首先,介绍一下什么是DSC DMDSC:DM共享存储数据库集群,英文全称DM Data Shar ...

  6. PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案

    前言 PostgreSQL 本身不支持任何多主群集解决方案,例如 MySQL 或 Oracle.尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如 PostgreSQL 的复制或负载平衡. ...

  7. PostgreSQL(一)PostgreSQL一主二从集群部署

    (一)基础准备 1.1  创建三台虚拟机 虚拟机名 IP hostname 主从划分 pgpool0 192.168.149.236 node236 主节点 pgpool1 192.168.149.2 ...

  8. sqlserver 集群_云数据库最优成本方案,阿里云数据库新形态专属集群

    前言: 随着云技术的发展和成熟,业务上云成为大势所趋,越来越多的企业已经从思考何时上云转变为如何更好地上云.如何选择安全.合规.稳定.可靠.低成本.自主可控的云数据库产品更是所有企业上云必须面对的挑战 ...

  9. MySQL数据库(九) 集群 Cluster 和性能优化

    文章目录 6 MySQL 集群 Cluster 6.1 MySQL主从复制 6.1.1 主从复制架构和原理 6.1.2 实现主从复制配置 6.1.3 主从复制相关 6.1.4 实现级联复制 6.1.5 ...

最新文章

  1. 26.2. Web UI
  2. php在页面循环输出标签,自定义页面循环
  3. No bean named 'dataSource' is defined
  4. C++平衡二叉树(AVL树)
  5. 寄存器和pin_16x2 LCD的PIN图和寄存器
  6. 成都五月花计算机网教,【强调】成都五月花计算机学校网址是什么
  7. 《城市规划信息化体系》和《城市规划与建设地理信息系统》读书笔记及规划信息化的碎碎念...
  8. win32开发(消息机制)
  9. 如何评价伊隆·马斯克创办的脑机接口公司 Neuralink ?
  10. 如何在手机上查看APP原型
  11. html5中按钮点击事件,javascript按钮点击事件
  12. java报表技术总结_15个Java的报表工具总结
  13. SEO专家祝鹏:浅谈SEO操作思路及技巧
  14. webx3对请求的处理流程详解一
  15. 注册Office教育版账号流程实现oneDrive1TB储存
  16. 学校实验室电脑带来的病毒
  17. 鸿蒙开发者联盟app,开发者联盟
  18. Android圆盘控件,DiscView 圆盘控件 动态展示百分比等数据 @codeKK Android开源站
  19. 51CTO博客2.0造星计划——粉丝大奖赛参赛名单,你关注了吗?
  20. 为何float有效位数为7位?

热门文章

  1. Caffe(to be continued)
  2. 阿里云 blink 相关错误码问题解决
  3. uni-app小程序滑动到顶部固定
  4. 项目管理的10大知识领域之范围管理
  5. 阿里云王牌架构师一问开发者:系统要改造成微服务吗
  6. 转:通信里 星座图 到底是什么
  7. 这30个CSS选择器,你必须熟记(上)
  8. 南京软件测试自学英语,南京软件测试培训班怎么样?南京软件测试培训班学什么?...
  9. 规划新一年 IT 技术路线?一起来学习下 Gartner 基础设施 Hype Cycle
  10. [CentOS Python系列] 五.阿里云部署web环境及通过IP地址访问服务器网页