分布式 PostgreSQL 集群(Citus)官方安装指南

单节点 Citus

Docker (Mac 与 Linux)

Docker 镜像仅用于开发/测试目的, 并且尚未准备好用于生产用途。

您可以使用一个命令在 Docker 中启动 Citus:

# start the image
docker run-d--namecitus -p 5432:5432 -e POSTGRES_PASSWORD=mypass \
citusdata/citus:10.2

# verify it's running, and that Citus is installed:
psql -Upostgres -hlocalhost -dpostgres -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 startinguserland proxy:
Bind for 0.0.0.0:5432: unexpected erroraddress alreadyin use

这是因为 Citus 镜像尝试绑定到标准 PostgreSQL 端口 5432。要解决此问题,请使用 -p 选项选择不同的端口。您还需要在下面的 psql 命令中使用新端口。

Ubuntu 或 Debian

本节介绍在您自己的 Linux 机器上使用 deb 包设置单节点 Citus 集群所需的步骤。

1、安装 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-yinstall 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/bin

cd ~
mkdir citus
initdb -Dcitus

Citus 是一个 Postgres 扩展。要告诉 Postgres 使用这个扩展,你需要将它添加到一个名为 shared_preload_libraries 的配置变量中:

echo "shared_preload_libraries = 'citus'" >> citus/postgresql.conf

3、启动数据库服务器

最后,我们将为新目录启动一个 PostgreSQL 实例:

pg_ctl -Dcitus -o"-p 9700"-lcitus_logfile start

上面您将 Citus 添加到 shared_preload_libraries。这让它可以连接到 Postgres 的一些深层部分,交换查询计划器(query planner)和执行器(executor)。在这里,我们加载 Citus 面向用户的一面(例如您将很快调用的函数):

psql -p9700 -c"CREATE EXTENSION citus;"

4、验证安装是否成功

要验证安装是否成功,并且 Citus 已安装:

psql -p9700 -c"select citus_version();"

您应该看到 Citus 扩展的详细信息。

Fedora, CentOS, 或 Red Hat

本节介绍在您自己的 Linux 机器上使用 RPM 包设置单节点 Citus 集群所需的步骤。

1、安装 PostgreSQL 14 和 Citus 扩展

# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh |sudo bash

# install Citus extension
sudo yuminstall -ycitus102_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/bin
cd ~
mkdir citus
initdb -Dcitus

Citus 是一个 Postgres 扩展。要告诉 Postgres 使用这个扩展,你需要将它添加到一个名为 shared_preload_libraries 的配置变量中:

echo "shared_preload_libraries = 'citus'" >> citus/postgresql.conf

3、启动数据库服务器

最后,我们将为新目录启动一个 PostgreSQL 实例:

pg_ctl -Dcitus -o"-p 9700"-lcitus_logfile start

上面您将 Citus 添加到 shared_preload_libraries。这让它可以连接到 Postgres 的一些深层部分,交换查询计划器(query planner)和执行器(executor)。在这里,我们加载 Citus 面向用户的一面(例如您将很快调用的函数):

psql -p9700 -c"CREATE EXTENSION citus;"

4、验证安装是否成功

要验证安装是否成功,并且 Citus 已安装:

psql -p9700 -c"select citus_version();"

您应该看到 Citus 扩展的详细信息。

在此步骤中,您已完成安装过程并准备好使用 Citus 集群。为了帮助您入门,我们提供了一个教程,其中包含有关在几分钟内使用示例数据设置 Citus 集群的说明。

多节点 Citus

Ubuntu 或 Debian

本节介绍使用 deb 包在您自己的 Linux 机器上设置多节点 Citus 集群所需的步骤。

在所有节点上执行的步骤

1、添加仓库

# Add Citus repository for package manager
curl https://install.citusdata.com/community/deb.sh |sudo bash

2、安装 PostgreSQL + Citus 并初始化数据库

# install the server and initialize db
sudo apt-get-yinstall postgresql-14-citus-10.2
# preload citus extension
sudo pg_conftool14 mainsetshared_preload_libraries citus

这会在 /etc/postgresql/14/main 中安装集中配置,并在 /var/lib/postgresql/14/main 中创建数据库。

3、配置连接和认证

在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 localhost 上的客户端。作为此步骤的一部分,我们指示它侦听所有 IP 接口,然后配置客户端身份验证文件以允许来自本地网络的所有传入连接。

sudo pg_conftool14 mainsetlisten_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 手册解释了如何使它们更具限制性。

4、启动数据库服务器,创建 Citus 扩展

# start the db server
sudo servicepostgresql restart
# and make it start automatically when computer does
sudo update-rc.d postgresqlenable

您必须将 Citus 扩展添加到要在集群中使用的每个数据库。以下示例将扩展名添加到名为 postgres 的默认数据库中。

# add the citus extension
sudo -i-upostgres psql-c"CREATE EXTENSION citus;"

在 coordinator 节点上执行的步骤

下面列出的步骤必须仅在执行了前面提到的步骤之后在 coordinator 节点上执行。

1、添加 worker 节点信息

我们需要通知 coordinator 有关其 worker 的信息。为了添加这些信息,我们调用一个 UDF,它将节点信息添加到 pg_dist_node 目录表中。对于我们的示例,我们假设有两个 worker(名为 worker-101,worker-102)。将 worker 的 DNS 名称(或 IP 地址)和服务器端口添加到表中。

sudo -i-upostgres psql-c"SELECT * from citus_add_node('worker-101', 5432);"
sudo -i-upostgres psql-c"SELECT * from citus_add_node('worker-102', 5432);"

2、验证安装是否成功

为了验证安装是否成功,我们检查 coordinator 节点是否选择了所需的工作配置。这个命令在 psql shell 中运行时应该输出我们添加到上面 pg_dist_node 表中的 worker 节点。

sudo -i-upostgres psql-c"SELECT * FROM citus_get_active_worker_nodes();"

准备使用 Citus:

在此步骤中,您已完成安装过程并准备好使用 Citus 集群。可以通过 postgres 用户在 psql 中访问新的 Citus 数据库:

sudo -i-upostgres psql

Fedora、CentOS 或 Red Hat

本节介绍在您自己的 Linux 机器上使用 RPM 包设置多节点 Citus 集群所需的步骤。

在所有节点上执行的步骤

1、添加仓库

# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh |sudo bash

2、安装 PostgreSQL + Citus 并初始化数据库

# install PostgreSQL with Citus extension
sudo yuminstall -ycitus102_14
# initialize system database (using RHEL 6 vs 7 method as necessary)
sudo servicepostgresql-14initdb ||sudo /usr/pgsql-14/bin/postgresql-14-setupinitdb
# 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 命令来管理服务器本身。

3、配置连接和认证

在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 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。

4、启动数据库服务器,创建 Citus 扩展

# start the db server
sudo servicepostgresql-14restart
# and make it start automatically when computer does
sudo chkconfigpostgresql-14on

您必须将 Citus 扩展添加到要在集群中使用的每个数据库。以下示例将扩展名添加到名为 postgres 的默认数据库中。

sudo -i-upostgres psql-c"CREATE EXTENSION citus;"

在 coordinator 节点上执行的步骤

下面列出的步骤必须仅在执行了前面提到的步骤之后在 coordinator 节点上执行。

1、添加 worker 节点信息

我们需要通知 coordinator 有关其 worker 的信息。为了添加这些信息,我们调用一个 UDF,它将节点信息添加到 pg_dist_node 目录表中。对于我们的示例,我们假设有两个 worker(名为 worker-101,worker-102)。将 worker 的 DNS 名称(或 IP 地址)和服务器端口添加到表中。

sudo -i-upostgres psql-c"SELECT * from citus_add_node('worker-101', 5432);"
sudo -i-upostgres psql-c"SELECT * from citus_add_node('worker-102', 5432);"

2、验证安装是否成功

为了验证安装是否成功,我们检查 coordinator 节点是否选择了所需的工作配置。这个命令在 psql shell 中运行时应该输出我们添加到上面 pg_dist_node 表中的 worker 节点。

sudo -i-upostgres psql-c"SELECT * FROM citus_get_active_worker_nodes();"

准备使用 Citus:

在此步骤中,您已完成安装过程并准备好使用 Citus 集群。可以通过 postgres 用户在 psql 中访问新的 Citus 数据库:

sudo -i-upostgres psql

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/296573.html<

(0)
运维的头像运维
上一篇2025-05-22 01:56
下一篇 2025-05-22 01:58

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注