第 4 章 使用 PostgreSQL


PostgreSQL 服务器是一个基于 SQL 语言的开源、健壮且高度可扩展的数据库服务器。PostgreSQL 服务器提供了一个对象关系型数据库系统,其可以管理大量的数据集和大量的并发用户。因此,PostgreSQL 服务器可用在集群中,来管理大量的数据。

PostgreSQL 服务器包含确保数据完整性、构建容错环境和应用程序的功能。使用 PostgreSQL 服务器,您可以使用您自己的数据类型、自定义函数或来自不同编程语言的代码来扩展数据库,而无需重新编译数据库。

了解如何在 RHEL 系统上安装和配置 PostgreSQL,如何备份 PostgreSQL 数据,以及如何从早期的 PostgreSQL 版本迁移。

4.1. 安装 PostgreSQL

RHEL 9 提供 PostgreSQL 13 作为此应用程序流的初始版本,您可以轻松地作为 RPM 软件包安装。

在 RHEL 9 的次版本中,其他 PostgreSQL 版本作为模块提供,具有较短的生命周期:

  • RHEL 9.2 引入了 PostgreSQL 15 作为 postgresql:15 模块流
  • RHEL 9.4 引入了 PostgreSQL 16 作为 postgresql:16 模块流

要安装 PostgreSQL,请使用以下流程:

注意

按照设计,无法并行安装同一模块的多个版本(stream)。因此,您必须只从 postgresql 模块中选择一个可用的流。您可以在容器中使用不同版本的 PostgreSQL 数据库服务器,请参阅 在容器中运行多个 PostgreSQL 版本

流程

  1. 安装 PostgreSQL 服务器软件包:

    • 对于 RPM 软件包中的 PostgreSQL 13

      # dnf install postgresql-server
    • 对于 PostgreSQL 15PostgreSQL 16,通过从 postgresql 模块中选择流(版本)15 或 16,并指定 server 配置文件,例如:

      # dnf module install postgresql:16/server

      postgres 超级用户会自动创建。

  2. 初始化数据库集群:

    # postgresql-setup --initdb

    红帽建议将数据存储在默认的 /var/lib/pgsql/data 目录中。

  3. 启动 postgresql 服务:

    # systemctl start postgresql.service
  4. 启用 postgresql 服务,以便在引导时启动:

    # systemctl enable postgresql.service
重要

如果要从 RHEL 9 中的早期 postgresql 流升级,请按照 切换到更新的流迁移到 RHEL 9 版本的 PostgreSQL 中描述的流程操作。

4.1.1. 在容器中运行多个 PostgreSQL 版本

要在同一主机上运行不同版本的 PostgreSQL,请在容器中运行它们,因为您无法并行安装同一模块的多个版本(流)。

此流程以 PostgreSQL 13PostgreSQL 15 作为示例,但您可以使用 Red Hat Ecosystem Catalog 中提供的任何 PostgreSQL 容器版本。

先决条件

  • container-tools 元数据包已安装。

流程

  1. 使用您的红帽客户门户网站帐户向 registry.redhat.io 注册中心进行身份验证:

    # podman login registry.redhat.io

    如果您已登录到容器注册中心,请跳过这一步。

  2. 在容器中运行 PostgreSQL 13

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_1>:5432 rhel9/postgresql-13

    有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录

  3. 在容器中运行 PostgreSQL 15

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_2>:5432 rhel9/postgresql-15

    有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录

  4. 在容器中运行 PostgreSQL 16

    $ podman run -d --name <container_name> -e POSTGRESQL_USER=<user_name> -e POSTGRESQL_PASSWORD=<password> -e POSTGRESQL_DATABASE=<database_name> -p <host_port_3>:5432 rhel9/postgresql-16

    有关使用此容器镜像用法的更多信息,请参阅 红帽生态系统目录

    注意

    容器名称和两个数据库服务器的主机端口必须不同。

  5. 要确保客户端可以访问网络上的数据库服务器,请在防火墙中打开主机端口:

    # firewall-cmd --permanent --add-port={<host_port_1>/tcp,<host_port_2>/tcp,<host_port_3>/tcp,...}
    # firewall-cmd --reload

验证

  1. 显示正在运行的容器的信息:

    $ podman ps
  2. 连接到数据库服务器,并以 root 用户身份登录:

    # psql -u postgres -p -h localhost -P <host_port> --protocol tcp
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.