美文网首页
PGSQL+citus 分片实战

PGSQL+citus 分片实战

作者: 宋小红帽 | 来源:发表于2020-04-23 17:01 被阅读0次

Citus是Postgres的一个扩展。Citus的优势在于:无论你的数据和查询怎么组织,它都可以智能的将你的数据库以及查询分布在多个节点上。Citus可以优化你的每个查询的表现,不仅仅是你能运行的查询数量。Citus是一个开源,可在任何地点运行的企业软件,同时也是一个提供数据库全方位管理的服务

cn:101.61.176.240

work1:101.61.176.237

work2:101.61.176.254

work3:101.61.176.243

4个节点都要安装pgsql10 citus75_10

pgsql yum源:

yum install -y  https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

wget http://mirrors.aliyun.com/repo/Centos-7.repo

curl https://install.citusdata.com/community/rpm.sh | sudo bash

yun makecache

安装组件 :

yum install wget net-tools epel-release -y

yum install -y  postgresql10*  citus75_10*

安装数据目录:

mkdir -p /data/pgsql/{data,log}  && chown -R postgres.postgres /data/pgsql

pgsql 启动脚本修改

vim /usr/lib/systemd/system/postgresql-10.service <<EOF

Environment=PGDATA=/data/pgsql/data

初始化数据

/usr/pgsql-10/bin/postgresql-10-setup initdb

修改postgre环境变量

su  - postgres  && vim ~/.bash_profile <<EOF

PGDATA=/data/pgsql/data

启动pgsql

systemctl start postgresql-10

修改配置文件:

postgresql.conf  pgsql启动参数,主要配置如下:

listen_addresses = '0.0.0.0'

port = 5432

max_connections = 2000

shared_buffers = 10240MB

shared_preload_libraries = 'citus'

pg_hba.conf  pgsql权限访问系统  从上到下匹配规则

host    all        all            101.61.176.240/32      trust

host    all        all            101.61.176.237/32        trust

host    all        all            101.61.176.254/32        trust

host    all        all            101.61.176.243/32        trust

host    all        all              0.0.0.0/0                  md5

建立数据库 加载 citus插件(建库需要4台pgsql都需要操作)

psql

create database dadisplay;

\c dadisplay

create extension citus;

再CN节点添加work节点

select * from master_add_node('101.61.176.237',5432);

select * from master_add_node('101.61.176.254',5432);

select * from master_add_node('101.61.176.243',5432);

查看是否添加成功

select * from master_get_active_worker_nodes()

建立业务用户赋权给 dadisplay

CREATE USER dadisplay WITH PASSWORD 'xxxxx';

GRANT ALL PRIVILEGES ON DATABASE dadisplay TO dadisplay;

alter database dadisplay owner to dadisplay;

大部分的操作都需要通过CN入口,除一些DDL以外,所以 需要配置CN高可用

再CN 添加streaming postgresql.conf

citus.replication_model='streaming';

命令:

alter system set citus.replication_model='streaming';

添加一个备用CN

SELECT start_metadata_sync_to_node('101.61.176.237', 5432);  ##需要切换到dadisplay 库操作

提醒,citus如果开启了mx 跟开启副本就会冲突,建议大家重新添加一个流复制作为CN的高可用

(流复制配置,不再此搭建,大家有兴趣可以自行玩一下)

验证

select *from pg_dist_node;

hasmetadata=t 开启  充当了 cn 的角色

测试:

再CN节点创建table测试结果

set citus.shard_count=3; ##分片个数

set citus.shard_replication_factor=2;##副本个数

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

select create_distributed_table('test.test_table','id','hash');

相关文章

  • PGSQL+citus 分片实战

    Citus是Postgres的一个扩展。Citus的优势在于:无论你的数据和查询怎么组织,它都可以智能的将你的数据...

  • webpack实战——代码分片

    前言 这是webpack实战系列笔记的第9篇记录——代码分片,前几篇记录如下: 打包第一个应用 模块化与模块打包 ...

  • 【es】ES5.x 集群常用api操作

    参考 ES实战-分片分配失败解决方案https://www.jianshu.com/p/ffe4761dc79a[...

  • ShardingSphere官网及总结

    中文文档 分片 分片算法 精确分片算法 范围分片算法 复合分片算法 Hint分片算法 分片策略 标准分片策略 复合...

  • 日知录1-数据分片模型和路由算法

    分片模型: 先将数据映射到分片;再将分片映射到机器;都是多对一的关系。 分片策略:哈希分片和范围分片。 哈希分片通...

  • MongoDB 集群

    分片群集 MongoDB分片群集由以下组件组成: 分片:每个分片包含分片数据。每个分片都可以部署为副本集。 mon...

  • number_of_shards的理解

    分片理论知识 分片数量总分片数=主分片数(副分片数+1)"settings": {"number_of_shard...

  • MongoDB分片群集组件

    MongoDB分片群集包含以下组件: 分片:每个分片包含分片数据的子集。从MongoDB 3.6开始,必须将分片部...

  • 第三章 索引、文档与Mapping

    一、核心概念 节点 节点就是一个ES的进程 分片 分片分为主分片与副本分片 主分片负责写入数据 副本分片只负责查询...

  • 【mongoDB】mongoDB分片策略

    chunk切分是根据分片策略进行实施的,分片策略的内容包括分片键和分片算法。 当前,MongoDB支持两种分片算法...

网友评论

      本文标题:PGSQL+citus 分片实战

      本文链接:https://www.haomeiwen.com/subject/arcoihtx.html