分布式 PostgreSQL 集群(Citus)官方安装指南
单节点 Citus
Docker (Mac 与 Linux)
Docker
镜像仅用于开发/测试目的, 并且尚未准备好用于生产用途。
您可以使用一个命令在 Docker
中启动 Citus
:
# start the image
docker run -d --name citus -p 5432:5432 -e POSTGRES_PASSWORD=mypass \citusdata/citus:10.2# verify it's running, and that Citus is installed:
psql -U postgres -h localhost -d postgres -c "SELECT * FROM citus_version();"
您应该会看到最新版本的 Citus
。
集群启动并运行后,您可以访问我们关于多租户应用程序或实时分析的教程,在几分钟内开始使用 Citus
。
- https://docs.citusdata.com/en/v10.2/get_started/tutorial_multi_tenant.html#multi-tenant-tutorial
- https://docs.citusdata.com/en/v10.2/get_started/tutorial_realtime_analytics.html#real-time-analytics-tutorial
如果您的机器上已经运行了 PostgreSQL
,则在启动 Docker
容器时可能会遇到此错误:
Error starting userland proxy:
Bind for 0.0.0.0:5432: unexpected error address already in use
这是因为 Citus
镜像尝试绑定到标准 PostgreSQL
端口 5432
。要解决此问题,请使用 -p
选项选择不同的端口。您还需要在下面的 psql
命令中使用新端口。
Ubuntu 或 Debian
本节介绍在您自己的 Linux
机器上使用 deb
包设置单节点 Citus
集群所需的步骤。
- 安装
PostgreSQL 14
和Citus
扩展
# Add Citus repository for package manager
curl https://install.citusdata.com/community/deb.sh | sudo bash# install the server and initialize db
sudo apt-get -y install postgresql-14-citus-10.2
2.初始化集群
让我们在磁盘上创建一个新数据库。为了方便使用 PostgreSQL Unix domain socket
连接,我们将使用 postgres
用户。
# this user has access to sockets in /var/run/postgresql
sudo su - postgres# include path to postgres binaries
export PATH=$PATH:/usr/lib/postgresql/14/bincd ~
mkdir citus
initdb -D citus
Citus
是一个 Postgres
扩展。要告诉 Postgres
使用这个扩展,你需要将它添加到一个名为 shared_preload_libraries
的配置变量中:
echo "shared_preload_libraries = 'citus'" >> citus/postgresql.conf
3.启动数据库服务器
最后,我们将为新目录启动一个 PostgreSQL
实例:
pg_ctl -D citus -o "-p 9700" -l citus_logfile start
上面您将 Citus
添加到 shared_preload_libraries
。这让它可以连接到 Postgres
的一些深层部分,交换查询计划器(query planner)
和执行器(executor)
。在这里,我们加载 Citus
面向用户的一面(例如您将很快调用的函数):
psql -p 9700 -c "CREATE EXTENSION citus;"
- 验证安装是否成功
要验证安装是否成功,并且 Citus
已安装:
psql -p 9700 -c "select citus_version();"
您应该看到 Citus
扩展的详细信息。
Fedora, CentOS, 或 Red Hat
本节介绍在您自己的 Linux
机器上使用 RPM
包设置单节点 Citus
集群所需的步骤。
- 安装
PostgreSQL 14
和Citus
扩展
# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh | sudo bash# install Citus extension
sudo yum install -y citus102_14
2.初始化集群
让我们在磁盘上创建一个新数据库。为了方便使用 PostgreSQL Unix domain socket
连接,我们将使用 postgres
用户。
# this user has access to sockets in /var/run/postgresql
sudo su - postgres# include path to postgres binaries
export PATH=$PATH:/usr/pgsql-14/bincd ~
mkdir citus
initdb -D citus
Citus
是一个 Postgres
扩展。要告诉 Postgres
使用这个扩展,你需要将它添加到一个名为 shared_preload_libraries
的配置变量中:
echo "shared_preload_libraries = 'citus'" >> citus/postgresql.conf
3.启动数据库服务器
最后,我们将为新目录启动一个 PostgreSQL
实例:
pg_ctl -D citus -o "-p 9700" -l citus_logfile start
上面您将 Citus
添加到 shared_preload_libraries
。这让它可以连接到 Postgres
的一些深层部分,交换查询计划器(query planner)
和执行器(executor)
。在这里,我们加载 Citus
面向用户的一面(例如您将很快调用的函数):
psql -p 9700 -c "CREATE EXTENSION citus;"
- 验证安装是否成功
要验证安装是否成功,并且 Citus
已安装:
psql -p 9700 -c "select citus_version();"
您应该看到 Citus
扩展的详细信息。
在此步骤中,您已完成安装过程并准备好使用 Citus
集群。 为了帮助您入门,我们提供了一个教程,其中包含有关在几分钟内使用示例数据设置 Citus
集群的说明。
多节点 Citus
Ubuntu 或 Debian
本节介绍使用 deb
包在您自己的 Linux
机器上设置多节点 Citus
集群所需的步骤。
在所有节点上执行的步骤
- 添加仓库
# Add Citus repository for package manager
curl https://install.citusdata.com/community/deb.sh | sudo bash
- 安装
PostgreSQL + Citus
并初始化数据库
# install the server and initialize db
sudo apt-get -y install postgresql-14-citus-10.2# preload citus extension
sudo pg_conftool 14 main set shared_preload_libraries citus
这会在 /etc/postgresql/14/main 中安装集中配置,并在 /var/lib/postgresql/14/main 中创建数据库。
- 配置连接和认证
在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 localhost
上的客户端。作为此步骤的一部分,我们指示它侦听所有 IP
接口,然后配置客户端身份验证文件以允许来自本地网络的所有传入连接。
sudo pg_conftool 14 main set listen_addresses '*'
sudo vi /etc/postgresql/14/main/pg_hba.conf
# 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
您的 DNS 设置可能不同。 此外,这些设置对于某些环境来说过于宽松,请参阅我们关于提高工作人员安全性的说明。 PostgreSQL 手册解释了如何使它们更具限制性。
- 启动数据库服务器,创建 Citus 扩展
# start the db server
sudo service postgresql restart
# and make it start automatically when computer does
sudo update-rc.d postgresql enable
您必须将 Citus
扩展添加到要在集群中使用的每个数据库。 以下示例将扩展名添加到名为 postgres
的默认数据库中。
# add the citus extension
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
在 coordinator 节点上执行的步骤
下面列出的步骤必须仅在执行了前面提到的步骤之后在 coordinator 节点上执行。
- 添加
worker
节点信息
我们需要通知 coordinator
有关其 worker
的信息。为了添加这些信息,我们调用一个 UDF
,它将节点信息添加到 pg_dist_node
目录表中。对于我们的示例,我们假设有两个 worker
(名为 worker-101
,worker-102
)。将 worker
的 DNS
名称(或 IP
地址)和服务器端口添加到表中。
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-101', 5432);"
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-102', 5432);"
- 验证安装是否成功
为了验证安装是否成功,我们检查 coordinator
节点是否选择了所需的工作配置。 这个命令在 psql shell
中运行时应该输出我们添加到上面 pg_dist_node
表中的 worker
节点。
sudo -i -u postgres psql -c "SELECT * FROM citus_get_active_worker_nodes();"
准备使用 Citus
在此步骤中,您已完成安装过程并准备好使用 Citus
集群。可以通过 postgres
用户在 psql
中访问新的 Citus
数据库:
sudo -i -u postgres psql
Fedora、CentOS 或 Red Hat
本节介绍在您自己的 Linux
机器上使用 RPM
包设置多节点 Citus
集群所需的步骤。
在所有节点上执行的步骤
- 添加仓库
# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh | sudo bash
- 安装
PostgreSQL + Citus
并初始化数据库
# 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
PostgreSQL
在 /usr/pgsql-14/bin
中添加了特定于版本的二进制文件,但您通常只需要 psql
,它的最新版本已添加到您的路径中,并且可以使用 service
命令来管理服务器本身。
- 配置连接和认证
在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 localhost
上的客户端。 作为此步骤的一部分,我们指示它侦听所有 IP
接口,然后配置客户端身份验证文件以允许来自本地网络的所有传入连接。
sudo vi /var/lib/pgsql/14/data/postgresql.conf
# Uncomment listen_addresses for the changes to take effect
listen_addresses = '*'
sudo vi /var/lib/pgsql/14/data/pg_hba.conf
# 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
您的 DNS
设置可能不同。 此外,这些设置对于某些环境来说过于宽松,请参阅我们关于提高 Worker 安全性的说明。PostgreSQL
手册解释了如何使它们更具限制性。
- https://docs.citusdata.com/en/v10.2/admin_guide/cluster_management.html#worker-security
- 启动数据库服务器,创建 Citus 扩展
# start the db server
sudo service postgresql-14 restart
# and make it start automatically when computer does
sudo chkconfig postgresql-14 on
您必须将 Citus
扩展添加到要在集群中使用的每个数据库。 以下示例将扩展名添加到名为 postgres
的默认数据库中。
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
在 coordinator 节点上执行的步骤
下面列出的步骤必须仅在执行了前面提到的步骤之后在 coordinator 节点上执行。
- 添加
worker
节点信息
我们需要通知 coordinator
有关其 worker
的信息。为了添加这些信息,我们调用一个 UDF
,它将节点信息添加到 pg_dist_node
目录表中。对于我们的示例,我们假设有两个 worker
(名为 worker-101
,worker-102
)。将 worker
的 DNS
名称(或 IP
地址)和服务器端口添加到表中。
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-101', 5432);"
sudo -i -u postgres psql -c "SELECT * from citus_add_node('worker-102', 5432);"
- 验证安装是否成功
为了验证安装是否成功,我们检查 coordinator
节点是否选择了所需的工作配置。 这个命令在 psql shell
中运行时应该输出我们添加到上面 pg_dist_node
表中的 worker
节点。
sudo -i -u postgres psql -c "SELECT * FROM citus_get_active_worker_nodes();"
准备使用 Citus
在此步骤中,您已完成安装过程并准备好使用 Citus
集群。可以通过 postgres
用户在 psql
中访问新的 Citus
数据库:
sudo -i -u postgres psql
更多
- Django-Multitenant,分布式多租户数据库项目实战(Python/Django+Postgres+Citus)
- 分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据
分布式 PostgreSQL 集群(Citus)官方安装指南相关推荐
- 分布式 PostgreSQL 集群(Citus)官方教程 - 迁移现有应用程序
将现有应用程序迁移到 Citus 有时需要调整 schema 和查询以获得最佳性能. Citus 扩展了 PostgreSQL 的分布式功能,但它不是扩展所有工作负载的直接替代品.高性能 Citus ...
- 分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战
如果您正在构建软件即服务 (SaaS) 应用程序,您可能已经在数据模型中内置了租赁的概念. 通常,大多数信息与租户/客户/帐户相关,并且数据库表捕获这种自然关系. 对于 SaaS 应用程序,每个租户的 ...
- 分布式 PostgreSQL 集群(Citus),官方快速入门教程
多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...
- 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
确定应用程序类型 在 Citus 集群上运行高效查询要求数据在机器之间正确分布.这因应用程序类型及其查询模式而异. 大致上有两种应用程序在 Citus 上运行良好.数据建模的第一步是确定哪些应用程序类 ...
- 在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)...
准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL 集群. 查看 Citus 集群(kubectl get po -n citus),1 个 Coor ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)
创建和分布表 要创建分布式表,您需要首先定义表 schema. 为此,您可以使用 CREATE TABLE 语句定义一个表,就像使用常规 PostgreSQL 表一样. CREATE TABLE ht ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(查询处理)
一个 Citus 集群由一个 coordinator 实例和多个 worker 实例组成. 数据在 worker 上进行分片和复制,而 coordinator 存储有关这些分片的元数据.向集群发出的所 ...
- 理解和实现分布式TensorFlow集群完整教程
手把手教你搭建分布式集群,进入生产环境的TensorFlow 分布式TensorFlow简介 前一篇<分布式TensorFlow集群local server使用详解>我们介绍了分布式Ten ...
- 分布式TensorFlow集群local server使用详解
通过local server理解分布式TensorFlow集群的应用与实现. 简介 TensorFlow从0.8版本开始,支持分布式集群,并且自带了local server方便测试. Local ...
最新文章
- 使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容
- scala maven plugin
- python函数与模块学习_Python函数与模块学习1
- ubuntu12 04下django安装略谈
- 通俗理解滑模变结构(2)
- kafka自带的zk启动_Centos上将zookeeper和kafka设置为开机自启
- 关于 Apple Metal API 的一些想法
- node连接--MySQL
- Flink之Watermark滑动窗口案例
- 惠普m154a状态页_惠普新品NS—1005w无线智能应用与驱动安装篇
- linux创建用户已存在哪里,解决linux下创建用户时出现 Creating mailbox file: 文件已存在...
- 阿里飞猪曝杀熟;贾跃亭“没有抛弃”恒大;百度起诉搜狗浏览器劫持流量 | 极客头条...
- php时间戳怎么转换成时间格式,php时间戳如何转换为时间格式
- 批量打印图片不显示的问题
- 化工人员定位安全管理系统解决方案
- Android 画三角形shape
- 插入目录后 正文页码重新怎么从1开始
- python中split什么意思_python中split的意思是什么(python中字符串的意思)
- SDCC 2017·深圳站八大不容错过的理由
- C++后端开发知识点总结
热门文章
- 微店铺是什么?做一个微店铺小程序的流程
- 解决bootstrap轮播图因为图片尺寸造成的问题
- 计算机控制原理实验报告,计算机组成原理实验报告范文
- 【时间序列分析】13. Hilbert空间
- android 华为荣耀v8不能上传视频,华为 荣耀V8 开启USB调试模式
- TurboMail为企业提供海量投递邮件群发系统
- 2020中国科技机器人企业TOP50
- 坚果手机刷linux,3/3T刷入Pt锤子SmartisanOS6的正确方法,解决3T区错误教程的问题...
- Android号码匹配位数修改 来电显示不匹配
- 用MSComm控件实现来电显示