搭建分布式数据库集群比较难,特别是对于许多小众公司来讲,能够利用现有条件和技术,在降低学习和应用成本前提下,能够选择的分布式集群不多,今天我们采用Citus架构搭建分布式集群,作为CITUS是POSTGRESQL的扩展架构,对我们后期教程实现读写分离等扩展功能难度相对较低,下面开始进入正题
简介
Citus是Postgres的开源扩展,将Postgres转换成一个分布式数据库,在集群的多个节点上分发数据和查询,具有像分片、分布式SQL引擎、复制表和分布式表等特性。
因为Citus是Postgres的扩展(而不是一个独立的代码分支),所以当你使用Citus时,你也在使用Postgres,可以利用最新的Postgres特性、工具和生态系统。
架构节点
每个集群都有一个称为协调节点(Coordinator Node,CN)的特殊节点,其他节点称为工作节点(Worker Node,WN/DN)。
CN只存储和数据分布相关的元数据,实际的表数据被分成M个分片,打散到N个DN上。
应用程序将它们的查询发送到协调器节点,该节点将查询转发给相关的数据节点并收集结果。
第一步:增加安装CITUS。
# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh | sudo bash
第二步:安装postgresql并初始化
# install PostgreSQL with Citus extension
sudo yum install -y citus102_14
# initialize system database (using RHEL 6 vs 7 method as necessary)
sudo service postgresql-14 initdb || sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
# preload citus extension
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/14/data/postgresql.conf
PS:对于无法实现在线安装的,在第一步后通过下载本地包然后选择本地包进行安装,不清楚的可以参见本教程第一篇。【自建分布式数据库详细指南】(一)起步:聊聊LINUX及POSTGRESQL
第三步:配置数据库
sudo vi /var/lib/pgsql/14/data/postgresql.conf
# Uncomment listen_addresses for the changes to take effect
listen_addresses = '*'
这个是把监听地址改为任意,不修改的话别的主机无法访问,更多关于POSTGRESQL的基础性配置见另外文章
部分新手安装数据库后远程无法连接可能存在以下几个方面的原因
1.防火墙或路由设置 systemctl stop firewalld
2.以上提到的listen_addresses未改为星号
3.pg_hba.conf未配置访问地址
以下配置数据库访问权限:
sudo vi /var/lib/pgsql/14/data/pg_hba.conf
在打开的配置文件中作如下修改,(PS:#是注释符号),对应的IP要进行修改。
# Allow unrestricted access to nodes in the local network. The following ranges
# correspond to 24, 20, and 16-bit blocks in Private IPv4 address spaces.
host all all 10.0.0.0/8 trust
# Also allow the host unrestricted access to connect to itself
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
如果想修改密码,一定在创建集群前修改CN节点密码。
su postgres
-bash$psql -U postgres
postgres=#alter user postgres with password 'new pwd';
postgres=#\q
第四步:启动服务并创建CITUS集群扩展
# start the db server
sudo service postgresql-14 restart
# and make it start automatically when computer does
sudo chkconfig postgresql-14 on
需要在每个节点上进行如上操作并
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
添加worker节点的IP地址(或者DNS名称)和端口号到pg_dist_node表。
sudo -i -u postgres psql -c "SELECT * from master_add_node('192.168.0.101', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('192.168.0.102', 5432);"
验证是否成功
sudo -i -u postgres psql -c "SELECT * FROM citus_get_active_worker_nodes();"
能返回查询到记录即是正常成功
好了开启分布式集群
sudo -i -u postgres psql
【自建分布式数据库详细指南】(三)扩展:在分布式基础上加装读写分离
点击链接加入群聊【CITUS POSTGRESQL MPP数据库】
【发文不易,路过请高抬贵手收藏点个赞^.^】