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');
网友评论