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

4. 安装 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

5. 配置 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

6. 启动服务

启动 postgresql 服务

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

7. 安装插件

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;

8. 连接测试

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();

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值