PostgreSQL教程:开始使用PostgreSQL16

智能真的很好说 2024-09-06 14:24:39

多年来,PostgreSQL一直是企业软件和开源中保存得最好的秘密之一——一个功能强大、强大、专业维护的关系数据库。MySQL可能更广为人知,但PostgreSQL提供了许多MySQL才开始提供的功能。

在本文中,我将介绍设置和运行基本PostgreSQL安装的步骤。大部分讨论都针对的是从头开始的人,但我还将讨论如何从之前的PostgreSQL安装或其他数据库解决方案中迁移数据。本文重点介绍PostgreSQL 16系列版本,截至本文撰写时,PostgreSQL是最新和最新的版本。

如何安装PostgreSQL Windows、Linux和macOS

PostgreSQL以二进制形式适用于所有主要操作系统:Windows的桌面和服务器版本、Linux、macOS和其他一些流行的版本,如Solaris。

总的来说,PostgreSQL的功能在它支持的所有平台上都是一样的。然而,该规则有一些例外,我稍后将详细解释。请记住,这些差异可能会如何影响任何部署或应用程序开发计划。

在Windows上安装PostgreSQL

想要在Windows上设置PostgreSQL的开发人员可以选择由第三方打包的安装程序——从简单的.zip存档到交互式GUI驱动的安装程序。

最“祝福”的选项,即PostgreSQL自己的文档中链接的选项,是EnterpriseDB安装程序。它包括PostgreSQL的图形安装向导,这是一个用于设置数据库及其支持工具的简单分步工具。它还包括“Stack Builder”,这是一个用于下载和安装大量附加工具的工具。这些包括数据库驱动程序、PostgreSQL的其他版本(如果您需要并排运行它们)、EnterpriseDB自己的PostgreSQL附加组件以及PostgreSQL的Slony-I复制系统。对于专家来说,EnterpriseDB还提供了一个简单的.zip存档,只不过是PostgreSQL的Windows二进制文件。

如果您想在Windows上运行PostgreSQL而不安装它或留下任何数据,有一个食谱,尽管有点复杂,可以从其.zipped存档分发版中运行PostgreSQL。这对于在软件安装受到限制的桌面上进行测试非常有用,或者您希望将PostgreSQL工作限制在非系统或可移动驱动器上进行测试。第三方项目PostgreSQL Portable为PortableApps应用程序启动器打包了PostgreSQL的独立版本。不幸的是,自第10版以来,它没有为任何较新版本的PostgreSQL进行过更新。

在Linux上安装PostgreSQL

Linux发行版在软件的安装和维护方式上差异很大,具有不同的软件包管理器、软件包格式和软件存储库理念。PostgreSQL不能免于这些差异,这可能是在您的平台上获取最新版本软件的障碍。

例如,Ubuntu在其APT存储库中维护PostgreSQL的一个版本。您通常可以使用命令apt install postgresql来安装PostgreSQL。如果Ubuntu存储库没有最新版本,您需要将apt.postgresql.org存储库添加到您的repo列表中,并从那里获取PostgreSQL。

Red Hat和Fedora Linux存储库都托管一个版本的PostgreSQL,尽管PostgreSQL的具体版本因发行版而异。Fedora的更新频率比Red Hat高,因此Red Hat的版本可能会滞后。安装最新版本的PostgreSQL for Red Hat或Fedora的最可靠方法是通过交互式下载页面或PostgreSQL的yum存储库直接从PostgreSQL下载安装工件。

Linux上每个主要版本的PostgreSQL的Docker容器映像都可以从Docker Hub获得。请注意,您需要为容器提供持久数据存储的位置;默认位置是/var/lib/postgresql/data。您可以通过编辑PGDATA环境变量来指向不同的位置。

Linux的另一个考虑因素是使用哪个文件系统来存储PostgreSQL数据。最近的基准显示,ext4/XFS总体上是不错的选择。尽管PostgreSQL常见问题引用了ZFS的委派管理和快照功能,但Ubuntu是当今唯一捆绑ZFS的主要Linux发行版;在其他Linux发行版中,您必须自行设置ZFS。

在macOS上安装PostgreSQL

Mac用户经常依赖Homebrew,这是一个适用于macOS的开源软件包管理器,它已成为从命令行在Mac上安装开源项目的实际方式。Homebrew允许您使用一个命令(brew install postgresql)安装PostgreSQL及其所有依赖项。您还可以使用Homebrew安装特定版本的PostgreSQL;例如,要安装PostgreSQL 12,请使用brew install postgresql@12。

在macOS上安装PostgreSQL的另一种方式是通过Postgres.app,Postgres.app是将PostgreSQL作为传统Mac应用程序的第三方重新包装。该网站为最新版本的PostgreSQL和所有主要PostgreSQL GUI客户端提供安装程序,如果需要,甚至可以自行更新。Postgres.app还为您执行一些自动预配置,例如初始化数据目录和用户数据库,并捆绑了许多常见工具,如pg_upgrade。

Windows上的PostgreSQL连接问题

在Windows上运行PostgreSQL时,需要记住的一大注意事项是PostgreSQL在给定时间可以保持打开的连接数量的文档限制——大约125个。此限制仅适用于作为服务运行的PostgreSQL,而不是从命令行调用。

根据PostgreSQL维基,这是因为一些PostgreSQL依赖项依赖于user32.dll,它从桌面堆中分配内存。由于堆具有固定大小,并且由于每个连接会耗尽一定数量的内存,因此可能会在超过125个连接时发生故障。

也就是说,在大多数使用场景中,连接限制不太可能成为问题,因为很少需要同时与PostgreSQL进行如此多的直接连接。设计良好的应用程序可以使用连接池来避免遇到连接限制。无论如何,连接池是您应该做的事情,以保持与数据库的连接数量与服务器上可用的硬件线程数量相称。

在Linux上配置PostgreSQL

如果您使用上述PostgreSQL的图形安装程序之一,特别是Windows,您将完成运行PostgreSQL安装的所有步骤。然而,使用Linux,在大多数情况下,您需要自己采取这些步骤。

在Fedora Linux上配置PostgreSQL

PostgreSQL包含在Fedora的默认存储库中,因此运行sudo dnf install postgresql-server postgresql-contrib将直接安装这些位。之后,您可能希望在启动时启用PostgreSQL启动:

sudo systemctl enable postgresql

您还需要手动运行PostgreSQL的设置脚本来创建初始数据库:

sudo postgresql-setup --initdb --unit postgresql

设置postgres系统密码;即PostgreSQL服务在以下下运行的帐户密码:

sudo passwd postgres

启动PostgreSQL服务器:

sudo systemctl start postgresql

然后设置postgres内部用户帐户的密码;即用于直接连接到PostgreSQL的帐户。运行psql命令行应用程序连接到PostgreSQL,并发出命令\password postgres(注意前导反斜杠)。

Fedora wiki中提供了许多关于在Fedora Linux上安装PostgreSQL的附加说明,但这些步骤应该足以进行基本设置。

在Ubuntu Linux上配置PostgreSQL

Ubuntu在其默认存储库中包含PostgreSQL,因此设置过程与Fedora相似,但更精简:

默认情况下,PostgreSQL只监听本地系统上的连接。要更改此行为,请编辑file /etc/postgresql/<version>/main/postgresql.conf,其中<version>是PostgreSQL的版本号。然后,在文件中,删除thelistenlisten_addresses参数前面的#,并将其值设置为'*'”。

接下来,设置用户帐户密码。为此,请运行命令sudo -u postgres psql template1连接到PostgreSQL并发出SQL命令:

ALTER USER postgres with encrypted password 'your_password';

安装基本软件包:

sudo apt updatesudo apt install postgresql

要对连接强制执行SHA-256身份验证,请编辑文件/etc/postgresql/*/main/pg_hba.conf。例如,如果我们想为数据库模板1强制执行SSL,用户postgres从给定的地址范围连接,我们将添加这样一行:

hostssl template1 postgres 192.168.122.1/24 scram-sha-256

将PostgreSQL服务设置为自动启动,然后重新启动以使更改生效:

sudo systemctl enable postgresql.service sudo systemctl restart postgresql.service

更改用户并连接到服务器进行测试:

sudo -i -u postgrespsql

请注意,这里不需要postgresql-setup步骤。安装过程包含所有必要的触发器。

在PostgreSQL版本之间迁移数据

您将采取的最后一步之一是将数据从PostgreSQL的任何旧实例移动到新实例。从第16版本中,PostgreSQL提供了在升级期间迁移数据的三种主要方法。

pg_upgrade实用程序是在PostrgreSQL版本之间迁移数据的首选方式。当您与旧版本并排安装新版本的PostgreSQL时,通常使用它。您从新安装中运行pg_upgrade,将其指向旧安装,并让它移动数据。pg_upgrade利用PostgreSQL数据格式的点修订之间的一致性来加快迁移过程,因此它不仅是最方便的迁移方式,而且通常是最快的。

执行迁移的另一种方法是使用PostgreSQL复制(例如Slony)。在这里,您可以使用新版本的PostgreSQL为运行旧版本的服务器创建一个备用服务器。这种方法导致最少的停机时间,因为复制发生在后台。复制完成后,您只需将所有连接从旧服务器重定向到新服务器。然而,如果您一开始就没有使用复制,这可能涉及跳过太多障碍。

pg_dumpall实用程序将PostgreSQL服务器的全部内容导出到一个或多个SQL转储文件。然后,生成的脚本或存档文件可以在新服务器上执行或导入到新服务器。也可以并排设置新旧服务器,并使用pg_dumpall在它们之间“管道”转储操作。使用pg_dumpall的最大缺点是它很慢,但它可以作为绝对的回退方法使用。

在Windows、macOS或Linux上安装pgAdmin 4

PostgreSQL的第三方管理工具pgAdmin 4为管理PostgreSQL安装提供了一个有用的Web GUI。

PGADMIN4工具提供了一个方便的基于WEB的界面,用于处理POSTGRESQL实例,包括运行查询。

PGADMIN.ORG网站

虽然它非常有用,但启动和运行该工具有点麻烦,因为它是用Python编写的,并且对该语言有很多依赖项。Windows和macOS用户可以从pgAdmin网站下载pgAdmin 4的二进制安装程序。对于Ubuntu,有一个APT软件包。Ask Ubuntu论坛上还有一个帖子,该帖子运行了安装pgAdmin 4、运行它以及创建启动脚本的便捷快捷方式所需的步骤。对于Fedora和Red Hat,有一个RPM软件包。如果您是Docker用户,您可以通过拉取和使用带有pgAdmin 4及其所有依赖项的Docker容器来避免大部分头痛。

0 阅读:0