单节点 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

如果您的机器上已经运行了 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 集群所需的步骤。

  1. 安装 PostgreSQL 14Citus 扩展
# 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/bin cd ~
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;"
  1. 验证安装是否成功

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

psql -p 9700 -c "select citus_version();"

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

Fedora, CentOS, 或 Red Hat

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

  1. 安装 PostgreSQL 14Citus 扩展
# 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/bin cd ~
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;"
  1. 验证安装是否成功

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

psql -p 9700 -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
  1. 安装 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 中创建数据库。

  1. 配置连接和认证

在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 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 手册解释了如何使它们更具限制性。

  1. 启动数据库服务器,创建 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 节点上执行。

  1. 添加 worker 节点信息

我们需要通知 coordinator 有关其 worker 的信息。为了添加这些信息,我们调用一个 UDF,它将节点信息添加到 pg_dist_node 目录表中。对于我们的示例,我们假设有两个 worker(名为 worker-101worker-102)。将 workerDNS 名称(或 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);"
  1. 验证安装是否成功

为了验证安装是否成功,我们检查 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 集群所需的步骤。

在所有节点上执行的步骤

  1. 添加仓库
# Add Citus repository for package manager
curl https://install.citusdata.com/community/rpm.sh | sudo bash
  1. 安装 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 命令来管理服务器本身。

  1. 配置连接和认证

在启动数据库之前,让我们更改其访问权限。默认情况下,数据库服务器仅侦听 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 手册解释了如何使它们更具限制性。

  1. 启动数据库服务器,创建 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 节点上执行。

  1. 添加 worker 节点信息

我们需要通知 coordinator 有关其 worker 的信息。为了添加这些信息,我们调用一个 UDF,它将节点信息添加到 pg_dist_node 目录表中。对于我们的示例,我们假设有两个 worker(名为 worker-101worker-102)。将 workerDNS 名称(或 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);"
  1. 验证安装是否成功

为了验证安装是否成功,我们检查 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

更多

分布式 PostgreSQL 集群(Citus)官方安装指南的更多相关文章

  1. 分布式 PostgreSQL 集群(Citus)官方教程 - 迁移现有应用程序

    将现有应用程序迁移到 Citus 有时需要调整 schema 和查询以获得最佳性能. Citus 扩展了 PostgreSQL 的分布式功能,但它不是扩展所有工作负载的直接替代品.高性能 Citus ...

  2. 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘

    Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ...

  3. 分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据

    在时间序列工作负载中,应用程序(例如一些实时应用程序查询最近的信息,同时归档旧信息. https://docs.citusdata.com/en/v10.2/sharding/data_modelin ...

  4. 分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战

    如果您正在构建软件即服务 (SaaS) 应用程序,您可能已经在数据模型中内置了租赁的概念. 通常,大多数信息与租户/客户/帐户相关,并且数据库表捕获这种自然关系. 对于 SaaS 应用程序,每个租户的 ...

  5. 分布式 PostgreSQL 集群(Citus),官方快速入门教程

    多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...

  6. 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践

    确定应用程序类型 在 Citus 集群上运行高效查询要求数据在机器之间正确分布.这因应用程序类型及其查询模式而异. 大致上有两种应用程序在 Citus 上运行良好.数据建模的第一步是确定哪些应用程序类 ...

  7. 在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)

    准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL 集群. 查看 Citus 集群(kubectl get po -n citus),1 个 Coor ...

  8. Citus 分布式 PostgreSQL 集群 - SQL Reference(查询分布式表 SQL)

    如前几节所述,Citus 是一个扩展,它扩展了最新的 PostgreSQL 以进行分布式执行.这意味着您可以在 Citus 协调器上使用标准 PostgreSQL SELECT 查询进行查询. Cit ...

  9. Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    创建和分布表 要创建分布式表,您需要首先定义表 schema. 为此,您可以使用 CREATE TABLE 语句定义一个表,就像使用常规 PostgreSQL 表一样. CREATE TABLE ht ...

随机推荐

  1. action标签中method={1}怎么理解

    其实用到method={数字}的时候,相应的前面的action是要出现*通配符来搭配的.比如一个小例子:<action name="user_*" class="U ...

  2. CSS3自定义滚动条样式-webkit内核

    自定义滚动条实现 此部分针对webkit内核的浏览器,使用伪类来改变滚动条的默认样式,详情如下: 滚动条组成部分 1. ::-webkit-scrollbar 滚动条整体部分 2. ::-webkit ...

  3. Java 给Word每一页设置不同文字水印效果

    Word中设置水印时,可预设的文字或自定义文字设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法.下面,将以Ja ...

  4. git推送项目到github并使用gitee做镜像仓库

    2022最新版github入门教程,教你如何一步步创建自己的github账号并初始化仓库,然后使用git工具配置个人工作环境.配合gitee仓库,作为github的镜像仓库使用.这篇文章很基础,对萌新 ...

  5. 赠送4本《 PHP 程序员面试笔试宝典》

    < PHP 程序员面试笔试宝典>历时一年,由机械工业出版社出版,在 2018 年 11 月问世.全书共八个章节,涉及 面试笔试经验技巧.PHP 基础知识.PHP 进阶知识,PHP 面向对象 ...

  6. netty系列之:channel和channelGroup

    目录 简介 神龙见首不见尾的channel channel和channelGroup channelGroup的基本使用 将关闭的channel自动移出 同时关闭serverChannel和accep ...

  7. 图解python | 循环与控制

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  8. 图文并茂详解 NAT 协议!

    什么是 NAT 协议 我们的计算机要想访问互联网上的信息,就需要一个地址,而且这个地址是大家(其他主机)所认可的,是公共的,这个地址也叫做公有 IP 地址. 与之相对的,除了公有 IP 地址外,还有私 ...

  9. 解决Springboot中的日期解析错误

    错误信息: error: Failed to parse Date value '2022-01-12 15:00:00': Cannot parse date "2022-01-12 15 ...

  10. ClickHouse在大数据领域应用实践

    一.序言 面向大数据量查询数据库,优点是在较大数据量(千万级)的前提下具有较好的查询性能. 1.应用场景 ClickHouse应用于OLAP(在线分析处理)领域,具体来说满足如下特点使用此技术比较合适 ...