服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - PostgreSQL - 分布式 PostgreSQL 集群(Citus)官方安装指南

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

2023-05-07 03:09未知服务器之家 PostgreSQL

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

分布式 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。

  • http://www.zzvips.com/uploads/allimg/g12unk2i0fc.html data-id="l20de63f-sP3ky88Q">http://www.zzvips.com/uploads/allimg/gslhldpqdur.html data-id="pd157317-uX5h9w8m">如果您的机器上已经运行了 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 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/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;"

    4、验证安装是否成功

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

    psql -p 9700 -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 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;"

    4、验证安装是否成功

    要验证安装是否成功,并且 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

    2、安装 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 中创建数据库。

    3、配置连接和认证

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

    4、启动数据库服务器,创建 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-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);"

    2、验证安装是否成功

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

    2、安装 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 命令来管理服务器本身。

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

    http://www.zzvips.com/uploads/allimg/lisjbddye0r.html data-id="h6e90be6-l50URzQb" id="h6e90be6-l50URzQb">4、启动数据库服务器,创建 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-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);"

    2、验证安装是否成功

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

延伸 · 阅读

精彩推荐
  • PostgreSQLRDS PostgreSQL一键大版本升级技术解密

    RDS PostgreSQL一键大版本升级技术解密

    一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...

    未知1192023-05-07
  • PostgreSQL分布式 PostgreSQL之Citus 架构

    分布式 PostgreSQL之Citus 架构

    节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...

    未知802023-05-07
  • PostgreSQLPostgresql查询效率计算初探

    Postgresql查询效率计算初探

    这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...

    轨迹4622020-05-03
  • PostgreSQLPostgreSQL标准建表语句分享

    PostgreSQL标准建表语句分享

    这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    码上得天下7962021-02-27
  • PostgreSQL深入理解PostgreSQL的MVCC并发处理方式

    深入理解PostgreSQL的MVCC并发处理方式

    这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...

    PostgreSQL教程网3622020-04-25
  • PostgreSQLpostgresql 数据库中的数据转换

    postgresql 数据库中的数据转换

    postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...

    postgresql教程网12482021-10-08
  • PostgreSQLPostgresql开启远程访问的步骤全纪录

    Postgresql开启远程访问的步骤全纪录

    postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...

    我勒个去6812020-04-30
  • PostgreSQLpostgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    J符离13432021-04-12