PostgreSQL+Citus分布式数据库

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: PostgreSQL+Citus分布式数据库
  1. 概述
    Citus是基于PostgreSQL插件实现的一款开源分布式数据库,它允许数据库服务器(称为节点)在“无共享”架构中相互协调。这些节点形成一个集群,允许PostgreSQL保存更多数据并使用比单台计算机更多的CPU内核。这种架构还允许通过简单地向集群添加更多节点来扩展数据库。

  2. 前期准备
    规划4台机器
    coordinator节点 192.168.10.200
    worker节点1 192.168.10.201
    worker节点2 192.168.10.202
    worker节点3 192.168.10.203

  3. 安装 PostGreSQL
    3.1 创建用户
    useradd postgres
    passwd postgres
    su – postgres
    接下来所有操作均在 postgres 用户下执行

3.2 创建相对应路径
mkdir /home/postgres/postgesql #创建 postgresql 安装路径
mkdir /home/postgres/data #创建数据存放路径
mkdir /home/postgres/log #创建日志存放路径
3.3 安装 postgresql
tar zxvf postgresql-12.3.tar.gz
cd postgresql-12.3
./configure --prefix=/home/postgres/postgresql --with-pgport=5432 --without-zlib
–with-pgport:指定实例端口为 5432
–without-zlib:不使用 zlib 库包,为了防止服务器缺少这些库包;
注:若在编译 postgresql 时提示缺少 readline 的包,需要从镜像安装 readline,readline-devel和curl-devel相关包。

make && make install
安装 pg_stat_statements

cd /home/postgres/postgresql-12.3/contrib/pg_stat_statements
make && make install

  1. 安装 Citus 组件
    安装 citus

tar zxvf citus-9.5.0.tar.gz
cd citus-9.5.0
./configure PG_CONFIG=/home/postgres/postgresql/bin/pg_config
注:若在编译 citus 时提示缺少 libcurl 包,需要从在线或者下载 curl-devel 包并安装

make && make install

  1. 配置 PostGreSQL 和 Citus
    初始化数据目录(即初始化实例)

/home/postgres/postgresql/bin/initdb -D /home/postgres/data/postgresql –W
注:-W 表示使用当前用户做数据库用户

参数配置(数据库实例参数配置)
配置 postgresql.auto.conf:
编辑 postgresql.auto.conf 配置文件,加入如下内容:

listen_addresses = '*'
port = '5432'
max_connections = '2000'
shared_buffers = '96GB'
default_text_search_config = 'pg_catalog.english'
shared_preload_libraries = 'citus,pg_stat_statements'
citus.replication_model = 'streaming'
配置 pg_hba.conf:

vi /home/postgres/data/postgresql/pg_hba.conf
添加以下内容:

host all all 0.0.0.0/0 trust

  1. 启动服务
    启动 postgresql 服务

/home/postgres/postgresql/bin/pg_ctl -D /home/postgres/data/postgresql -l/home/postgres/log/postgresql/postgresql.log start &

  1. 安装插件
    7.1 创建extention
    /home/postgres/postgresql/bin/psql -p5432 –Upostgres postgrespostgres

    create extension citus; postgres=# create extension pg_stat_statements;

    备注:以上操作每个节点都执行

给每个 worker 节点添加双实例(只在3台worker节点操作)

7.2 初始化双实例数据目录
在每个 worker 节点分别执行以下命令:

/home/postgres/postgresql/bin/initdb -D /home/postgres/data/postgresql2 –W
将 5432 实例的 postgresql.auto.conf 和 pg_hba.conf 文件拷贝并替换 postgresql2 目录下的文件:

cp /home/postgres/data/postgresql/postgresql.auto.conf /home/postgres/data/postgresql2/
cp /home/postgres/data/postgresql/pg_hba.conf /home/postgres/data/postgresql2/
vi /home/postgres/data/postgresql2/postgres.auto.conf
将端口号改成 5433(port = 5433),保存并退出;

7.3 启动 postgresql 服务
/home/postgres/postgresql/bin/pg_ctl -D /home/postgres/data/postgresql2/ -l/home/postgres/log/postgresql2/postgresql.log start &
7.4 安装插件
/home/postgres/postgresql/bin/psql -p5433 –Upostgres postgres
postgres=# create extension citus; postgres=# create extension pg_stat_statements;

  1. 连接测试
    8.1 连接测试
    所有服务器执行以下步骤:

systemctl stop firewalld
systemctl disable firewalld
/home/postgres/postgresql/bin/psql –h192.168.10.201 -p5432 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.202 -p5432 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.201 -p5433 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.203 -p5432 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.202 -p5433 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.200 -p5432 –Upostgres postgres
/home/postgres/postgresql/bin/psql –h192.168.10.203 -p5433 –Upostgres postgres
8.2 citus 主服务器(coordinator)添加数据节点(worker)
在 citus 主服务器(coordinator,即 192.168.10.200)执行以下操作:

/home/postgres/postgresql/bin/psql -p5432 –Upostgres postgres
postgres=# SELECT from master_add_node('192.168.10.203',5432);
postgres=# SELECT
from master_add_node('192.168.10.203',5433);
postgres=# SELECT from master_add_node('192.168.10.202',5432);
postgres=# SELECT
from master_add_node('192.168.10.202',5433); postgres=# SELECT from master_add_node('192.168.10.201',5432);
postgres=# SELECT
from master_add_node('192.168.10.201',5433);
8.3 查看是否添加成功
postgres=# SELECT * FROM master_get_active_worker_nodes();

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构涵盖数据库集群、数据库、表、索引、视图等对象,每个对象有唯一的oid标识。数据库集群包含多个数据库,每个数据库又包含多个模式,模式内含表、函数等。通过特定SQL命令可查看和管理这些数据库对象。
|
14天前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
20天前
|
SQL 运维 关系型数据库
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!
|
1月前
|
存储 关系型数据库 数据库
华为数据库openGauss与PostgreSQL使用对比
华为openGauss数据库基于PostgreSQL内核演进,进行了多项增强。密码认证从MD5升级为SHA256;字符串存储中,char(n)、varchar(n)的n由字符改为字节,新增nvarchar2(n)表示字符,最大存储100MB;且将空字符''统一转换为null,提升了数据处理的一致性和安全性。
120 12
|
2月前
|
容灾 关系型数据库 分布式数据库
PolarDB分布式版:与云融合的分布式数据库发展新阶段
PolarDB分布式版标志着分布式数据库与云融合的新阶段。它经历了三个发展阶段:从简单的分布式中间件,到一体化分布式架构,再到云原生分布式数据库。PolarDB充分利用云资源的弹性、高性价比、高可用性和隔离能力,解决了大规模数据扩展性问题,并支持多租户场景和复杂事务处理。零售中台的建设背景包括国家数字化转型战略及解决信息孤岛问题,采用分布式数据库提升高可用性和性能,满足海量订单处理需求。展望未来,零售中台将重点提升容灾能力、优化资源利用并引入AI技术,以实现更智能的服务和更高的业务连续性。
106 9
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
4月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库集群
PostgreSQL的逻辑存储结构涵盖了数据库集群、数据库、表、索引、视图等对象,每个对象都有唯一的oid标识。数据库集群是由单个PostgreSQL实例管理的所有数据库集合,共享同一配置和资源。集群的数据存储在一个称为数据目录的单一目录中,可通过-D选项或PGDATA环境变量指定。
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL性能飙升的秘密:这几个调优技巧让你的数据库查询速度翻倍!
【10月更文挑战第25天】本文介绍了几种有效提升 PostgreSQL 数据库查询效率的方法,包括索引优化、查询优化、配置优化和硬件优化。通过合理设计索引、编写高效 SQL 查询、调整配置参数和选择合适硬件,可以显著提高数据库性能。
775 1
|
19天前
|
NoSQL Java 中间件
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
459 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
|
23天前
|
NoSQL Java Redis
Springboot使用Redis实现分布式锁
通过这些步骤和示例,您可以系统地了解如何在Spring Boot中使用Redis实现分布式锁,并在实际项目中应用。希望这些内容对您的学习和工作有所帮助。
152 83

热门文章

最新文章