概述
Citus是基于PostgreSQL插件实现的一款开源分布式数据库,它允许数据库服务器(称为节点)在“无共享”架构中相互协调。这些节点形成一个集群,允许PostgreSQL保存更多数据并使用比单台计算机更多的CPU内核。这种架构还允许通过简单地向集群添加更多节点来扩展数据库。前期准备
规划4台机器
coordinator节点 192.168.10.200
worker节点1 192.168.10.201
worker节点2 192.168.10.202
worker节点3 192.168.10.203安装 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
- 安装 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
- 配置 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
- 启动服务
启动 postgresql 服务
/home/postgres/postgresql/bin/pg_ctl -D /home/postgres/data/postgresql -l/home/postgres/log/postgresql/postgresql.log start &
- 安装插件
7.1 创建extention
/home/postgres/postgresql/bin/psql -p5432 –Upostgres postgrespostgrescreate 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.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();