postgresql数据库使用Citus实现集群
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实现集群相关推荐
- Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档
Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档 一.概述 二.连接器的工作原理 1.安全 2.快照 3.Ad hoc snapshots ...
- 集群学习分享2:pcs+postgresql一主两从集群搭建
本文介绍集群学习分享:CentOS7使用pcs+nginx+nfs快速搭建web 在web架构基础上再加入pcs+postgresql数据库高可用: 配置之前最好先做快照 虚拟机节点基本信息: 主机名 ...
- 想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中
摘要:Kubernetes 很多看起来比较"繁琐"的设计的主要目的,都是希望为开发者提供更多的"可扩展性",给使用者带来更多的"稳定性"和& ...
- Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档
Debezium系列之:使用Debezium接入SQL Server数据库数据到Kafka集群的详细技术文档 一.Debezium概述 二.SQL Server 连接器的工作原理 1.Snapshot ...
- 达梦数据库DM8版本DSC集群启停注意事项
达梦数据库DM8的DSC集群与DM7相比,新增加了DMCSSM监视器功能,使用监视器启停集群非常方便. 首先,介绍一下什么是DSC DMDSC:DM共享存储数据库集群,英文全称DM Data Shar ...
- PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
前言 PostgreSQL 本身不支持任何多主群集解决方案,例如 MySQL 或 Oracle.尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如 PostgreSQL 的复制或负载平衡. ...
- PostgreSQL(一)PostgreSQL一主二从集群部署
(一)基础准备 1.1 创建三台虚拟机 虚拟机名 IP hostname 主从划分 pgpool0 192.168.149.236 node236 主节点 pgpool1 192.168.149.2 ...
- sqlserver 集群_云数据库最优成本方案,阿里云数据库新形态专属集群
前言: 随着云技术的发展和成熟,业务上云成为大势所趋,越来越多的企业已经从思考何时上云转变为如何更好地上云.如何选择安全.合规.稳定.可靠.低成本.自主可控的云数据库产品更是所有企业上云必须面对的挑战 ...
- MySQL数据库(九) 集群 Cluster 和性能优化
文章目录 6 MySQL 集群 Cluster 6.1 MySQL主从复制 6.1.1 主从复制架构和原理 6.1.2 实现主从复制配置 6.1.3 主从复制相关 6.1.4 实现级联复制 6.1.5 ...
最新文章
- 26.2. Web UI
- php在页面循环输出标签,自定义页面循环
- No bean named 'dataSource' is defined
- C++平衡二叉树(AVL树)
- 寄存器和pin_16x2 LCD的PIN图和寄存器
- 成都五月花计算机网教,【强调】成都五月花计算机学校网址是什么
- 《城市规划信息化体系》和《城市规划与建设地理信息系统》读书笔记及规划信息化的碎碎念...
- win32开发(消息机制)
- 如何评价伊隆·马斯克创办的脑机接口公司 Neuralink ?
- 如何在手机上查看APP原型
- html5中按钮点击事件,javascript按钮点击事件
- java报表技术总结_15个Java的报表工具总结
- SEO专家祝鹏:浅谈SEO操作思路及技巧
- webx3对请求的处理流程详解一
- 注册Office教育版账号流程实现oneDrive1TB储存
- 学校实验室电脑带来的病毒
- 鸿蒙开发者联盟app,开发者联盟
- Android圆盘控件,DiscView 圆盘控件 动态展示百分比等数据 @codeKK Android开源站
- 51CTO博客2.0造星计划——粉丝大奖赛参赛名单,你关注了吗?
- 为何float有效位数为7位?
热门文章
- Caffe(to be continued)
- 阿里云 blink 相关错误码问题解决
- uni-app小程序滑动到顶部固定
- 项目管理的10大知识领域之范围管理
- 阿里云王牌架构师一问开发者:系统要改造成微服务吗
- 转:通信里 星座图 到底是什么
- 这30个CSS选择器,你必须熟记(上)
- 南京软件测试自学英语,南京软件测试培训班怎么样?南京软件测试培训班学什么?...
- 规划新一年 IT 技术路线?一起来学习下 Gartner 基础设施 Hype Cycle
- [CentOS Python系列] 五.阿里云部署web环境及通过IP地址访问服务器网页