PostgreSQL集群方案-citus

citus

Citus基本上是Postgres,可以进行横向扩展。它是Postgres的扩展,可以在多台计算机的群集中分发数据和查询。作为扩展(而不是分支),Citus支持新的PostgreSQL版本,使用户可以从新功能中受益,同时保持与现有PostgreSQL工具的兼容性。

Citus使用分片和复制功能在多台计算机上水平扩展PostgreSQL。它的查询引擎使这些服务器之间的传入SQL查询并行化,以实现大型数据集上的实时(不到一秒钟)响应。

集群搭建

基于centos安装

服务器IP 系统软件版本 电脑配置
192.168.1.251 Centos7 i7-6700 + 8GB内存+ 1TB硬盘
192.168.1.252 Centos7 i7-7700 + 24GB内存+ 1TB硬盘
192.168.1.253 Centos7 i7-7700 + 16GB内存+ 1TB硬盘

在所有节点上执行的步骤

  1. 添加资料库
curl https://install.citusdata.com/community/rpm.sh | sudo bash
  1. 安装PostgreSQL + Citus并初始化数据库
# 安装具有Citus扩展名的PostgreSQL
sudo yum install -y citus94_12
# 初始化系统数据库(必要时使用RHEL 6 vs 7方法)
sudo service postgresql-12 initdb || sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 预载citus扩展
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/12/data/postgresql.conf
  1. 配置连接和身份验证

在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听localhost上的客户端。修改客户端身份验证文件配置为允许来自本地网络的所有传入连接。

sudo vi /var/lib/pgsql/12/data/postgresql.conf
# 取消注释listen_addresses,以使更改生效
listen_addresses = '*'
sudo vi /var/lib/pgsql/12/data/pg_hba.conf
# 允许局域网内访问
# host    all             all             192.168.1.0/24              trust
# 允许全部ip可以访问
host    all             all             0.0.0.0/0              trust
# 允许本机不受限制的访问
host    all             all             127.0.0.1/32            trust
host    all             all             ::1/128                 trust
  1. 启动数据库服务器,创建Citus扩展
# 启动数据库服务器
sudo service postgresql-12 restart
# 并使其在计算机运行时自动启动
sudo chkconfig postgresql-12 on

在协调器(主)节点上要执行的步骤

  1. 添加工作节点信息

我们需要将其存储节点告知主节点。要添加此信息,我们调用UDF,它将节点信息添加到pg_dist_node目录表中,协调器使用该表来获取工作节点列表。

sudo -i -u postgres psql -c "SELECT * from master_add_node('192.168.1.252', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('192.168.1.253', 5432);"
  1. 验证安装是否成功

为了验证安装是否成功,我们检查协调器节点是否已选择所需的工作程序配置。在psql shell中运行时,此命令应输出我们添加到上面pg_dist_node表中的工作程序节点。

sudo -i -u postgres psql -c "SELECT * FROM master_get_active_worker_nodes();"

image-20201110145301716

安装postgis扩展

rpm -Uvh https://yum.postgresql.org/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 yum install postgis30_12

注意事项

数据库创建

在主节点创建数据库后,在所有存储节点同样需要创建数据库。并且每个数据库都需要创建citus扩展。要配合Citus使用其它扩展,Citus必须是第一个启用的扩展,其次,必须在coordinator和worker节点都安装相应扩展。

image-20201110145644140

创建分布式表

凡是未显式指出的SQL,均在协调节点上执行

  1. 新建测试表
create table test_table(id int, name varchar(16));
  1. 配置分片原则
SELECT master_create_distributed_table('test_table', 'id', 'hash');
  1. 根据分片数和副本数进行分片
-- 创建两个分片和两个副本
SELECT master_create_worker_shards('test_table', 2, 2);
  1. 创建完成后,可以在子节点查看到

image-20201110152028136

使用postgis3.0查询mvt数据

扫描二维码关注公众号,回复: 13558542 查看本文章

image-20201119151024935

image-20201119153704939

image-20201119161210286

猜你喜欢

转载自blog.csdn.net/qq_36213352/article/details/117856507