PostgreSQL+Citus分布式数据库

简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1137 152
|
6月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
873 156
|
8月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
9月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
1138 213
|
6月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
6月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
8月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
358 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
8月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
466 10
|
7月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
710 0
|
9月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】基于PostgreSQL的分布式数据库:Citus
Citus 是基于 PostgreSQL 的开源分布式数据库,采用 shared nothing 架构,具备良好的扩展性。它以插件形式集成,部署简单,适用于处理大规模数据和高并发场景。本文介绍了 Citus 的基础概念、安装配置步骤及其在单机环境下的集群搭建方法。
840 2

热门文章

最新文章

推荐镜像

更多